本文共 2339 字,大约阅读时间需要 7 分钟。
1.Java中的包装类
内置数据类型,如:byte、int、long、double 等。 在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类 Number 的子类。
2.举例说明其中的某些方法
首先:构造方法:Integer i=new Integer(10);Integer i = new Integer("12");
主要就是以下的两个方法valueOf和xxxVlue方法 就是包装类和基本数据类型的转化方法:
intValue方法将对象类型转为基本数据类型(在其他的包装类中都有相应的xxxValue方法的转换)Integer i = new Integer(12); int i1 = i.intValue(); System.out.println(i.getClass().getName()); //java.lang.Integer System.out.println(i1); //12
基本数据类型转为包装类,用相应包装类的静态方法valueOf方法
Integer i = Integer.valueOf(12);System.out.println(i.getClass().getName()); //java.lang.Integer
还有一个比较重要的静态方法parseXXX将字符串解析为某个基本类型:
public static void main(String[] args) { double s = Double.parseDouble("123.43"); //int i = Integer.parseInt("123.23");//java.lang.NumberFormatException System.out.println(s); //123.43 System.out.println(Integer.parseInt("123")); //123 System.out.println(Double.parseDouble("12")); //12.0 }
其他的包装类都是类似的,我们进行相应的文档查看就可以
3.自动封箱,自动拆箱
自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。自动装箱时编译器调用valueOf将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似intValue(),doubleValue()这类的方法将对象转换成原始类型值。public static int change(Integer i){ return i.intValue();} public static void main(String[] args) { int i=5; int re = change(i);//自动封箱 System.out.println(re); //5 Integer i2=new Integer(19); System.out.println(++i2); //19 自动拆箱 }
从以上的例子我们可以看出来,change函数需要的是包装类对象,但是我们传入基本类型的数据也可以执行,因为我们在传参后进行了自动封箱,执行了对象的代码,在后面的代码i2对象执行++操作,可以执行的原因是有了自动拆箱的操作,转化为了基本数据类型,才能进行++操作,所以说,封箱拆箱都是自动进行的
重要面试题:
Integer i=127; Integer i2=127; System.out.println(i == i2); Integer j=128; Integer j2=128; System.out.println(j==j2);
结果如下:
转载地址:http://vmeq.baihongyu.com/