java备忘录之数据类型

数据类型

java中一共有8中数据类型。4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和1种表示布尔值的boolean。

整型

整型 字节数 位数 大小
byte 1字节 8位 -128 ~ 127
short 2字节 16位 -32768 ~ 32767
int 4字节 32位 -2147483648 ~ 2147483647(正好超过20亿)
long 8字节 64位 -9223372036854775808 ~ 9223372036854775807

声明长整型long时需要有一个后缀L或l(如 long 400L)
十六机制数值需加前缀0x或者0X
八进制数值需加前缀0
从java7开始,加上0b或0B表示二进制数,同时还可以在数字字面量加下划线,如1_000_000(或0b1111_0100)
加下划线为了让人更易读,java编译器回去除这些下划线。

浮点类型

整型 字节数 位数
float 4字节 32位
double 8字节 64位

声明float类型的数值有一个后缀F或f
没有后缀F的浮点数默认值double
也可以在浮点数加后缀D或d
例如

1
2
3
4
5
float f1 = 34;
float f2 = 3.14F;
Float f3 = 23F;
double d1 = 8; //不需要加D
Double d2 = 9D; //要加D,不然会报错

java中整数默认是int,小数默认是double

char类型

char类型的字面量要用单引号括起来
char类型的值可以表示十六进制值其范围从\u0000到\Uffff。
存的是Unicode字符

转义字符
\b 退格 \u0008
\t 制表 \u0009
\n 换行 \u000a
\r 回车 \u000d
" 双引号 \u0022
' 单引号 \u0027
\ 反斜杠 \u005c

boolean

false和true
整型值和布尔值之间不能进行相互转换

在《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。也就是说JVM规范指出boolean当做int处理,也就是4字节,boolean数组当做byte数组处理,这样我们可以得出boolean类型占了单独使用是4个字节,在数组中是确定的1个字节。

数据缓存

整型的4个包装类型会缓存-128127之间的数,包括-128和127,即给包装类型赋-128127之间的数,包装类型会直接存缓存中拿

1
2
3
4
5
6
Integer e1 = 128;
Integer e2 = 128;
if(e1 == e2)
System.out.println("equal");
else
System.out.println("not equal");

输出

1
not equal

e1和e2没有直接中缓存中拿,而是新建了一个对象,引用是不一样的,所以包装类型判断相等应该用equals

打赏

请我喝杯咖啡吧~

支付宝
微信