導航:首頁 > 編程語言 > 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相關的資料

熱點內容
python套利交易 瀏覽:785
java配置環境變數win8 瀏覽:899
輸解壓密碼時候壓縮文件損壞 瀏覽:399
xampp如何運行php項目 瀏覽:901
哪個app團購電影票最便宜 瀏覽:618
國外如何給信件加密 瀏覽:164
哪個看書app免費書全 瀏覽:37
用php寫一段自我介紹的代碼 瀏覽:660
安卓手機怎麼連接歐西亞 瀏覽:287
thinkpad用來編程怎麼樣 瀏覽:680
小米手機的桌面文件夾怎麼找 瀏覽:823
java棧是什麼意思 瀏覽:992
常州數控編程培訓 瀏覽:725
博客編程隨想 瀏覽:715
阿里雲伺服器怎麼弄多個ip 瀏覽:798
思科配置loopback命令 瀏覽:169
數控銑床編程圖形 瀏覽:171
編程故事課 瀏覽:833
達拉斯比洛杉磯源碼 瀏覽:651
房貸提前解壓可以嗎 瀏覽:169