java 实体类属性隐藏 java隐式类型和显示类型
转载
- 在JAVA中,基本类型(除了boolean外)可以自动转换
- 转换形式为:(byte,short,char) --> int --> long --> float --> double 这就是自动转换的顺序
- byte,short,char类型的数据在运算时是自动转换为int类型进行运算
- int,long,float,double类型的数据在运算时会自动将精度低的精度高的数据类型
- 也就是说,表述范围小的可以自动转换为表述范围大的,(表述范围不是指类型的大小)其次,如果你要得到某一类型的数值时,也可以通过强制转换来实现。
- 隐式类型转换:当由低向高转换时,java会自动使用隐式类型转换(如int型转为long型)
- 显式类型转换:当由高向低转换时,java不会自动转换,必须使用显式类型转换,即手动强转(如double型转为float型)
- 当变量a与变量b数据类型一致时,当数据类型是int类型以上时(参考上面第2点),两种写法都可以
public static void main(String[] args) {
int a = 1;
int b = 2;
a = a + b;
System.out.println("a:"+a);
a = 1;
a += b;
System.out.println("a:"+a);
}
输出:
a:3
a:3
注:如果a,b都是short类型,或者byte类型,则a = a + b;也是不通过编译的,需要手动强转,参考上面第3、7点
- a是int类型,b是short类型(a类型范围比b类型大),两种写法都可以
public static void main(String[] args) {
int a = 1;
short b = 2;
a = a + b;
System.out.println("a:"+a);
a = 1;
a += b;
System.out.println("a:"+a);
}
输出:
a:3
a:3
- a是short类型,b是int类型(a类型范围比b类型小)
public static void main(String[] args) {
short a = 1;
int b = 2;
// a = a + b;
// System.out.println("a:"+a);
a = 1;
a += b;
System.out.println("a:"+a);
}
输出:
a:3
// a = a + b;这种写法编译器就不通过,编译器无法编译
// 因为a是short类型,而(a + b)在运算时会自动把a转成int类型然后在运算,得到的结果就是int类型的数据
// 此时无法直接将int类型的数据直接赋值给short类型变量,需要手动强制类型转换,a = (short)(a + b);
// a += b;这种写法在编译时编译器会自动帮我们进行了强制类型转换,所以可以正常编译
- 总结:a = a + b;这种写法需要注意类型转换问题,而 a += b;这种写法编译器会自动帮我们进行类型强制转换
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。