【Java】类型转换与类型提升
目录
1.类型转换
1.1自动类型转换(隐式)
1.2强制类型转化(显式)
2.类型提升
3.字符串类型
1.类型转换
Java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有教严格的校验.
在Java中,当参与运算数据类型不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换(隐式)和强制类型转换(显式)。
1.1自动类型转换(隐式)
自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。特点:数据范围小的转为数据范围大的时会自动进行。
1.2强制类型转化(显式)
强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。
//示例
long a=10;
int b=(int)a;//long->int需要强制转换
注意事项:
1.不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型
2.如果需要把范围大的类型赋值给范围小的,需要强制类型转换,但是可能精度丢失
3.将一个字面值常量进行赋值的时候, Java会自动针对数字范围进行检查
4.强制类型转换不- -定能成功,不相干的类型不能互相转换
2.类型提升
不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
1. int与long之间: int会被提升为long
2.byte与byte的运算
结论 : byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算
正确的写法:
【 类型提升小结 : 】
1. 不同类型的数据混合运算 , 范围小的会提升成范围大的 .
2. 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算 .
3.字符串类型
在 Java 中使用 String 类定义字符串类型,比如:
在有些情况下,需要将字符串和整形数字之间进行转换:
1. int 转成 String
2. String 转成 int