在Java7中增長了一個新特性,switch能夠接受String類型的變量,這就省下了書寫大量if ("xxx".equals(yyy))的繁複工做。示例代碼就免了,僅僅是一個數據類型的改變而已,若是會用原來的switch而在5分鐘內搞不定String類型的switch,建議仍是放棄作程序員吧……java
至於內部實現,java一點都沒增長新內容,其實代碼是被轉換成了這個樣子程序員
switch (xxx.hashCode()) { case 1024: // 假設原來是"aaa",而"aaa"的hashCode是1024。 if ("aaa".equals(xxx)) { // 這裏是原來"aaa"下的代碼 } case ... }
固然這只是某個具體版本時的實現,不保證在將來永遠是這個樣子的。spa
最後留2個問題:code
1. 爲何要if ("aaa".equals(xxx))這個判斷?orm
2. 自問一下若是是本身寫這個代碼,會在第一時間寫上這個判斷嗎?hash