欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java语法+=常量和变量的运算

程序员文章站 2022-04-03 15:59:19
扩展知识点+= 符号的扩展常量和变量的运算+= 符号的扩展下面程序有问题吗?public static void main(String[] args){short s = 1;s+=1;System.out.println(s);}分析: s += 1 逻辑上看作是 s = s + 1. 计算结果被提升为int类型, 再向short类型赋值时发生错误, 因为不能将取值范围大的类型赋值到取值范围小的类型. 但是, s = s + 1进行两次运算, += 是一个运算符, 只运算一次,...

+= 符号的扩展

下面程序有问题吗?

public static void main(String[] args){
	short s = 1;
	s+=1;
	System.out.println(s);
}

分析: 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);
}

分析: b3 = 1 + 2 , 1 和 2 是常量, 为固定不变的数据, 在编译的时候 ( 编译器 javac ), 已经确定了 1 + 2 的结果并没有超过 byte 类型的取值范围, 可以赋值给变量 b3, 因此 b3 = 1 + 2 是正确的.

反之, b4 = b2 + b3, b2 和 b3 是变量, 变量的值是可能变化的, 在编译的时候, 编译器 javac不确定 b2 + b3 的结果是什么, 因此会将结果以int类型进行处理, 所以int类型不能赋值给byte 类型, 因此编译失败.

本文地址:https://blog.csdn.net/weixin_46274168/article/details/109893710