第六课 基本数据类型之间的转换

1 自动类型转换

1.1 什么是自动类型转换

  • 容量小的数据类型可以自动转换为容量大的数据类型

注:容量的意思是该基本数据类型的表示范围的大小(参照第五课的基本数据类型表示范围)

1.2 基本类型之间的自动类型转换

基本数据类型自动转化图

  • 图中,黑色实线表示无数据丢失的自动类型转换;红色虚线表示可能存在精度损失的类型转换。
  • 特例:可以将整型常量直接赋值给byteshortchar等类型变量,而不需要进行强制类型转换,只要不超过表示范围。

2 强制类型转换

  • 基本语法
byte a = 100;
int b = (int)a;
  • 当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值。
int x = 300;
byte bx = (byte)x; // 此时,bx的值需要根据内存进行分析,而不是300

3 运算时类型提升

  • 做所有的二元运算过程中,都伴随着类型提升问题
  • 运算过程中的类型提升,需要先进行类型的转换后再进行运算

测试代码如下:

int a = 1000000000;
int b = 20;

System.out.println((long)a * b); // 此时a提升为long类型,整个表达式就提升了
System.out.println((long)(a * b)); // 此时a*b的整体被提升到long型

运行结果如下:

20000000000
-1474836480

注:当出现以下情况时,最好在表达式开始之初就将类型进行提升(如long_1所示),而不是在结尾处进行类型提升(如long_2所示),防止前半部分计算时已经发生溢出的现象

long_1 = 70L * 60 * 24 * 365;
long_2 = 70 * 60 * 24 * 365L;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值