包装类
1. 什么是包装类
java中为了提高对基础数据类型的操作,添加了每个基础数据类型对应的包装类,以便于使用Object类中的某些方法,以便更方便的对数据进行操作
2. java提供的包装类
java提供的包装类分为两类:
- 继承Number的数值型包装类
- 直接继承Object的对象型包装类
2.1 对象型包装类
- boolean的包装类 Boolean
public final class Boolean implements java.io.Serializable, Comparable<Boolean>
- char的包装类 Character
public final class Character implements java.io.Serializable, Comparable<Character>
2.2 数值型包装类
- byte的包装类 Byte
public final class Byte extends Number implements Comparable<Byte>
- short的包装类 short
public final class Short extends Number implements Comparable<Short>
- int的包装类 Integer
public final class Integer extends Number implements Comparable<Integer>
- long的包装类 Long
public final class Long extends Number implements Comparable<Long>
- float的包装类 Float
public final class Float extends Number implements Comparable<Float>
- double的包装类 Double
public final class Double extends Number implements Comparable<Double>
3. 自动装箱,自动拆箱
3.1 转换为包装类过后就可以调用包装类的方法处理基本类型数据 (如Integer和int)
int i = 10; Integer i1 = i; // 转换过后就可以调用Integer的方法处理int类型数据 int i2 = i1;
3.2 **Value() 将包装类型转为基本数据数据类型
int i3 = i1.intValue();
3.3 把基本数据类型转为String类型 引用数据类型.toString()
String str = Integer.toString(i1);
3.4 将基本数据类型转为字符串 parse**(); 字符串的内容要跟基本数据类型对应
int i4 = Integer.parseInt("999");
例子:
public void test3() { Integer i = new Integer(1); Integer j = new Integer(1); System.out.println(i == j);//false //Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[], //保存了从-128~127范围的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在 //-128~127范围内时,可以直接使用数组中的元素,不用再去new了。目的:提高效率 Integer m = 1; Integer n = 1; System.out.println(m == n);//true Integer x = 128;//相当于new了一个Integer对象 Integer y = 128;//相当于new了一个Integer对象 System.out.println(x == y);//false
4. 基本数据类型、包装类、String三者之间的相互转换
public class Test { //String类型 --->基本数据类型、包装类 public void test5(){ String str = "123"; int num2 = Integer.parseInt(str); System.out.println(num2 + 1); String str2 = "true1"; boolean b1 = Boolean.parseBoolean(str2); System.out.println(b1); } //基本数据类型、包装类--->String类型 public void test4(){ int num1 = 10; //方式1:连接运算 String str1 = num1 + ""; //方式2:调用String的valueOf(Xxx xxx) float f1 = 12.3f; String str2 = String.valueOf(f1);//"12.3" Double d1 = new Double(12.4); String str3 = String.valueOf(d1); System.out.println(str2); System.out.println(str3);//"12.4" } /* * JDK 5.0 新特性:自动装箱 与自动拆箱 */ @Test public void test3(){ // int num1 = 10; // //基本数据类型-->包装类的对象 // method(num1); //自动装箱:基本数据类型 --->包装类 int num2 = 10; Integer in1 = num2;//自动装箱 boolean b1 = true; Boolean b2 = b1;//自动装箱 //自动拆箱:包装类--->基本数据类型 System.out.println(in1.toString()); int num3 = in1;//自动拆箱 } public void method(Object obj){ System.out.println(obj); } //包装类--->基本数据类型 @Test public void test2(){ Integer in1 = new Integer(12); int i1 = in1.intValue(); System.out.println(i1 + 1); Float f1 = new Float(12.3); float f2 = f1.floatValue(); System.out.println(f2 + 1); } //基本数据类型 --->包装类 @Test public void test1(){ int num1 = 10; // System.out.println(num1.toString()); Integer in1 = new Integer(num1); System.out.println(in1.toString()); Integer in2 = new Integer("123"); System.out.println(in2.toString()); //报异常 // Integer in3 = new Integer("123abc"); // System.out.println(in3.toString()); Float f1 = new Float(12.3f); Float f2 = new Float("12.3"); System.out.println(f1); System.out.println(f2); Boolean b1 = new Boolean(true); Boolean b2 = new Boolean("TrUe"); System.out.println(b2); Boolean b3 = new Boolean("true123"); System.out.println(b3);//false Order order = new Order(); System.out.println(order.isMale);//false System.out.println(order.isFemale);//null } }