java解惑之—多重转型。

下面这个小程序给我们展示了JAVA中符号扩展的有趣之处。

public class  Muticast{

     public static void main(String[ ] args){

          System.out.println((int)(char)(byte) - 1 );

    }

}

本程序运行结果是:65535   o(∩_∩)o...哈哈

上面的程序涉及到了JAVA中的多重转型。在涉及到多重转型时有一个简单的规则:如果最初的数值是有符号的,那么就进行符号扩展,如果是char,不管要转为什么类型都进行零扩展。有了这条规则,上面的程序应该就清晰了,首先-1转为byte时,截取低八位,这样就为11111111,当byte转为char时,因为byte是有符号的,所以做符号扩展,这样就扩展为了1111111111111111,这样它表示2的16次再减1,即为65535.这时候已经转成了char型了,当是char时做零扩展,当转为int型时值不变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值