一、switch判断语句基本内容
1.switch后面使用的表达式可以是那些?
switch表达式后面的数据类型只能是(jdk 4):byte,short,char,int四种整形类型;
jdk 5:byte short int char enum(枚举)
jdk 7: byte short int char enum(枚举),String 六种类型
2.enum(枚举):一般枚举的格式是,枚举类.枚举类型,使用 switch 的要义在于,case 枚举类型,而不是 case 枚举类.枚举类型;总之枚举就是将你输入的字符串转换为一组数据存在相应的变量中。
3.String(字符串型):用equlas进行写入字符串内容,如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;equals 重写:值内容 , equals不重写:地址
所有没有重写equals()方法的类中,调用equals()方法其实和使用==的效果一样,也是比较的地址值,然而,Java提供的所有类中,绝大多数类都重写了equals()方法,equals方法进行了重写则是用来比较指向的对象所存储的内容是否相等。
4.switch中可有有null(空值)吗?
在switch语句中,表达式的值不能是null,否则会在运行时抛出NullPointerException。在case子句中也不能使用null,否则会出现编译错误。
5.case后的数值能重复吗?
case后的数值是不可以重复的,对于字符串类型的也一样,但是字符串中可以包含Unicode转义字符。重复值的检查是在Java编译器对Java源代码进行相关的词法转换之后才进行的。也就是说,有些case字句的值虽然在源代码中看起来是不同的,但是经词法转换之后是一样的,就会在成编译错误。比如:“男”和“\u7537”就是一个意思。
二、案例:
-
使用switch语句改写下列if语句:
int a = 3;
int x = 100;
if(a==1)
x+=5;
else if(a==2)
x+=10;
else if(a==3)
x+=16;
else
x+=34;
替换后的代码:
switch(a){
case 1:
x+=5;
break;
case 2:
x+=10;
break;
case 3:
x+=16;
break;
default:
x+=34;
}
完整代码:
public class lianxi_3_2{
public static void main(String[] args){
int a=3;
int x=100;
switch(a){
case 1:
x+=5;
break;
case 2:
x+=10;
break;
case 3:
x+=16;
break;
default:
x+=34;
}
System.out.println("x="+x);
}
}
运行结果:
二、使用 switch case 语句也有以下几点需要注意。
-
case 里面必须跟 break,不然程序会一个个 case 执行下去,直到最后一个 break 的 case 或者 default 出现。
-
case 条件里面只能是常量或者字面常量。
-
default 语句可有可无,最多只能有一个。