2017-05-24 139 views
0

請問我們爲什麼我們需要在java中使用switch-case語句,如果我們已經有if-else if-else聲明。爲什麼我們在java中需要switch-case語句,如果我們已經有if-else if-else語句

switch-case語句是否有任何性能優勢?

+0

當你考慮它們時,它們是完全不同的東西。 (擾流警報:內部在JVM中甚至有兩種不同的開關情況構造。) – biziclop

+0

兩者都有什麼問題?有四個循環結構有什麼問題?有許多不同的賦值運算符有什麼問題?同時擁有lambdas和匿名類有什麼問題?沒有。你知道什麼樣的計算機語言,爲了清晰和便於維護,不提供表達算法的不同方法? –

+0

爲什麼我們在已經有可以做同樣事情的加法時可以乘以數字? – csmckelvey

回答

1

開關語句簡化了if塊的長列表,提高了可讀性。此外,他們允許通過案件。

考慮以下幾點:

String str = "cat" 
switch(str){ 

    case "cat": 
     System.out.println("meow"); 
     break; 
    case "dog": 
     System.out.println("woof"); 
     break; 
    case "horse": 
    case "zebra": //fall through 
     System.out.println("neigh"); 
     break; 
    case "lion": 
    case "tiger": 
    case "bear": 
     System.out.println("oh my!"); 
     break; 
    case "bee": 
     System.out.print("buzz "); 
    case "fly": 
     System.out.println("buzz"); //fly will say "buzz" and bee will say "buzz buzz" 
     break; 
    default: 
     System.out.println("animal noise"); 
} 

現在讓我們嘗試彷彿-別人的

String str = "cat" 
if(str.equals("cat")){ 
    System.out.println("meow"); 
} 
else if(str.equals("dog")){ 
    System.out.println("woof"); 
} 
else if(str.equals("horse") || str.equals("zebra")){ 
    System.out.println("neigh"); 
} else if... 

你明白了吧寫吧。尤其在開關閃耀的地方是beefly。那裏的邏輯將很難精確地捕捉到,特別是如果它們不僅僅是一個印刷聲明而且它們共享的話。

+0

但是,如果其他條件允許更復雜的條件,那麼穿透並不是很有優勢。 – Kayaman

+0

@Kayaman,但是由於開關的原因,可讀性要好得多 –

+0

取決於你在做什麼。 – Kayaman