Java基础 第一节 第十课
【摘要】
扩展知识点
+= 符号的扩展常量和变量的运算
+= 符号的扩展
下面程序有问题吗?
public static void main(String[] args){
short s = ...
+= 符号的扩展
下面程序有问题吗?
public static void main(String[] args){
short s = 1;
s+=1;
System.out.println(s);
}
- 1
- 2
- 3
- 4
- 5
分析: s += 1 逻辑上看作是 s = s + 1. 计算结果被提升为int类型, 再向short类型赋值时发生错误, 因为不能将取值范围大的类型赋值到取值范围小的类型. 但是, s = s + 1进行两次运算, += 是一个运算符, 只运算一次, 并带有强制转换的特点. 也就是说 s += 1 就是 s = (short)(s + 1), 因此程序没有问题编译通过, 运行结果是 2.
常量和变量的运算
下面的程序有问题吗?
public static void main(String[] args){
byte b1=1;
byte b2=2;
byte b3=1 + 2;
byte b4=b1 + b2;
System.out.println(b3);
System.out.println(b4);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
分析: b3 = 1 + 2 , 1 和 2 是常量, 为固定不变的数据, 在编译的时候 ( 编译器 javac ), 已经确定了 1 + 2 的结果并没有超过 byte 类型的取值范围, 可以赋值给变量 b3, 因此 b3 = 1 + 2 是正确的.
反之, b4 = b2 + b3, b2 和 b3 是变量, 变量的值是可能变化的, 在编译的时候, 编译器 javac不确定 b2 + b3 的结果是什么, 因此会将结果以int类型进行处理, 所以int类型不能赋值给byte 类型, 因此编译失败.
文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/109893710
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)