Java基础学习-基本数据类型之间的转换

2021-12-12 11:22:23 浏览数 (1)

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

原因:

我们想要的值为210210的二进制为11010010,第一位为符号位0是正,1是负,

总结:

=右侧:所有变量先转换为字节数量最多的数据类型,再计算

=两侧:左侧宽度>右侧宽度 自动转换

左侧宽度<右侧宽度 强制转换

特例:

可以将整形常量直接赋值给byteshort,char等类型变量,而不需要进行强制类型转换,只要不超出其表示范围

代码语言:javascript复制
                   short a = 12; //属于合法
                   short a = 1313312313; // 属于非法

0 人点赞