日期类
包装类Wrapper
此系列笔记来源于
BiliBili韩顺平老师的Java基础课
八种基本数据类型分别对应一种包装类,可以调用类的方法

装箱 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类的常用方法
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是同一个对象,否则不是
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器