Java-包装类

包装类


简单来说 包装类就是将一个基本数据类型包装成一个对象 为了就是适应java中的多态和面向对象的特点

常见的包装类有 Integer Character Double 等

包装类的创建和初始化

JDK5之前的旧方法 有静态方法和new 对象的方法来创建对象

1
2
3
Integer t1 = new Integer(123)

Integer t1 = Integer.valueOf(123)

创建对象的注意事项

在使用静态方法valueOf创建对象类时 如果在规定范围内的数值 则Java底层提前创建好了对象 直接引用即可 不会再创建一个新的对象

例如 Integer包装类中 -128~127数值的对象 都不会再重新创建 而且直接引用已经创建好的

1
2
3
4
5
6
7
8
Integer t1 =Integer.valueOf(127)
Integer t2 =Integer.valueOf(127)
sout(t1==t2) // True


Integer t1 =Integer.valueOf(128)
Integer t2 =Integer.valueOf(128)
sout(t1==t2) // false

其实就是规定范围内中的数据经常使用 每次都创建太浪费了 所以提前就创建好了

JDK5之前的包装类计算很麻烦

1
2
int result=t1.intValue()+t2.intValue()
Integer res=new Integer(result)

JDK5后的自动装箱和自动拆箱


  • 自动装箱 :把基本数据类型会自动的变成其对应的包装类
  • 自动拆箱: 把包装类自动的变成其对象对应的基本数据类型
1
2
3
Integer i1 = 10  //自动装箱
Integer i2 = 20
Integer i3 = i1 + i2 //自动拆箱

Integer及其他包装类中的方法


其实就一个最重要的知识点 String 直接转各种包装类

比如键盘输入一个整形数据 那以后我们就不要考虑是用 nextInt 还是 nextDouble 统一用nextline

得到String字符串后 直接利用各包装类中的parseInt方法来实现String到包装类的转换

1
2
3
String s=sc.nextline()
int a=Integer.parseInt(s)
//相应的double 和 long之类的 就调用对应的parse方法即可