Java基础类型对应的8个包装类 自动装箱 自动拆箱

鳄鱼君

发表文章数:642

热门标签

,

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Java » Java基础类型对应的8个包装类 自动装箱 自动拆箱

Java中为8中基本数据类又对应准备了8种包装类型。8种包装类属于引用数据类型,父类是Object
包装类的意义:

public class IntegerTest {
    public static void main(String[] args) {
        // 调用doSome方法的时候传递一个数字
        // 但是数字属于基本数据类型,而doSome方法参数为Object
        // 这时候需要将数字包装为一个Object
        MyInt i = new MyInt(123);
        doSome(i);
    }
    public static void doSome(Object obj){
        System.out.println(obj);
    }
}
class MyInt{
    int value;

    public MyInt(int value) {
        this.value = value;
    }
    public MyInt() {
    }

    public String toString(){
        return String.valueOf(value);
    }
}

实际开发中,不需要自己写包装类,SUN已经为我们提供了8种包装类:

基本数据类型 包装类型
byte java.lang.Byte(父类Number)
short java.lang.Short(父类Number)
int java.lang.Integer(父类Number)
long java.lang.Long(父类Number)
float java.lang.Float(父类Number)
double java.lang.Double(父类Number)
boolean java.lang.Boolean(父类Object)
char java.lang.Character(父类Object)
public class IntegerTest {
    public static void main(String[] args) {
        // 123基本数据类,进行构造方法的包装达到了:基本数据类型想引用数据类型的转换
        // 装箱
        Integer i = new Integer(123);

        // 将引用数据类型转换为基本数据类型--拆箱
        float f = i.floatValue();
        System.out.println(f);//123.0
    }

}

Integer的构造方法:

public class IntegerTest {
    public static void main(String[] args) {
        // Java9之后不建议使用这个构造方法
        // 将数字100转换为Integer包装类型
        Integer i1 = new Integer(100);
        System.out.println(i1);//100
        // 将String类型的数字,转换为Integer包装类型
        Integer i2 = new Integer("110");
        System.out.println(i2);//110
    }

}

通过访问包装类的常量,获取最大值和最小值:

public class IntegerTest {
    public static void main(String[] args) {
        // 通过访问包装类的常量,获取最大值和最小值
        System.out.println("byte最大值:" + Byte.MAX_VALUE + 
                ",byte最小值:" + Byte.MIN_VALUE);
        System.out.println("short最大值:" + Short.MAX_VALUE + 
                ",short最小值:" + Short.MIN_VALUE);
        System.out.println("int最大值:" + Integer.MAX_VALUE + 
                ",int最小值:" + Integer.MIN_VALUE);
        System.out.println("long最大值:" + Long.MAX_VALUE + 
                ",long最小值:" + Long.MIN_VALUE);
    }
}

JDK1.5之后,支持自动拆箱和自动装箱:

  1. 自动装箱:基本数据类型–》引用数据类型
  2. 自动拆箱:引用数据类型–》基本数据类型
public class IntegerTest {
    public static void main(String[] args) {
        // 自动装箱  int类型————自动转换为————》Integer
        Integer i = 100;
        System.out.println(i);//100
        // 自动拆箱  Integer类型————自动转换为————》int
        int j = i;
        System.out.println(j);//100

        Integer k = 100;
        // 自动拆箱
        System.out.println(k + 1);//101
    }
}

java种为了提高程序的执行效率,将-128~127之间所有的包装对象提前创建好, 放到了方法区的”整数型常量池“当中,目的是只要用这个区间的数据不需要再new,直接从整数型常量池当中取就可以:

public class IntegerTest {
    public static void main(String[] args) {
        Integer a = 128;
        Integer b = 128;
        System.out.println(a == b);// false
        
        Integer c = 127;
        Integer d = 127;
        System.out.println(c == d);// true
    }
}
标签:

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《Java基础类型对应的8个包装类 自动装箱 自动拆箱》 发布于2020-08-13

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

7 + 9 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册