用byte数据类型切换case

BON*_*TIF 1 java

字节范围是-128到127.但是在下面的代码中,它超出了字节范围,代码的输出是"谢谢".

class Solve {

    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");

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Kev*_*man 5

默认情况下,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;

        }

    }
}
Run Code Online (Sandbox Code Playgroud)