导航:首页 > 编程语言 > switchjavastring

switchjavastring

发布时间:2024-06-20 14:00:33

java switch(表达式)中表达式的类型都可以是哪些类型

java中的switch选择结构可以使用数据类型的数据:

1, int

2,char

3,byte

4,short

5,枚举

6, String:PS:对JDK版本有要求,必须为1.7及以上版本

代码示例:

public class Test_char {

public static void main(String[] args) {

char c = '二';

switch(c){

case '一':

System.out.println("1.char类型");

break;

case '二':

System.out.println("2.char类型");

break;

}

}

}

(1)switchjavastring扩展阅读

switch表达式代码:

#include<stdio.h>

int main()

{

double score;printf("请输入分数: ");

scanf("%lf",&score);switch((int)(score/10)) //switch((int)score/10)出现严重错误

{

case 10:

case 9:printf("A(最好) ");break;

case 8:printf("B(优秀) ");break;

case 7:printf("C(良好) ");break;

case 6:printf("D(及格) ");break;

case 5:

case 4:

case 3:

case 2:

case 1:

case 0:printf("E(不及格) ");break;

default:printf("Error! ");

}

}

参考资料:网络 switch (计算机语言关键字)

⑵ 前的Java的switch语句能判断String 类型吗

在Java7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型。在Java7中,呼吁很久的String支持也终于被加上了。

例如,下面是一段switch中使用String的示例代码。

public class Test {

public void test(String str) {
switch(str) {
case "abc":
System.out.println("abc");
break;
case "def":
System.out.println("def");
break;
default:
System.out.println("default");
}
}

}

在switch语句中,String的比较用的是String.equals,因此大家可以放心的使用。
需要注意的是,传给switch的String变量不能为null,同时switch的case子句中使用的字符串也不能为null。
为什么要有这些非null的限制呢?其实,我们只要将这段代码反汇编出来,看一下底层到底是如何实现的,就可以明白了。下面是汇编出来的代码。

Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."":()V
4: return

public void test(java.lang.String);
Code:
0: aload_1
1: astore_2
2: iconst_m1
3: istore_3
4: aload_2
5: invokevirtual #2; //Method java/lang/String.hashCode:()I
8: lookupswitch{ //2
96354: 36;
99333: 50;
default: 61 }
36: aload_2
37: ldc #3; //String abc
39: invokevirtual #4; //Method java/lang/String.equals:(Ljava/lang/Object;)Z
42: ifeq 61
45: iconst_0
46: istore_3
47: goto 61
50: aload_2
51: ldc #5; //String def
53: invokevirtual #4; //Method java/lang/String.equals:(Ljava/lang/Object;)Z
56: ifeq 61
59: iconst_1
60: istore_3
61: iload_3
62: lookupswitch{ //2
0: 88;
1: 99;
default: 110 }
88: getstatic #6; //Field java/lang/System.out:Ljava/io/PrintStream;
91: ldc #3; //String abc
93: invokevirtual #7; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
96: goto 118
99: getstatic #6; //Field java/lang/System.out:Ljava/io/PrintStream;
102: ldc #5; //String def
104: invokevirtual #7; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
107: goto 118
110: getstatic #6; //Field java/lang/System.out:Ljava/io/PrintStream;
113: ldc #8; //String default
115: invokevirtual #7; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
118: return

}

估计有些同学懒得看这些汇编,其实把上面的汇编代码用Java写出来就是下面的样子了。
写到这里,大家应该能明白为什么不能用null了吧。

public class Test {
public void test(String str) {
int i = -1;
switch(str.hashCode()) {
case 96354: // "abc".hashCode()
if (str.equals("abc")) {
i = 0;
}
break;
case 99333: // "def".hashCode()
if (str.equals("def")) {
i = 1;
}
break;
default:
break;
}

switch(i) {
case 0:
System.out.println("abc");
break;
case 1:
System.out.println("def");
break;
default:
System.out.println("default");
}
}
}

如果switch传入的null,那么在运行时对一个null对象调用hashCode方法会出现NullPointerException。
如果switch的case写的是null,那么在编译时无法求出hashCode,因此在编译时就会报错了。

switch支持String只是一个语法糖,由javac来负责生成相应的代码。底层的JVM在switch上并没有进行修改。

⑶ 在java中,因对话框输入得到string,但接下来要用switch,怎样把string转换成char

1楼正解,char c = grade.charAt(0),
switch(c){
...

⑷ 我安装了java8,使用不了switch(String ),求解答...

哥呀,switch中只能使用5中基本类型的数据呀,String类型的数据时封装类型的,不能这么用的。
switch中只能使用boolean,int,short,enum,byte,其余的都会报错!

⑸ 在java中定义一个String类型变量switch()如何接收这个变量

就直接写iii

但是注意要求JDK7 7以下的switch是不支持String类型的

阅读全文

与switchjavastring相关的资料

热点内容
输解压密码时候压缩文件损坏 浏览:399
xampp如何运行php项目 浏览:900
哪个app团购电影票最便宜 浏览:618
国外如何给信件加密 浏览:164
哪个看书app免费书全 浏览:37
用php写一段自我介绍的代码 浏览:660
安卓手机怎么连接欧西亚 浏览:287
thinkpad用来编程怎么样 浏览:680
小米手机的桌面文件夹怎么找 浏览:823
java栈是什么意思 浏览:992
常州数控编程培训 浏览:725
博客编程随想 浏览:715
阿里云服务器怎么弄多个ip 浏览:798
思科配置loopback命令 浏览:169
数控铣床编程图形 浏览:171
编程故事课 浏览:833
达拉斯比洛杉矶源码 浏览:651
房贷提前解压可以吗 浏览:169
php7手册中文版下载 浏览:224
越南服务器怎么选 浏览:412