java — 包装类记录

一、java包装类的理解

java — 包装类记录_第1张图片

二、包装类的用处:

传统的基本数据类型不能作为对象使用,局限性很大,比如一个方法需要用到对象作为参数时,基本数据类型时不可以作为参数的,这就比较难处理。包装类让基本数据类型有了对象的属性,java也为这些包装类提供和很多方法,方便处理数据。

1. 基本数据类型 -> 包装类
①. 调用包装类构造器(已过时)
②. 调用valueOf方法
③. 自动装箱

public void test() {
     
        //方法1. 调用包装类的构造器
        int i = 10;
        //很明显,这种写法已经过时了,不建议使用
        //源码:@Deprecated(since="9")
        Integer integer = new Integer(i);
        System.out.println(integer);//10

        Integer in2 = new Integer("123");
        System.out.println(in2.toString());//123

        Float f1 = new Float("12.3");
        System.out.println(f1.toString());//12.3

        Boolean b1 = new Boolean("false"); //false
        System.out.println(b1);
        Boolean b2 = new Boolean("true");  //true
        System.out.println(b2);
        Boolean b3 = new Boolean("falseAndTrue"); //false
        System.out.println(b3);

        //方法2. valueOf
        int i1 = 10;
        Integer integer1 = Integer.valueOf(i1);
        System.out.println(integer1);//10
        float f2 = 10.0F;
        Float float1 = Float.valueOf(f2);
        System.out.println(f2); //10.0
        
        //方法3.自动装箱 JDK1.5
        int i2 = 10;
        Integer integer2 = i2;
        System.out.println(integer2);
    }


2. 包装类 -> 基本数据类型
①. 调用包装类的xxxValue
②. 自动拆箱

public void test1(){
     
        //方法1. 调用xxxValue
        int i = new Integer(12).intValue();
        System.out.println(i);//12
        int i1 = Integer.valueOf(12).intValue();
        System.out.println(i1);
        boolean b1 = Boolean.valueOf("true").booleanValue();
        System.out.println(b1);
        //同样对于其他基本数据类型成立,这里不做测试

        //方法2.自动拆箱
        Integer integer = 5;
        Float f = 5.0f;
        Double d = 5.0;
        Boolean b = false;
    }


3.基本数据类型转换成String

①. 用基本数据类型 + " "
②. 使用String的valueOf方法

public void test2(){
     
        //1. 基本语法
        String s4 = 1 + "";
        System.out.println(s4);//1
        //其他就不做测试了

        //2. 使用valueOf
        String s1 = String.valueOf(1);
        String s2 = String.valueOf(12.3f);
        String s3 = String.valueOf(true);
        //其实可以看到String内部的构造器是很多种的,char[], Object等等
        
    }


4. String ->基本数据类型

使用包装类的parseXxx

 @Test
    public void test3(){
     
        String s = "123";
        int i = Integer.parseInt(s);
        System.out.println(i);//123

        String s1 = "true";
        boolean b = Boolean.parseBoolean(s1);
        System.out.println(s1);//true

        String s2 = "1234f";
        float f = Float.parseFloat(s2);
        System.out.println(f);//1234.0

    }


三、注意点

public void test4(){
     
        Integer i1 = 2;
        Integer i2 = 2;
        System.out.println(i1 == i2);//true

        Integer i3 = 128;
        Integer i4 = 128;
        System.out.println(i3 == i4);//false
        System.out.println(i3.equals(i4));//true
    }

输出的i1 == i2,和输出的i3 == i4结果不同,这是因为在java中如果范围是在 -128 ~ 127 之间的数,系统会放在cache[]数组中,在使用的时候实际上是引用了数组元素比较。不在这个范围的数,系统就会去new一个Integer实例,导致比较的是地址值,结果不相同。所以使用比较还是最好用equals



如有错误,欢迎指出

你可能感兴趣的:(笔记,java)