1.++ / – 中的细节
前提:int a = 10;
需求:变量 a 加 1 的方式有几种?区别?
int a = 10;
// 需求:让 a + 1 的方式有几种?又有什么区别?
// 方式一:
//a = a + 1 ;
// System.out.println("a :" + a ); // 11
// 方式二
//a++;
++a;
System.out.println("a :" + a ); // 11
通过上述代码发现实现变量 + 1 的操作有 2 种,那有什么区别呢?
// 实现让 a 加 1 的操作有 2 种,那有什么区别呢?
// 此时,把数据类型定义为short
// 方式一
short a = 10;
// a = a + 1 ; // 编译不通过,因为 a + 1 自动提升为 int 类型,将int 赋值给 short类型,损失精度,应该强转
a = (short)(a + 1);
System.out.println("a :" + a ); // 11
// 方式二
a++;
System.out.println("a :" + a ); // 11
//此时就看出区别了:
// 1. 自增 / 自减 不会改变变量本身的数据类型
// 2. 自增 / 自减 效率高于 + 1 的操作(因为int类型的数据是 4 个字节,short类型的数据是 2 个字节,最后强转为 int,需要截取掉 2 个字节)
区别是:
- 自增 / 自减 不会改变变量本身的数据类型
- 自增 / 自减 效率高于 + 1 的操作(因为int类型的数据是 4 个字节,short类型的数据是 2 个字节,最后强转为 int,需要截取掉 2 个字节)