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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一诺千金 中级黑马   /  2014-3-30 23:48  /  1776 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么不能呢?

9 个回复

倒序浏览
因为int范围已经够了 何必用long呢 ? 比如吃饭用碗就够了 何必用盆子呢? 浪费空间资源

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
switch ( 整型或字符型变量 ) 中,变量的类型只能是整型和字符类型。它们包含 int,char。当然无符类型或不同的长度整型(unsigned int,short,unsigned char)等都可以。另外,枚举类型(enum)内部也是由整型或字符类型实现。所以也可以。实型(浮点型)数就不行

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
雪碧拌米饭 发表于 2014-3-31 00:11
switch ( 整型或字符型变量 ) 中,变量的类型只能是整型和字符类型。它们包含 int,char。当然无符类型或不 ...

java整型有四种:byte(1字节),short(2字节),int(4字节),long(8字节)
long也是整形啊
回复 使用道具 举报
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
回复 使用道具 举报
long长整形变量而double双精度浮点数(其实小数),所需要计算前先b强制装换double型才保证精度不缺失,所以他计算的时候是先将long转换成double才继续运算的


回复 使用道具 举报
long的值太大,定义整型时都默认int的,switch是针对几个固定的值,且全部加载进内存的
回复 使用道具 举报
switch后只能用byte,short,int,char,jdk5.0以后,还可以用枚举类型,这是java的规范,long类型在Java中是64位的,因此很难映射到一个具体机器的寄存器中,而这对于Java后台语义着色而言是比较麻烦的。而String不能作为一个基本类型的常量来对待,它是一个对象。哪怕你直接写"Hello, world",Java虚拟机在执行时也会为它创建对象。因此不能作为常量。
回复 使用道具 举报
必须不能!switch()只能是整形或者枚举常量,比如int,short, char(short,char可以隐含转换成int),long类型数据不能
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马