Java 类的装箱和拆箱操作

package com.jasonote.classStudy;

/**
 * Created by Jasonote on 2018/1/14.
 * 包装类
 * 类的装箱和拆箱操作
 * 装箱:将基本数据类型变为包装类的形式
 * 拆箱:从包装类取出被包装的数据
 * <p>
 * 自动装箱(autoboxing)/自动拆箱(unboxing)(JDK1.5之后)
 * 什么是自动装箱拆箱
 * 一般我们要创建一个类的对象实例的时候,我们会这样:
 * <p>
 * Class a = new Class(parameter);
 * <p>
 * 当我们创建一个Integer对象时,却可以这样:
 * <p>
 * Integer i = 100; (注意:不是 int i = 100; )
 * <p>
 * 实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = Integer.valueOf(100);
 * 此即基本数据类型的自动装箱功能。
 * <p>
 * 基本数据类型与对象的差别
 * 基本数据类型不是对象,也就是使用int、double、boolean等定义的变量、常量。
 * 基本数据类型没有可调用的方法。
 * eg:  int t = 1;     t.  后面是没有方法滴。
 * Integer t =1; t.  后面就有很多方法可让你调用了。
 * <p>
 * <p>
 * 数据类型的转换
 */
public class Packagingclass {
    public static void main(String[] args) {
        Integer integer = new Integer(10);//将基本类型进行装箱操作
        int tmp = integer.intValue();//将基本类型进行拆箱操作
        System.out.println(tmp);

        //自动装箱/自动拆箱
        Integer obj = 5;//自动装箱
        int tmp2 = obj;//自动拆箱
        obj++;//包装类进行直接运算
        System.out.println(tmp2 * obj);

        Integer a = 10;
        Integer b = 10;
        Integer c = new Integer(10);

        System.out.println("a == b: " + (a == b));
        System.out.println("a == c: " + (a == c));
        System.out.println("a == c: " + (b == c));
        System.out.println("a.equals(c): " + a.equals(c));

        //在-128~127 之外的数
        Integer i1 = 200;
        Integer i2 = 200;
        System.out.println("i1==i2: " + (i1 == i2));
        System.out.println("i1.equals(i2): " + i1.equals(i2));


        // 在-128~127 之内的数
        Integer i3 = 100;
        Integer i4 = 100;
        System.out.println("i3==i4: " + (i3 == i4));
        System.out.println("i3.equals(i4): " + i3.equals(i4));

//        equals() 比较的是两个对象的值(内容)是否相同。
//        "==" 比较的是两个对象的引用(内存地址)是否相同,也用来比较两个基本数据类型的变量值是否相等。

        /**
         * 数据类型的转换
         *  Integer.parseInt()
         *  Double.parseDouble()
         *  Boolean.parseBoolean()
         */
        String str = "123a";
//        System.out.println(Integer.parseInt(str)* 2);

        String str2 = "123";
        System.out.println(Double.parseDouble(str2));

        //如果被转换的字符串不是true/false,统一认为false
        String str3 = "Jasontoe";
        System.out.println(Boolean.parseBoolean(str3));

        //数据类型转换成字符串
        double double1 = 10.07;
        //这种转换会产生""垃圾
        System.out.println(double1 + "");

        //这种不会
        System.out.println(String.valueOf(double1));


    }
}

Jason.wang

When you find your talent can't afford to be ambitious, be quiet and study !

You may also like...