每天一道面试题之浅浅讲一下java5中的自动装箱和自动拆箱

自动装箱自动拆箱

我们在java5中引入概念

把基本数据类型自动装箱成包装类

把包装类自动拆箱成基本数据类型

我们可以用javap查看字节码文件

首先我们要通过javac编译.java文件

获取字节码.class文件

然后用javap查看

源码

复制代码
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        Integer a = 1000;//装箱
        Integer b = 1000;//装箱
        System.out.println(a + b);//拆箱计算 返回值为int
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i);//装箱
        }
    }
}

包装类具有缓存机制

复制代码
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {

        Integer a1 = 1;//装箱
        Integer a2 = 1;//装箱
        System.out.println(a1 == a2);//ture

        Integer b1 = 200;//装箱
        Integer b2 = 200;//装箱
        System.out.println(b1 == b2);//false

    }
}

1.使用与整数区间-127到128之间

2.true和false的布尔值

3.\u0000 \u007f 之间的字符

只适用于自动装箱 使用构造函数创建对象不适用

这个区间内我们可以直接用==比较

我们在Integer的源码里找到了它

源于缓存

相关推荐
又见野草3 分钟前
C++类和对象(中)
开发语言·c++
危险、8 分钟前
一套提升 Spring Boot 项目的高并发、高可用能力的 Cursor 专用提示词
java·spring boot·提示词
kgduu12 分钟前
js之表单
开发语言·前端·javascript
kaico201813 分钟前
JDK11新特性
java
钊兵13 分钟前
java实现GeoJSON地理信息对经纬度点的匹配
java·开发语言
jiayong2318 分钟前
Tomcat性能优化面试题
java·性能优化·tomcat
爬山算法20 分钟前
Hibernate(51)Hibernate的查询缓存如何使用?
spring·缓存·hibernate
毕设源码-钟学长22 分钟前
【开题答辩全过程】以 基于Python的健康食谱规划系统的设计与实现为例,包含答辩的问题和答案
开发语言·python
秋刀鱼程序编程22 分钟前
Java基础入门(五)----面向对象(上)
java·开发语言
sunnyday042628 分钟前
基于Netty构建WebSocket服务器实战指南
服务器·spring boot·websocket·网络协议