java中的扩展运算符为+=、-=、/=、%=、*=
当使用扩展运算符时,变量在参与赋值运算时会把结果自动强制转换为当前变量的类型,比如:
public class Test{
public static void main(String[] args) {
short a = 1;
//此时的a是short类型
a += 1;
System.out.println(getType(a));
}
public static String getType(Object obj) {
return obj.getClass().getName();
}
}
输出:java.lang.Short
如果是正常的进行赋值的话,则需要进行强制转换:
public class Test{
public static void main(String[] args) {
short a = 1;
//此时的a是short类型
a = (short)(a + 1);
System.out.println(getType(a));
}
public static String getType(Object obj) {
return obj.getClass().getName();
}
}
输出:java.lang.Short
思考以下代码的输出是什么?
public class Test{
public static void main(String[] args) {
int a = 1;
a*= 0.1;
System.out.println(a);
int b = a++;
System.out.println(a);
}
}
分析:由于扩展运算符会将运算后的结果进行强制转换成原来变量的类型,所以a*=0.1中a的类型还是int,正好与后面声明的int b相对应,所以此时a=0。而int b = a++;a++是先赋值后运算,所以b的值是0,a的值变为1。
所以最后输出为:
0
1
0
标签:short,java,String,int,扩展,运算符,static,public
来源: https://www.cnblogs.com/xiximayou/p/12036044.html