A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

switch语句能否作用在byte上,能否作用在long上。求分析

2 个回复

正序浏览
楼上的回答很好了,这个题经常出现在面试题里面,就是因为byte能够隐式的转换为int类型,而long型不能够转换。顺便补充一下,关于基本数据之间的类型转换,java中分为两种,自动类型转换(就是隐式转换)和强制转换,自动类型转换必须在相同数据类型的数据之间进行,并且必须是有低精度类型向高精度类型转换,很显然byte向int转换时会自动发生。下面给出数据精度的排列:(精度由低到高排列)byte——>short——>int——>long——>float——>double
回复 使用道具 举报
本帖最后由 刘文超 于 2013-1-3 11:54 编辑

lz你好,我们又见面了、
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
但是我们可以将long型显示转换为int的,如截图中switch((int) l);

敬上代码一段,截图一张:
  1. package org.qyx.online;

  2. public class TestSwitch {

  3.         /**
  4.          * @category switch语句能否作用在byte上,能否作用在long上?
  5.          * @author 刘文超
  6.          */
  7.         public static void main(String[] args) {
  8.                 String name="";
  9.                 byte b=1;
  10.                 switch(b){
  11.                 case 1:
  12.                         System.out.println("byte");
  13.                         break;
  14.                 }
  15.                
  16.                 short s=1;
  17.                 switch(s){
  18.                 case 1:
  19.                         System.out.println("short");
  20.                         break;
  21.                 }
  22.                
  23.                 long l=1;
  24.                 switch((int)l){
  25.                 case 1:
  26.                         System.out.println("long");
  27.                         break;
  28.                 }
  29.                
  30.                 switch(l){
  31.                 case 1:
  32.                         System.out.println("long");
  33.                         break;
  34.                 }
  35.         }

  36. }
复制代码

AAAAA.jpg (40.12 KB, 下载次数: 103)

AAAAA.jpg
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马