java数据类型转换总结

来源:互联网 发布:linux lsof 编辑:程序博客网 时间:2024/05/17 02:30

数据转换一般跟类型的所占空间大小有关,八大基本数据类型所占大小:
byte:1个字节
short、char:2个字节
int、float:4个字节
long、double:8个字节
自动转换
是指不需要书写代码,由系统自动完成的类型转换。要求如下:
1、两种数据类型彼此兼容;如数值型与布尔型不兼容则无法转换
2、类型存储范围由小到大:byte→short(char)→int→long→float→double


例1:byte可以自动转换成int类型

byte a = 1;int b = a;虚拟机首先将byte类型a转换成int类型,再赋值给b

例2:表达式自动转换

byte a1 = 1;byte a2 = 2;byte a3 = a1 + a2;这样写会报错,在表达式运算期间会自动提升至int类型再做运算,正确写法:byte a1 = 1;byte a2 = 2;int a3 = a1 + a2;

例3:运算符赋值的自动转换

short a = 3;int i = 5;s += i;System.out.println(s);输出结果为:8类推:+=、-=、*=、/=、%=都可以自动完成转换

例4:自动转换成字符串

String a = "aaa";int b = 3;System.out.println(a + b);输出结果为:aaa3

手动转换

类型储存范围由大到小
结果会造成精度丢失


例:由short类型转换byte类型

short a = 853;  //853二进制为00000011 01010101(short为2字节16位)byte b = (byte)a;      //用(数据类型)添加在属性前边实现强制转换System.out.println(b);输出结果为:85        //85二进制为01010101(byte为1字节8位)

由此可以表明:在转换期间16位的short转8位的byte类型,会丢失8位的数据;
其它类型依次类推