Java 基本数据类型和包装类
1 Java 基本数据类型
1.1 八种基本数据类型
-
四种整数类型 (byte、short、int、long) 两种浮点数类型 (float、double) 一种字符类型(char) 一种布尔类型(boolean)
1.2 基本用法及说明
byte:
-
8 位,占 1 字节 最小值是 -128(-2^7),最大值是 127(2^7 - 1) 默认值是 0 例子:byte a = 100,byte b = -50
short:
-
16位,占 2 字节 最小值是 -32768(-2^15),最大值是 32767(2^15 - 1); 默认值是0; 例子:short s = 1000,short r = -20000
int:
-
32位,占 4 字节 最小值是-2,147,483,648(-2^31) 最大值是2,147,485,647(2^31 - 1) 一般地整型变量默认为int类型; 默认值是0; 例子:int a = 100000, int b = -200000
long:
-
64位,占 8 字节 最小值是-9,223,372,036,854,775,808(-2^63) 最大值是9,223,372,036,854,775,807(2^63 -1) 默认值是 0L 例子: long a = 100000L,int b = -200000L
float:
-
32位,占4字节 -3.4E38- 3.4E38… 浮点数是有舍入误差的 默认值是 0.0f 例子:float f1 = 234.5f,float f = 6.26F
double:
-
64位,8位 浮点数的默认类型为double类型 默认值是 0.0d 例子:double d1 = 123.4
boolean:
-
只有两个取值:true 和 false 默认值是false; 例子:boolean one = true, two = false
Java 规范中,没有明确指出 boolean 的大小。在《Java虚拟机规范》给出了 4 个字节,和 boolean 数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。
char:
-
char 类型是一个单一的16位Unicode字符;用 表示一个字符 可以当整数来用,它的每一个字符都对应一个数字
1.3 八种包装类型
1.3.1 包装类
-
byte --> Byte short --> Short int --> Integer long --> Long float --> Float double --> Double char --> Character boolean --> Boolean
1.3.2 包装类的构造方法
-
所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例 public Type(type value) 如:Integer i=new Integer(1); 注意事项: (1)Boolean 类构造方法参数为 String 类型时,若该字符串内容为 true (不考虑大小写),则该 Boolean 对象表示 true,否则表示 false。 (2)当 Number 包装类构造方法参数为 String 类型时,字符串不能为 null, 且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常。
2 int 和 Integer 有什么区别
2.1 区别
-
int 为基本类型,Integer 为包装类型,Integer 有很多方法可以使用。 int 可以通过 Integer.valueOf(xx) 转成 Integer Integer 可以调用 intValue()方法得到 int值 Java 1.5 之后不用显示调用,JVM 会自动进行拆装箱
2.2 注意事项
-
使用 Integer 和 int 直接比较大小时需要判断 Integer 的值是否为null。因为 Integer 会调用 intValue()方法 拆箱为 int,为 null 时会报空指针异常。
2.3 一个 Integer 值比较不注意的问题
public void test2() { Integer a1 = Integer.valueOf(60); Integer b1 = 60; System.out.println("1:="+(a1 == b1)); Integer a2 = 60; Integer b2 = 60; System.out.println("2:="+(a2 == b2)); Integer a3 = new Integer(60); Integer b3 = 60; System.out.println("3:="+(a3 == b3)); Integer a4 = new Integer(60); Integer b4 = new Integer(60); System.out.println("4:="+(a4 == b4)); Integer a5 = 129; Integer b5 = 129; System.out.println("5:="+(a5 == b5)); }
结果:
1:=true 2:=true 3:=false 4:=false 5:=false
Java 中 Integer 类型对于 -128 - 127 之间的数是缓冲区取的。所以用等号比较是一致的。 但对于不在这区间的数字是在堆中 new 出来的。所以地址空间不一样,也就不相等。
上一篇:
Java基础知识总结(2021版)
下一篇:
毕业都要快一年了,感觉没什么进步,迷茫