`

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型时值不变。

分享到:
评论
1 楼 icefire 2007-06-02  
c里不是还能把地址拿出来转吗?呵呵!

相关推荐

Global site tag (gtag.js) - Google Analytics