Java 具有字节数据类型的开关盒
字节的范围是-128到127。但在下面的代码中,它超出了字节范围,代码的输出是“谢谢” 类求解{Java 具有字节数据类型的开关盒,java,Java,字节的范围是-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:Sys
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;
}
}
}
默认情况下,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;
}
}
}
因为您正在打开一个int,而不是一个字节。因为您正在打开一个int,而不是一个字节。有两个原因:
118
文本是一个int
,添加一个字节和int
会得到int
,而不是字节
(在Java中,所有没有
或后缀的数字文本都是int
)break
语句,所以无论最后打开的值是多少,您都会看到“Thank u”输出,因为case
语句是从第一个匹配的语句开始按顺序运行的byte
s,你最终还是会走上“谢谢你”的路线:
输出:
Thank u
true
输出:
Thank u
true
正确有两个原因:
118
文本是一个int
,添加一个字节和int
会得到int
,而不是字节
(在Java中,所有没有
或后缀的数字文本都是int
)break
语句,所以无论最后打开的值是多少,您都会看到“Thank u”输出,因为case
语句是从第一个匹配的语句开始按顺序运行的byte
s,你最终还是会走上“谢谢你”的路线:
输出:
Thank u
true
输出:
Thank u
true
符合事实的