天天看點

BeanShell中switch語句

在 BeanShell 中,switch 語句不僅僅可以接收數值類型的參數還能傳入對象類型。比如,你可以 switch 日期和字元串,相當于使用了他們各自的 equals() 方法比較相等:

<b>代碼執行個體</b>

dateobj = new Date(); 

switch( dateobj ) 

case newYears: 

break; 

case christmas: 

default: 

<b>運作效果</b>

<a target="_blank"></a>

上例中,首先建立“Date”類型的對象“dateobj”,兩個字元串,通過 switch 語句傳入“dateobj”。

經 過第一個case的時候,“dateobj”對象與“newYears”字元串進行比較。由于一個是日期類型,另一個是字元串類型,是以 “dateobj”通過自帶的“toString()”方法轉換成字元串類型後與之進行比較。顯然是不相等的,是以進入第二個case繼續進行比較。

最後兩個case都不比對,是以進入default,列印出“dateobj”的資訊。順便提一下,print(對象)相當于print(對象.toString())。

再看如下的效果:

唯 一的不同就是将“newYears”的值改變為數字“2012”。這樣“newYears”就預設成為數值類型的變量。運作後出現了Error,顯然是在 進行第一次case的時候,作為日期類型的“dateobj”沒有變為數值類型的方法,是以出現mismatch的錯誤。

再看兩個例子:

“i”和“j”都是 Integer 類型的類類型變量,case後相等,可見比較的是變量的值。

“i”為 Integer 類型的變量,“j”為不帶類型的數值變量,“z”為int類型的變量。兩個case比較後都相等,列印出相應資訊。

<b>總結</b>

如果 switch 中傳入的參數類型與 case  中的一緻,則直接對值進行比較;否則,轉換成一緻的類型再進行比較。

本文轉自 tongqiuyan  51CTO部落格,原文連結:http://blog.51cto.com/tongqiuyan/751363

繼續閱讀