黑马程序员技术交流社区

标题: java 类型转换原理 [打印本页]

作者: fengche    时间: 2013-10-16 10:03
标题: java 类型转换原理
本帖最后由 fengche 于 2013-10-16 12:12 编辑

public class Demo{
        public static void main (String[] args){
                System.out.println((int)(char)(byte) -1);
        }
}
它打印出来的是65535而不是-1,这是为什么呢?
作者: ☆╰學不会☆╮    时间: 2013-10-16 10:32
你这样写的目的是什么呢?
数据类型之间的转换分为隐含类型转换(或称默认类型转换 )和强制类型转换两种。
自动类型转换按字节长度从“短”到“长”的优先关系依次为:
byte ---- short ---- int ---- long ----float ---- double
byte short char数据类型之间不能互相转换 都可以转成int型
强制类型转换 在变量名前面加上欲转换的类型,程序运行时就会自动将此行语句里的变量做类型转换的处理,并不影响原先定义的类型;
例:byte  a=10;  int b=20; byte c=a+(byte)b    c的输出结构为30
如果不定义数据类型 x=100; 那么变量x 默认的数据类型为int 数字默认
的数据类型为int型。
作者: 斗胆潇洒    时间: 2013-10-16 10:35
在(int)(char)(byte) -1中
(byte) -1 --》10000001--》补码--》11111111,高位是符号位
(char)(byte) -1 --》char两字节,byte才一字节,补成两字节,按符号位补成11111111 11111111
(int)(char)(byte) -1 --》11111111 11111111 --》二进制转int便是65536了
其实-1从char转就可以了,(int)(char)-1 = 65536




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2