为什么在这种情况下,当我对 switch 表达式和 case 值使用不同的数据类型时没有编译错误
Why there is no compilation error when I am using different data types for switch expression and case value in this case
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;
}
}
}
虽然switch表达式是整数数据类型,case值为字符,但上面没有编译错误
这是因为隐式转换
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;
}
当您使用 ' ' 时,这意味着您使用 char 数据类型。
char 数据类型只接受一个字符,
例如 :
字符 x = 'h';
同时接受字符的 Ascii 码
例如 :
字符 x = 104;
所以 case '1' 表示比较变量 day 的值等于值 1。
如果您修改如下代码,此代码将打印星期一。
int day=97;
switch(day){
case 'a':
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;
}
}
}
虽然switch表达式是整数数据类型,case值为字符,但上面没有编译错误
这是因为隐式转换 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;
}
当您使用 ' ' 时,这意味着您使用 char 数据类型。 char 数据类型只接受一个字符, 例如 : 字符 x = 'h';
同时接受字符的 Ascii 码 例如 : 字符 x = 104;
所以 case '1' 表示比较变量 day 的值等于值 1。
如果您修改如下代码,此代码将打印星期一。
int day=97;
switch(day){
case 'a':
System.out.println("Monday");
break;
}
此致。