必须是常量,因为进入switch语句后 是要去把条件和常量去比较的,所以只能是常量,不能是变量
switch (s.hashcode()) { case i :System.out.println("bad"); }//这种方法是不支持的。编译根本通过不了,因为 i 是一个变量 经过网上一翻查找,在jdk1.7中可能会支持这个功能。 但是问题就不能这么简单的解决,因为现在很多企业都没有在使用1.7的版本。 没事在电脑面前想出来一个办法,应该可以行得通在jdk...
final关键字表示该变量一旦初始化后就不能再改变其值。比如定义一个常量:public final static int a = 10; 此时a的值固定为10,不能被重新赋值。由此可以推断,既然final变量的值是固定的,那么在switch语句中使用这种变量作为case判断依据是没有必要的,因为无论怎样,其值始终不变。switch语句主要用...
是因为我们在一个变量作用域里声明了两个同名变量“test”。 第二种情况常见的场景为 switch (type) { case 1: String test; test = "my error"; ... break; case 2: System.out.print(test); ... break; } 是因为虽然声明变量test的位置和使用变量test的位置在同一个变量作用域,但是当type为2时,...
原来只是加不加括号的区别。 因为C++中变量的作用域是相邻的两个大括号,假设下面的例子: int nChoose; switch(nChoose) { case 1: int i = 1; break; case 2: break; default: break; } i的作用域是switch的两个大括号,这样如果nChoose的值是2的话,就会跳过i的声明 定义语句,出错是必然的。
switch(A),括号中A的取值只能是整型或者可以转换为整型的数值类型,比如byte、short、int、char、还有枚举;需要强调的是:long和String类型是不能作用在switch语句上的。注意的是在JDK1.7之后,switch(A),括号中A的取值也支持String了。 语法case B:C,case是常量表达式,也就是说B的取值只能是常量(需要定义一个final...
上面的定义是有问题的,会提示res的重复定义,所以switch当中的多个case语句实际上命名空间是一样的。 所以上面应该定义为: 1 int res=0; 2 switch(c){ 3 case '+': 4 int res =d1+d2; 5 data.push(res); 6 break; 7 case '-': 8 res = d2-d1; 9 data.push(res); 10 break; 11 case...
1、Switch-case语句格式 2、注意事项 switch(A),括号中A的取值只能是整型或者可以转换为整型的数值类型,比如byte、short、int、char、还有枚举;需要强调的是:long和String类型是不能作用在switch语句上的。 case B:C;case是常量表达式,也就是说B的取值只能是常量(需要定义一个final型的常量,后面会详细介绍原因)或...
final关键字是意思就是这个变量是定了就不能再做更改了。而且初始化的时候必须要给值。比如:public final static int a = 10; 那么a的值只能为10,不能再被赋其他值了。理解到这个关键字了我想你能理解为什么了。既然已经定了。那么没必要再用switch来检测它到底是什么值了。
值匹配:case标签的值必须是常量或字面量,并且在编译时期就能确定。这意味着你不能使用变量或方法返回值作为case标签的值。此外,每个case标签的值必须在同一个switch语句中是唯一的。 执行流程:当switch表达式的值与某个case标签的值相等时,程序会从该case标签处开始执行,直到遇到break语句或者switch语句结束。如果没有...