【Java】数据类型与变量(2)

简介: 【Java】数据类型与变量

4.类型转换

4.1 认识类型转换

类型转换:顾名思义就是将一个类型转换为另一个类型。


Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验



请.png

将把一个双精度类型的值赋给一个整型时程序将会直接报错。


去.png


将把一个双精度类型的值转换为整型,然后赋给一个整型时程序将通过。


这就是类型转换的功能,将把一个值赋值给一个不同的类型变量时,就需要类型转换。


类型转换可以分为:隐式类型转换 和 强制类型转换。


4.2 隐式类型转换

隐式类型转换又称为自动类型转换:数据范围小的转为数据范围大的时候,代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。


public class Test {
    public static void main(String[] args) {
        int a = 10;
        long b = 20;
        b = a;//自动类型转换
        System.out.println(b);
    }
}

当数据范围大的转为数据范围小的时候,编译器则不会自动处理,则会直接报错


为.png


当数据范围大的转为数据范围小的时候,我们则需要用到强制类型转换


4.3 强制类型转换

强制类型转换:当数据范围大的转为数据范围小的时候,编译器则不会自动处理,此时我们则需要自己去转换,由用户自己转换的就叫做强制类型转换。


public class Test {
    public static void main(String[] args) {
        int a = 10;
        long b = 20;
        a = (int) b;//强制类型转换
        System.out.println(a);
    }
}

不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型

如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失

将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查(比如:将一个小数赋给一个整型变量)

强制类型转换不一定能成功,不相干的类型不能互相转换(比如:将布尔类型强制转换为整型)

4.4 类型提升

类型提升:不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的


① 数据类型小的 与 数据类型大的进行运算

前.png


我.png



当一个 整型 和 长整型 进行运算时,整型会被提升为长整型然后进行运算。


上述代码中 a + b ---》int + long ---》long + long 赋值给 int 时会丢失数据,编译时会报错。




前.png

其.png

上述代码 a + b ---》int + long ---》long + long 赋值给 long,则编译成功。


② 低于4个字节的数据类型进行的运算



请.png

去.png


由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算。


上述代码中 a + b ---》short + short ---》int + int 赋值给 short 时会丢失数据,编译时会报错



q3.png

q2.png


上述代码 a + b ---》short + short ---》int + int 赋值给 int,则编译成功。


不同类型的数据混合运算, 范围小的会提升成范围大的

对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算

5.字符串类型

5.1认识字符串

字符串属于引用类型


public class Test {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "def";
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str1 + str2);
    }
}

q1.png


C语言中没有字符串类型,如果想在C语言中存储字符串只能运用数组。

在Java中使用 String 类定义字符串类型。

Java 中两个字符串相加就表示把两个字符串拼接起来

5.2 int 转换为 String

方法一:整型变量 + 双引号


public class Test {
    public static void main(String[] args) {
        int a = 1;
        String str = a + "";
        System.out.println(str);
    }
}

方法二:用 String 包装类


public class Test {
    public static void main(String[] args) {
        int a = 1;
        String str = String.valueOf(a);
        System.out.println(str);
    }
}

5.3 String 转换为 int

直接用 Integer 包装类


public class Test {
    public static void main(String[] args) {
        String str = "100";
        int a = Integer.parseInt(str);
        System.out.println(a);
    }
}


相关文章
|
2月前
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
33 2
|
16天前
|
存储 缓存 安全
Java中的数据类型
Java语言提供了八种基本类型,分为4类8种:六个数值型(四个整数型byte、short、int、long,两个浮点型float、double)、一个字符型char和一个布尔型boolean。每种基本类型有固定的位数、取值范围及默认值。此外,还存在`void`类型,但无法直接操作。基本类型支持隐式和显式类型转换,并有对应的包装类如`Integer`、`Double`等,用于在需要对象的场景中使用。包装类支持自动装箱与拆箱机制,简化了基本类型与引用类型的转换,但需要注意性能和空指针异常等问题。
Java中的数据类型
|
2月前
|
Java 编译器
Java重复定义变量详解
这段对话讨论了Java中变量作用域和重复定义的问题。学生提问为何不能重复定义变量导致编译错误,老师通过多个示例解释了编译器如何区分不同作用域内的变量,包括局部变量、成员变量和静态变量,并说明了使用`this`关键字和类名来区分变量的方法。最终,学生理解了编译器在逻辑层面检查变量定义的问题。
Java重复定义变量详解
|
2月前
|
Java
Java基础之数据类型
Java基础之数据类型
23 6
|
2月前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
64 7
|
2月前
|
Java 程序员 容器
Java中的变量和常量:数据的‘小盒子’和‘铁盒子’有啥不一样?
在Java中,变量是一个可以随时改变的数据容器,类似于一个可以反复打开的小盒子。定义变量时需指定数据类型和名称。例如:`int age = 25;` 表示定义一个整数类型的变量 `age`,初始值为25。 常量则是不可改变的数据容器,类似于一个锁死的铁盒子,定义时使用 `final` 关键字。例如:`final int MAX_SPEED = 120;` 表示定义一个名为 `MAX_SPEED` 的常量,值为120,且不能修改。 变量和常量的主要区别在于变量的数据可以随时修改,而常量的数据一旦确定就不能改变。常量主要用于防止意外修改、提高代码可读性和便于维护。
|
2月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
79 4
|
2月前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
43 1
|
3月前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
3月前
|
存储 Java 关系型数据库
[Java]“不同族”基本数据类型间只能“强转”吗?
本文探讨了不同位二进制表示范围的计算方法,重点分析了Java中int和char类型之间的转换规则,以及float与int类型之间的转换特性。通过具体示例说明了显式和隐式转换的条件和限制。
40 0
[Java]“不同族”基本数据类型间只能“强转”吗?