Java语言还是至关重要,熟悉Java语言对测试帮助非常大,以前也断断续续学习了一段时间,因为一些原因后来还是以python为主,Java就暂且搁置了,最近打算重新开头学习一遍。从Javase基础语法到面向对象最后在多线程、网络编程、框架等,大概这么一个学习路线。
第一节从基本数据类型转换开始,直接开始吧:
- 在赋值运算或算术运算时,要求数据类型相同,否则要进行类型转换
- 除Boolean类型外,所有的基本数据类型因为各自的精度不同,赋值时都要考虑这个问题
- 除Boolean类型外,所有的基本数据类型包括:整型,浮点型,字符型
转换方式:
自动转换(隐形转换)
注意:
1、在进行算术运算操作的时候,必须要求数据类型一致,否则无法操作
2、在运算过程中,如果两个值的类型不一致,会自动将小的类型转换为大的类型
代码语言:javascript复制 byte b = 10;
int a = 20;
int c;
c = a b;
强制转换
注意:
1、在运算过程中可以手动强制转换,将大的类型转换为小的类型
实现方式(datatype)
代码语言:javascript复制 byte b = 10;
int a = 20;
byte c;
c = (byte)(a b);
输出值为30
2、强制转换时,当心丢失数据或失真
当将一种数据类型强制转换为另一种类型,而又超出了目标数据类型的表示范围,就会被截断为一个完全不同的值
3、强制转换,会发生精度损失,结果可能不准确
代码语言:javascript复制 byte b = 10;
int a = 200;
byte c;
c = (byte)(a b);
输出值为-46
原因:
我们想要的值为210
,210
的二进制为11010010
,第一位为符号位0
是正,1
是负,
总结:
=右侧:所有变量先转换为字节数量最多的数据类型,再计算
=两侧:左侧宽度>右侧宽度 自动转换
左侧宽度<右侧宽度 强制转换
特例:
可以将整形常量直接赋值给byte
,short
,char
等类型变量,而不需要进行强制类型转换,只要不超出其表示范围
short a = 12; //属于合法
short a = 1313312313; // 属于非法