论坛首页 入门技术论坛

java里+号的运算结果默认是整型

浏览 4138 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-01-09   最后修改:2009-12-27
class test
{
public static void main(String[] args)
{
byte y=125;
y = y+ (byte)5;
System.out.println(y);
}
}

上面的代码无法通过。

y = y+ (byte)5; 改成 y+=(byte)5;就是好的。
   发表时间:2007-01-09  
在虚拟机内部byte都是用int来表示的。byte+byte结果就是int,你不强制转型,当然会报错。

+= 会把结果自动转型。
0 请登录后投票
   发表时间:2007-01-09  
foxty 写道
在虚拟机内部byte都是用int来表示的。byte+byte结果就是int,你不强制转型,当然会报错。

+= 会把结果自动转型。


嗯,按照你说的,改了,试了一下。

y = (byte)(y+ (byte)5);
int x = y+(byte)5;

都是好的。
也就是说,java默认是以int为运算结果类型。

平常不用byte,没注意到,以为是按低的来。
0 请登录后投票
   发表时间:2007-01-09  
Thinking in Java里面有比较详细的论述
0 请登录后投票
   发表时间:2007-01-10  
同学,以前的时候也没有注意这些
0 请登录后投票
   发表时间:2007-01-10  
对操作符,Thinking in java只是简单的介绍,并没有深入到编译器具体实现去解释这些问题,这些还要看effective java, java puzzlers
0 请登录后投票
   发表时间:2007-01-10  
leisure 写道
Thinking in Java里面有比较详细的论述


切,我就是看Thinking in java的,里面根本没有。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics