日期类

包装类Wrapper

此系列笔记来源于

BiliBili韩顺平老师的Java基础课


八种基本数据类型分别对应一种包装类,可以调用类的方法

image-20220330125424744

装箱 and 拆箱

jdk5前是手动装箱和拆箱:

//int 和 Integer 的装箱和拆箱
int n = 100;
//手动装箱(两种)
Integer integer1 = new Integer(n);
Integer integer1 = Integer.valueOf(n);

//手动拆箱
int n = integer1.intValue();

jdk5后是自动装箱和自动拆箱:

//自动装箱
int n = 200;
Integer integer1 = n; //底层用的是Integer.valueOf(n),本质未变

//自己拆箱
int n = integer1; //底层仍然使用的是 intValue()方法

其他包装类用法类似。

练习(经典面试题):

Object obj1 = true ? new Integer(1) : new Double(2.0);
//输出obj1, 输出1.0

Object obj2;
if (true) {
    obj2 = new Integer(1);
} else {
    obj = new Double(2.0);
}
//输出obj2, 输出1

//三目运算符是一个整体, 后面的 Double 会提升精度

包装类方法

包装类型和 String类型的互相转换

(以Integer为例)

Integer 转 String

Integer n = 1;

//方式1 
String s = n + "";

//方式2
String s = n.toString();

//方式3
String s = String.valueOf(n);

String 转 Integer

String s = "wuhu";

//方式1
Integer n = Integer.parseInt(s); //使用到了自动装箱

//方式2
Integer n = new Integer(s)

Integer类和 Character类的常用方法

image-20220330134331508

Integer创建机制

//Integer valueOf(int i) 的源码
@IntrinsicCandidate
    public static Integer valueOf(int i) {
        //范围为[-128, 127]
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            //实际未创建新对象
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i); //创建了新对象
    }

因此

Integer n = x; //本质上是valueOf

Integer m = x;

此时如果x在[-128, 127]内,则n 和 m是同一个对象,否则不是

posted @   Yra  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示