6short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?-Java面试题答案

Posted helenwq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?-Java面试题答案相关的知识,希望对你有一定的参考价值。

先说一下Java的基本数据类型转换规则,大的数据类型转换为小的数据类型需要强制转换,反之可以自动转换。

赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。

第一题:short s1 = 1; s1 = s1 + 1;

错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换。正确写法:s1 = (short) (s1 + 1);

第二题:short s1 = 1; s1 += 1;

正确! 执行s1+=1;其实执行的是s1 = (short) (s1 + 1); 其中会有一个强制转换的过程。

第三题:short s1=1,s2=1;short s3=s1+s2;

错误!这里是编译器从数据安全方面考虑,如果s1和s2都是较大的short类型数,可能会导致溢出,所以会要求强制转换到int。正确写法:short s3 = (int)s1 + s2;

以上是关于6short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?-Java面试题答案的主要内容,如果未能解决你的问题,请参考以下文章

场景应用:short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?

场景应用:short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?

short s1 = 1; s1 = s1 + 1;和 s1 += 1;

short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确

short s1 = 1; s1 = s1 + 1;有错而short s1 = 1; s1 += 1正确。为何?

通过系列 s1 索引系列 s2 并保持 s1 索引