一、Java的基本数据类型(八种)
- 整型(默认类型为int)
byte:占1字节(B),8位(bit) 范围:-2^7 到 2^7-1,默认值是0;第一位是符号位;
例:二进制:00000000为0,10000000为-128;
short:占2字节(B),16位(bit) 范围:-2^15 到 2^15-1,默认值是0;
int:占4字节(B),32位(bit) 范围:-2^16 到 2^16-1,默认值是0;
long:占8字节(B),64位(bit) 范围:-2^32 到 2^32-1,默认值是0L;
- 浮点型(默认为double)
float:占4字节(B),32位(bit),后用f或F进行标识;
例:float e=12.4f;
double:占8字节(B),64位(bit);
- 字符型
char:占2字节(B),16位(bit);
例:char g=’a’; 字符;
char h=’\r’ // 特殊的转义字符;
char i=’\u9990’ //Unicode字符集 \u0000-\uFFFF(16进制);
char j=65535 //字符0到65535
- 布尔型
boolean:占1字节(B),8位(bit),输出为 true/false
二、2. 基本数据类型对应的类类型----包装类
- 整型
byte对应Byte、short对应Short、int对应Integer、long对应Long;
- 浮点型
float对应Float、double对应Double;
- 字符型
char对应Character;
- 布尔型
boolean对应Boolean;
- 进制转换(Integer)
十进制转成十六进制:Integer.toHexString(500);
十进制转成八进制:Integer.toOctalString(500);
十进制转成二进制:Integer.toBinaryString(500);
十六进制转成十进制:Integer.valueOf(“FFFF”,16).toString();
八进制转成十进制:Integer.valueOf(“776”,8).toString();
二进制转成十进制:Integer.valueOf(“0101”,2).toString();
转十进制:sum(数值*进制^(数值所在位数-1));
例:二进制转十进制
二进制数:11111
对应位数:54321
得到的十进制数:1x2^4 +1x2^3 +1x2^2 +1x2^1 +1x2^0=31;
- 自动装箱和自动拆箱
自动装箱:把基本数据类型赋值给包装类型。例:Integer int1=0;
自动拆箱:把包装类型赋值给基本数据类型。例:int int2=int1;
三、类型转换
- 自动类型转换(隐式类型转换) 由小到大
- 小的类型自动转换成大的类型;
- 整数类型可以自动转化为浮点类型,可能会产生舍入误差;
- Float和Double提供了快速的运算,然而问题在于转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值;
- 字符可以自动转换为int;
- 强制转换类型(强制类型转换可能导致溢出或损失精度)
格式:(type)value type是要强制类型转换后的数据类型
溢出
例:byte d = (byte) 128;输出d为-128;
关于 原码,反码,补码的知识
正数的反码和补码都是本身(原码);
负数的反码是符号位保持不变,其余位取反;负数的补码是在其反码的基 础上+1;
损失精度
例:float floatValue3=(float) Long.MAX_VALUE;输出floatValue3为科学计数法,是一个精确数,而不是一个准确数,这就损失了精度。
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。(注意溢出)
浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。