这两行代码的执行结果是不同的。 第一行代码 `short s1 = 1; s1 = s1 + 1;` 会报编译错误,因为 `s1 + 1` 这个表达式中,`1` 的数据类型是 `int`,而 `s1` 的数据类型是 `short`,因此编译器无法进行隐式类型转换…
1、short s1 = 1; s1 = s1+1;能正常运行吗? short s1 = 1; s1 += 1;呢? 从上图可以看出,Java编译器已经给出“s1 = s1+1;”代码的错误提示“Type mismatch: cannot convert from int to short”,即“数据类型错误:不能从int数据类型转换到short数据类型”。 类型不匹配说明问题的根源在哪里?回到出...
1.高位转低位需要强制转换 2.低位转高位自动转. ] short s1 = 1; s1 = s1 + 1;有什么错? 答: i 是int 型 s1 short型 通过 + 运算后s1 自动转为int 型 所以错! short s1 = 1; s1 += 1;有什么错? 答: 如果你认为表达式(x += i)只是表达式(x = x + i)的简写方式,这并不准确。 这两...
由一下实验可知: publicclasstest {publicstaticvoidmain(String[] args) {shorts1 = 1; s1+=1;//获取1的数据类型并打印 class java.lang.IntegerSystem.out.println(getType(1));//获取s1的数据类型并打印 class java.lang.ShortSystem.out.println(getType(s1)); }publicstaticString getType(Object o){/...
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。如果你认为表达式(x += i)只是表达式(x = x + i)的简写方式,这并不准确。这两个表达式都被称为赋值表达式。第二个表达式...
当然有错误,short占2个字节,int占4个字节,short型变量+上int型值计算结果是int型,占4个字节,然后付给一个short型变量s1,就要丢失2个字节的精度,这是不容许的。你非要这么做的话,我给你提供一个办法:s1=s1+1;改成s1+=1;虽然是一个意思,但是在jvm里面是不同的方法做的,是运算符...
[a.高位转低位需要强制转换 b.低位转高位自动转.]2、short s1 = 1; s1 = s1 + 1;中,1 是int 型 s1 short型 通过 + 运算后s1 自动转为int 型 所以错!3、后面一句没有错是因为Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),而(s1 ...
壹:shorts1=1;s1=s1+1; 贰:shorts1=1;s1+=1; 壹编译报错,因为壹中由于1是int类型,所以s1+1运算结果也是int型,需要强制转换类型才能赋值给short型。 贰正确,因为s1+=1相当于s1= (short)(s1+1),其中会有隐含的强制类型转换。 中软-周测解答一 ...
shorts1=1;s1=s1+1;有错吗Java面试 Java架构 参考答案 是错误的。正确写法:s1= (short) (s1+1)。 题目解析: s1+1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,需要通过强制类型转换。 参考Java的基本数据类型转换规则,大的数据类型转换为小...
int 型, 然后重新把计算结果赋给 short 型的变量时,没有强制声明值为 short的型的,所以会出错。 应该更改为: short s1 = 1; s1 = (short)s1 + 1; 而第二个语句块,s1 += 1; 不会出错,因为“+=”是赋值运算符,不牵涉与其它类型的数字计算,也不会转成 int 类型的,所以没错。