初学java的一个问题

lzr4304061988012 2009-06-08 10:18:18

byte b;
b = 34L;

**********************
byte b;
b = 34;


别人问我为什么前一个不可以通过,后一个却不可以,同是高类型转化为低类型
...全文
38 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzr4304061988012 2009-06-08
  • 打赏
  • 举报
回复
我同学直接硬是说:他书上说整形常量默认是int型的,我看了的确是这样的。
我想编译器没必要这么死的。
wxj810506 2009-06-08
  • 打赏
  • 举报
回复
我的理解,不见得正确。
byte b;b = 34L;
这个因为显式的声明为long,因此编译器不会进行自动的类型转换。

byte b;b = 34;
这个,常量34并不一定是int 类型。因为是常量,因此编译器可以进行判断并自动转型。

例如下面这个就无法正常编译
byte b; b = 128;
lzr4304061988012 2009-06-08
  • 打赏
  • 举报
回复
“别人问我为什么前一个不可以通过,后一个却可以,同是高类型转化为低类型”

sorry打错了!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧