包含javaswitchstring的词条

http://www.itjxue.com  2023-01-07 00:03  来源:未知  点击次数: 

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

java7之前,switch 是不支持string格式。 然后在 java7中支持。 在java8中 取消了对 string的支持。 可以尝试使用枚举。

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;

}

}

}

扩展资料

switch表达式代码:

#includestdio.h

int main()

{

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

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

{ ?

case 10: ?

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

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

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

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

case 5:

case 4:

case 3:

case 2:

case 1:

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

default:printf("Error!\n");

}

}

参考资料:百度百科 switch (计算机语言关键字)

JAVA中switch能否用在byte上?能否用在long上?能否用在string上?

switch后面的括号里面只能放int类型的值,注意是只能放int类型,但是放byte,short,char,和枚举(enum)。

因为byte,short,char,,可以隐式的转换为int类型,不是说就可以放它们。说白了,你放的byte,short,char,枚举(enum),然后他们会自动转换为int类型(宽化,自动转换并且安全),其实最后放的还是int类型

所以long,

string不行

JAVA中SWITCH为什么不能使用LONG型作参数?

交换机在JAVA中不能使用long的根本原因是长时间转换为int将失去精度,导致数据不准确,因此JAVA交换机具有不允许长的逻辑规则。

switch语句中的变量类型可以是:byte,short,int或char。从Java SE 7开始,交换机支持字符串String类型,case标记必须是字符串常量或文字。

扩展资料

Switch案例在java中有以下规则:

switch语句可以有多个case语句。每个案例后跟一个值和一个要比较的冒号。

case语句中值的数据类型必须与变量的数据类型相同,并且只能是常量或文字常量。

当变量的值等于case语句的值时,case语句后面的语句开始执行,直到break语句出现跳出switch语句。

遇到break语句时,switch语句终止。程序跳转到switch语句后的语句执行。 case语句不必包含break语句。如果没有发生break语句,程序将继续执行下一个case语句,直到发生break语句。

switch语句可以包含一个默认分支,它通常是switch语句的最后一个分支(可以是任何地方,但建议在最后一个)。当case语句没有值且变量的值相等时,执行Default。默认分支不需要break语句。

参考资料:百度百科-JAVA

前的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 中switch能用string类型的吗

Java JDK1.8和JRE1.8以后switch可以用String类型了,

我给你个例子,你看看吧.

public?class?CCC?{

?public?static?void?main(String[]?args)?{

??String?s="abc";

??int?a=0;

??switch(s){

???case?"a":a=1;break;

???case?"ab":a=2;break;

???case?"abc":a=3;break;

??}

??System.out.println(a);

?}

}

运行结果

3

(责任编辑:IT教学网)

更多

推荐免费资源文章