天天看点

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

继续阅读