Java的两大数据类型:基本数据类型、引用类型
Java语言提供了八种基本数据类型。
六种数字类型(四个整数型,两个浮点型)
Byte a=127占1字节 8位 范围在-2^7 到 2^7-1 即 -128~127
Short b=2048占2字节16位 范围在‐2^15 到 2^15‐1 即 -3 2768~3 2767
Int c=4056占4字节32位 范围在‐2^31 到 2^31‐1 即 -21 4748 2648~21 4784 2647
Long d= 1L 占8字节64位 范围在‐2^63 到 2^63‐1 即 -922 3372 0368 5477 5808到 288 3372 0368 5477 5807 使用L或l 进行标识 建议使用大写L 因为小l与数字1有时不易区分
float e=12.4f 占4个字节,32位,后用f或F进行标识 Float
double f=23.4 占8个字节,64位,小数默认的是double类型,double类 型后可以用D或d标识,但一般不加 Double
字符类型
char g=’a’ 占2个字节,16位 Character
除了声明是为字符,也可以声明为特殊的转义字符(\r 回车 \b 空格)、Unicode字符集 \u0000‐\uFFFF、字符0到 65535
布尔型
boolean b1=true;
boolean b2=false;
boolean 1字节 8位 true/false
byte byteValue1 = 127;
int intValue1 = byteValue1 + 127;
System.out.println(intValue1);
小的类型自动转化为大的类型
char a1 = '\r';
int b1 = a1;
System.out.println(b1);
输出的结果是 13。这是 回车符在Unicode字符集对应的集。
字符可以自动提升为整数
float floatValue1=14+10f;
float floatValue2=floatValue1-23.9f;
System.out.println(floatValue2);
两个数值是无限接近于24 却不等于 24
byte f1 = (byte) 126;
byte f2 = (byte) 127;
byte f3 = (byte) 128;
byte f4 = (byte) 129;
byte f5 = (byte) 130;
System.out.println(f1);
System.out.println(f2);
System.out.println(f3);
System.out.println(f4);
System.out.println(f5);
强制类型转换可能导致溢出或者精度损失
00000000 00000000 00000000 10000000 128的原码
00000000 00000000 00000000 10000000 128的反码
00000000 00000000 00000000 10000000 128的补码
10000000 的补码
11111111 反码
10000000
0111 1110 126
0111 1111 127
1000 0000 128
1000 0001 129
1000 0010 130
正数的反码,补码是其本身。负数的反码是符号位保持不变,其余位取反。负数的补码是在其反码的基 础上+1。
在把容量大的类型转换为容量小的类型时必须使用强制类型转换
Int intValueA=127;
byte byteValueB=(byte) intValueA;
System.out.println(byteValueB);