java入门(九)——详解基本数据类型转换

一、理解基础

变量与字面量关系
在这里插入图片描述

  • 整数型数据(字面量)默认被当作int类型处理
  • 浮点型数据默认当作double类型处理

二、基本数据类型转换规则

2.1自动类型转换
  • 小容量数据类型自动转大容量

举例

  • long b =200;
  • 存在自动类型转换

分析:

  • 200这个字面量默认被当作int类型处理
  • 需要自动转换成long类型
2.2强制类型转换
  • 大容量需要强制转为小容量,中间有精度损失

举例

  • byte b =300
  • 编译错误:不兼容的类型: 从int转换到byte可能会有损失

如何解决?

  • 加强制转换:byte b = (byte)300

如何进行强制转换?

  • 自动将前面多余字节删掉
  • 如:byte b = (byte)300
  • int 型300二进制:00000000 00000000 00000001 00101100
  • byte占用1个字节,砍掉3个字节,结果:00101100
  • 此时损失精度
2.3char类型与整数型转换
  • 整数赋值给char类型变量,会自动转换为char字符型,结果是一个字符
char  x = 97;
System.out.println(x);//输出a

按照字符的ASCII码输出的是对应字符

2.4int型什么时候可以直接赋值byte、short、char

整数字面量没有超出byte、short、char的取值范围时,这个整数字面量可以直接赋值给这三种类型变量

byte b =1,不报错
byte b =300,报错,超出范围
2.5byte、short、char做运算时,先转化int再做运算
char c1='a';
byte b=1;
short s = c1+b;//编译报错

为什么报错?

  • 编译器先将c1+b转换为int类型,不知道加法结果(可能超出int)
  • 只知道int类型,所以报错
  • 可以加上强转 short s =(short)(c1+b)

三、总结

  1. 八种数据类型除boolean类型不能转换,其他都可以
  2. 整数字面量没有超出byte、short、char的取值范围时
    这个整数字面量可以直接赋值给这三种类型变量
  3. 自动类型转换:小容量自动转大容量
  4. 强制类型转换:大变小——加上强制类型转换符——(数据类型)
  5. byte、short、char做运算时,先转化int再做运算
  6. 多种数据类型混合运算时,最终结果类型是最大容量对应的类型
发布了228 篇原创文章 · 获赞 113 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/shang_0122/article/details/105207721
今日推荐