包装类的作用,就是将基本数据类型改写为类的方式,例如:我们写double d = 1.2; 这个不是类和对象的写法。那么就将double类型包装成一个类Double,因为类名首字母要大写。创建对象也就变成了Double d = new Double(1.2) ;
包装类和基本数据类型的区别和相同点
- 基本数据类型 对应的包装类
- short Short
- byte Byte
- int Integer
- long Long
- float Float
- double Double
- char Character
- boolean Boolean
就是char和int这两个有点不同
包装类里面有方法,基本数据类型没有方法
包装类默认值都是null,基本数据类型都有默认值
包装类使用==比较的是地址,用equals()比较的是值,基本数据类型用= =比较。
推荐使用equals来比较
public static void main(String []args) {
//基本数据类型
int num1 = 5 ;
//定义包装类对象只能调用一个参数的构造方法,也就是给对象必须传递一个值
Integer num2 = new Integer(5);
Integer num3 = 5 ;
System.out.println(num2 == num3); //这行会输出false
System.out.println(num2.equals(num3)); //这行输出true
}
包装类的对象进行类型转化
public class Test {
public static void main(String []args) {
//类型转化
String s = "5";
int num4 = Integer.parseInt(s); //只能将字符串类型变量转化为int类型
double d = Double.parseDouble(s);
}
}
**类型转化的代码就一句。例如上面的:String s = “5”; int num4 = Integer.parseInt(s); 这个 类型.parse类型(变量名) ,这个变量名就是好像只有字符串,当然只是目前有这点发现,以后发现新特新再写。 **
整数缓冲池
Short Integer Long 这三个都有缓冲区。大写开头对应类型。
默认会在内存中创建256个大小的缓冲池,对应的数值区间为:-128到127这些整数。那么也就是说你给上面这些类型变量直接赋值(例如Short s1 = 123 ;),也会给你创建对象,但是这个对象s1在缓冲池里创建的,如果还有一个Short s2 = 123 ; 这个数值也会在缓冲池里创建对象s2,而且很重要的一点,因为数值是一样的(即123),那么这个对象存得地址也相等。所以等号进行判断地址相等,equals判断值也相等。
Integer i5 = 124 ;
Integer i6 = 124 ;
System.out.println(i5 == i6);
System.out.println(i5.equals(i6));
Integer i7 = 421 ;
Integer i8 = 421 ;
System.out.println(i7 == i8);
System.out.println(i7.equals(i8));
然后charater只有在对应ASCLL码在 0 - 127之间也会判断相等。
Character c1 = 92 ;
Character c2 = 92 ;
System.out.println(c1 == c2);
System.out.println(c1.equals(c2));
Character c3 = 128 ;
Character c4 = 128 ;
System.out.println(c3 == c4);
System.out.println(c3.equals(c4));
下面的例子和上面的是一样的
Character c6 = Character.valueOf('x');
Character c7 = Character.valueOf('x');
System.out.println(c6 == c7);
System.out.println(c6.equals(c7));
Character c8 = Character.valueOf((char)(129)); //因为整数129对应ACSLL码是什么我不知道,我这样转型一下
Character c9 = Character.valueOf((char)(129));
System.out.println(c8 == c9);
System.out.println(c8.equals(c9));