黑马程序员技术交流社区

标题: swtich是否能作用在long上 [打印本页]

作者: 一诺千金    时间: 2014-3-30 23:48
标题: swtich是否能作用在long上
为什么不能呢?

作者: 黄晓鑫    时间: 2014-3-30 23:59
因为int范围已经够了 何必用long呢 ? 比如吃饭用碗就够了 何必用盆子呢? 浪费空间资源
作者: 雪碧拌米饭    时间: 2014-3-31 00:11
switch ( 整型或字符型变量 ) 中,变量的类型只能是整型和字符类型。它们包含 int,char。当然无符类型或不同的长度整型(unsigned int,short,unsigned char)等都可以。另外,枚举类型(enum)内部也是由整型或字符类型实现。所以也可以。实型(浮点型)数就不行
作者: 一诺千金    时间: 2014-3-31 00:16
雪碧拌米饭 发表于 2014-3-31 00:11
switch ( 整型或字符型变量 ) 中,变量的类型只能是整型和字符类型。它们包含 int,char。当然无符类型或不 ...

java整型有四种:byte(1字节),short(2字节),int(4字节),long(8字节)
long也是整形啊
作者: 董振冬    时间: 2014-3-31 08:52
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
作者: lilin202011    时间: 2014-4-3 23:01
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
作者: lilin202011    时间: 2014-4-3 23:07
long长整形变量而double双精度浮点数(其实小数),所需要计算前先b强制装换double型才保证精度不缺失,所以他计算的时候是先将long转换成double才继续运算的



作者: 唯爱    时间: 2014-4-4 00:15
long的值太大,定义整型时都默认int的,switch是针对几个固定的值,且全部加载进内存的
作者: ok-Prince    时间: 2014-4-4 09:43
switch后只能用byte,short,int,char,jdk5.0以后,还可以用枚举类型,这是java的规范,long类型在Java中是64位的,因此很难映射到一个具体机器的寄存器中,而这对于Java后台语义着色而言是比较麻烦的。而String不能作为一个基本类型的常量来对待,它是一个对象。哪怕你直接写"Hello, world",Java虚拟机在执行时也会为它创建对象。因此不能作为常量。
作者: 听雨    时间: 2014-4-4 09:51
必须不能!switch()只能是整形或者枚举常量,比如int,short, char(short,char可以隐含转换成int),long类型数据不能




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2