当我单独打印b1和b3时出现错误..但是如果我单独打印b2则没有错误..Pls Explaine

时间:2016-11-20 12:40:15

标签: java byte

class Example{
public static void main(String args[]){
int x=100;
final int y=100;
final int z;
z=100;

byte b1,b2,b3;
b1=x;
b2=y;
b3=z;

System.out.println(b1); 
}

} 当我分别打印b1和b3时出现错误..但如果我单独打印b2则没有错误..请解释

2 个答案:

答案 0 :(得分:1)

byte只能保存-128到+127之间的值。如果您的int包含5000,那么这将是一个问题。明确地投射到(byte)就是这样,用Java来说,“我知道我在做什么,不要再烦我了。”

现在,它与b2=y一起工作的原因是因为它在编译时知道y=100,因此这个操作是安全的。它对xz没有这样的保证。

答案 1 :(得分:0)

  

如果您将任何变量设为final,则无法更改其值   最终变量(它将是常数)。

Source

zfinal,因此它是常量。但是,它没有在声明时初始化。稍后会为其分配一个值,但它不重要。然后,您将z分配给b3并将其打印出来,但zfinal,并且仅在声明后为其分配值。由于不清楚应该打印什么,因此会出错。试试

final int z = 100;

代替。