字节的范围是-128到127。但是在下面的代码中它超出了字节范围并且代码的输出是“谢谢”。
类解决{
public static void main(String args[]) {
byte by=10;
switch(by+118) {//here it go beyond the byte range.
default:System.out.println("Sunday");
case 0:System.out.println("Monday");
case 128:System.out.println("Thank u");
}
}
}
最佳答案
默认情况下,118(称为文字)是一个 int。
当您将 118(它是一个 int)添加到您的字节时,结果存储在一个 int 中。这意味着您的 switch 语句包含一个 int。
所有其他文字(0 和 128)也是整数。
请注意,如果您将结果保存在一个字节变量中,您会遇到溢出,并且该值会回绕。试试这段代码,它已经被清理以包含必要的 break 语句:
public class Test{
public static void main(String args[]){
byte by=10;
byte result = (byte) (by + 118);
System.out.println("Result: " + result);
switch(result){
default:
System.out.println("default");
break;
case 0:
System.out.println("0");
break;
case -128:
System.out.println("-128");
break;
}
}
}
关于java - 带字节数据类型的开关盒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24245708/