黑马程序员技术交流社区
标题:
纠结了一下午的问题(整形赋值问题)
[打印本页]
作者:
785026612
时间:
2017-4-5 23:45
标题:
纠结了一下午的问题(整形赋值问题)
问题是这样的
long lo=33;不加L时,33加大最大到2^31-1,就是int上限;
short sh=8;8不能超过short上限
右边默认为int,那么第一个好理解,不能超过int取值,第二个呢,默认向下转型?既然是强转,为什么不能超过2^15-1,最后得到一个靠谱答案
字面值给整形赋值,默认为int型,给short赋值,在不超过范围时,会隐式强转,超过会报错
但是,只能对字面值,如3,5这些,右边出现变量,就不会有这些优化了,大转小直接报错
(如果有问题请帮忙指正)
作者:
DreamBoyMrsLin
时间:
2017-4-5 23:51
等你学了包装类 这些你就不会去记了
作者:
785026612
时间:
2017-4-5 23:54
DreamBoyMrsLin 发表于 2017-4-5 23:51
等你学了包装类 这些你就不会去记了
自学,已经快学好io了,今天第一天去上课,发现这个问题,我觉得基础很重要,一定要弄明白
作者:
MMM521
时间:
2017-4-5 23:55
好深奥哦 ,我已经蒙圈了
作者:
Hp_Yx
时间:
2017-4-6 00:04
不懂
作者:
Hp_Yx
时间:
2017-4-6 00:05
杭州,
作者:
zeng1002
时间:
2017-4-6 00:16
这个其实是jvm对常量的优化机制,编译器在编译的时候可以判断常量的大小但不能判断变量的大小,整形常量是int型,但是编译器可以知道这个值是否在byte或short的范围内,在的话可以直接赋值,不在的话就会报错
作者:
javaeeheima
时间:
2017-4-6 04:14
第二个也没写强转的表达式啊,你那样写会损失精度的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2