JAVA基本类型转换(第2节)

基本类型转换有一下要点:

  1. 多个类型参与运算时,整型、浮点型、字符型都可以参与运算,唯独布尔类型不能参与运算
  2. 在类型转换时,涉及到类型级别,详细如下:级别从低到高:byte,short,char-->int-->long-->float-->double
  3. 类型级别的作用:当一个表达式中存在多个类型时,都自动转换为表达式中级别最高的那个类型进行计算
  4. 在进行赋值运算的时候:类型级别也有用处,详细如下:
  5. 如左边类型级别=右边类型级别,则直接赋值
  6. 如左边类型级别>右边类型级别,则直接自动转换
  7. 如左边类型级别<右边类型级别,则需要做强制类型转换
  8. 强制类型转换是数据"失真“,举例如下”

 

double d1 = 6;
System.out.println(d1);// 6.0
int i1 = (int) 3.14;
System.out.println(i1);// 3
// double d2 = 3+3.14F+3.14159+'a'+true;// 报错
double d3 = 30+3.14F+3.14159+'a';// 左边类型级别=右边类型级别,则直接赋值
int i2 = (int) (30+3.14F+3.14159+'a');// 左边类型级别<右边类型级别,则需要做强制类型转换
float f1 = 30+3.14F+'a';// 左边类型级别=右边类型级别,则直接赋值
double d4 = 30+3.14F+'a';// 左边类型级别=右边类型级别,则直接赋值
System.out.println(30+3.14F+3.14159+'a');// 133.28158938964845
System.out.println(d3);// 133.28158938964845
System.out.println(i2);// 133

System.out.println(30+3.14F+'a');//130.14
System.out.println(f1);// 130.14
System.out.println(d4);// 130.13999938964844

//强制类型转换是数据失真
byte b1 = (byte) 258;
System.out.println(b1);// 2
// 解答:十进制258放在内存中存储情况如下,(258为整型,没指定类型,默认为int类型,占4个字节,一个字节8个内存位)
// 00000000 00000000 00000001 00000010
// 强转为byte类型后,内存分布如下:(byte类型占1个字节,直接砍掉左侧三个字节)
// 00000010
// 00000010转换为十进制为数字2

 

posted @ 2021-12-22 19:21  风铃如沧海  阅读(36)  评论(0编辑  收藏  举报