黑马程序员技术交流社区
标题:
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