Java编程思想学习笔记
1. 赋值时的类型转换
- 当对基本数据类型执行算数运算或者按位运算时,类型比int小(char、byte或short)的类型,在运算之前,这些值会自动地转换为int类型(提升)。这样一来最终生成的结果就是int类型。
例:
short s = 1;
s = s + 1;
--------------------------------
错误信息:
错误:(20, 15) java: 不兼容的类型: 从int转换到short可能会有损失
可见,计算后的 s + 1 已经转换成了int类型。同样的,一个int和一个long运算,结果为long类型,一个float和一个double运算,结果是double类型。
- 对于char、byte或short来说,当进行复合赋值时,不需要进行类型转换。虽然他们也执行类型提升,但能得出与直接算数运算相同的结果。
short s = 1;
s += 1;
--------------------------------
编译通过
PS:
- 复合赋值操作符有:+=、-=、*=、/=、%=、 <<=、 >>=、 >>>=、&=、 ^=和| =
- 简单赋值操作符为=
2. 字符串操作符 = 和 +=
- 如果一个表达式以字符串起头,则后续所有操作数都必须是字符串(编译器会把非字符串的操作数全部转换成它们的字符串形式)
例:
int x = 0, y = 1, z = 2;
System.out.println(x + y + z); //不以字符串起头的情况
System.out.println("" + x + y + z); //以字符串起头的情况
--------------------------------
输出:
3
012
其中,以""开头的方式来替代更为麻烦的显示方法(本例中为Integer.toString())来执行字符串转换。
int x = 0, y = 1, z = 2;
System.out.println(x + y + z);
System.out.println(Integer.toString(x) + Integer.toString(y) + Integer.toString(z));
--------------------------------
输出:
3
012
- 可以通过括号来控制表达式的赋值方式,使得变量能在转换成字符串类型前执行别的操作
int x = 0, y = 1, z = 2;
System.out.println("" + x + y + z);
System.out.println("" + (x + y + z));
--------------------------------
输出:
012
3