论述题 1.  switch是否能作用在byte上?是否能作用在long上?是否能作用在String上?
【正确答案】switch能作用在byte上,不能作用在long上,从Java7开始可以作用在String上。
   switch语句用于多分支选择,在使用switch(expr)的时候,expr只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式,其中,整数表达式可以是基本数据类型int或其对应的包装类Integer,当然也包括不同的长度整型,例如short。由于byte、short和char都能够被隐式地转换为int类型,因此,这些类型以及它们对应的包装类型都可以作为switch的表达式。但是,long、float、double和String类型由于不能够隐式地转换为int类型,因此,它们不能被用作switch的表达式。如果一定要使用long、float或double作为switch的参数,必须将其强制转换为int型才可以。
   例如,以下对switch中参数的使用就是非法的。
   float a=0.123;
   switch(a)//错误!a不是整型或字符类型变量
   {
   ...
   }
   另外,与switch对应的是case语句,case语句之后可以是直接的常量数值,例如1、2,也可以是一个常量计算式,例如1+2等,还可以是final型的变量(fina1变量必须是编译时的常量),例如fina1 int a=0,但不能是变量或带有变量的表达式,例如i*2等。当然,更不能是浮点型数,例如1.1,或者1.2/2等。
   switch(form Way)
   {
   case 2-1: //正确
   ...
   case a-2: //错误
   ...
   case2.0: //错误
   ...
   }
   随着Java语言的发展,在Java7中,switch开始支持String类型了。
【答案解析】