在这种情况下,为什么当我对 switch 表达式和 case 值使用不同的数据类型时没有编译错误

发布于 2025-01-18 20:11:38 字数 338 浏览 0 评论 0原文

public class Conditionsif {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int day=1;
        switch(day){
        case '1':
            System.out.println("Monday");
            break;
        
        }
        
    }

}

尽管开关表达式是整数数据类型,并且案例值是字符,但上面没有编译错误

public class Conditionsif {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int day=1;
        switch(day){
        case '1':
            System.out.println("Monday");
            break;
        
        }
        
    }

}

There is no compilation error in above though switch expression is integer data type and case value is character

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别闹i 2025-01-25 20:11:38

这是因为隐式转换
a 的 ascii 值为 97

 switch(97){
           case 'a': System.out.println("a"); break;
           case 'b': System.out.println("b"); break;
           case 'c': System.out.println("c"); break;
 }

Its because of implicit casting
ascii value of a is 97

 switch(97){
           case 'a': System.out.println("a"); break;
           case 'b': System.out.println("b"); break;
           case 'c': System.out.println("c"); break;
 }
素食主义者 2025-01-25 20:11:38

当您使用“”时,这意味着您使用 char 数据类型。
炭数据类型仅接受一个字符,
例如 :
char x ='h';

并接受该字符的ASCII代码
例如 :
char x = 104;

因此,案例“ 1”平均比较变量日,值等于值1。

如果修改代码如下,则该代码将打印Monaday。

    int day=97;
    switch(day){
    case 'a':
        System.out.println("Monday");
        break;
    }

此致。

When you use ' ', this means you use char data type.
char data type accept one character only ,
for example :
char x = 'h';

And also accept the Ascii code for the character
for example :
char x = 104;

So case '1' mean compare variable day with value equal to value 1.

if you modify code as following , this code will print Monaday.

    int day=97;
    switch(day){
    case 'a':
        System.out.println("Monday");
        break;
    }

Best Regards.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文