Java基础 -- 变量相加和常量相加的区别

题目:判断下面一段代码有没有问题

public class HelloWorld {

	public static void main(String[] args) {
		byte b1 = 3;
		byte b2 = 4;
		
		byte b3 = b1 + b2;
		
		System.out.println(b3);
	}

}

  1、byte 与 byte(或short、char)类型进行运算时会自动转换为int类型,两个int类型相加之后也是int类型,需强制转换为byte类型;

  2、另外,b1和b2是变量,在编译的时候无法判断里面具体的值,可能会造成相加后的值超过byte类型的取值范围。

 

byte b4 = 3 + 4;
System.out.println(b4);

  常量在赋值时,Java编译器有常量优化机制,会先进行相加再判断是否超过byte类型的取值范围,如果不超过就转换为byte类型。

posted @ 2018-07-02 21:28  agmj  阅读(1080)  评论(0)    收藏  举报