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则没有错误..请解释
答案 0 :(得分:1)
byte
只能保存-128到+127之间的值。如果您的int
包含5000,那么这将是一个问题。明确地投射到(byte)
就是这样,用Java来说,“我知道我在做什么,不要再烦我了。”
现在,它与b2=y
一起工作的原因是因为它在编译时知道y=100
,因此这个操作是安全的。它对x
和z
没有这样的保证。
答案 1 :(得分:0)
如果您将任何变量设为final,则无法更改其值 最终变量(它将是常数)。
z
是final
,因此它是常量。但是,它没有在声明时初始化。稍后会为其分配一个值,但它不重要。然后,您将z
分配给b3
并将其打印出来,但z
为final
,并且仅在声明后为其分配值。由于不清楚应该打印什么,因此会出错。试试
final int z = 100;
代替。