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: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/

相关文章:

java - struts 2基础应用了解

java - Derby 和 SQL 请求问题 : how is the default schema determined?

java - 如何测试依赖于另一个已经测试过的方法的方法?

java - 如何使用 Streams 和 Lambda Java8 将 List<Object[]> 转换为 Map<String,BigInteger>

java - Mybatis生成器xml配置。设置表之间的连接

java - 液体碱 'validation only mode'

Java 无法识别直线方程程序中的字符串 "-1"。查看 "equation"操作命令

java - 从java读取xml文件

java - 通过在自定义 View 的 onDraw 中设置单位矩阵来抵消 Canvas

java - 阻止 Eclipse 删除 "target"内的文件夹