static
- 修饰成员变量,静态变量不属于对象,属于类变量,凡是这个类创建出来的对象,都可以共享这个变量
- 修饰方法,也是属于类的方法
final
- final 修饰的类不能被继承
- final 修饰的对象,地址不能改变,对象属性值可以
- final 修饰的方法不能被重写
- final 修饰局部变量,不能二次赋值,申明时可以不赋值
- final 修饰成员变量,不能二次赋值,申明时必须赋初值
代码块
- 普通代码块,每次 new 对象时执行,先于构造方法执行
- 静态代码块,只执行一次,先于普通代码块执行
- 无论 new 多少次,只会执行一次
- 适用场景:静态代码块中初始化一些数据,这个对象无论 new 对少个对象都会有这些初始化好的数据
初始化顺序
- 不存在父类
- 静态变量
- 静态代码块
- 成员变量
- 普通代码块
- 构造方法
- 存在父类的初始化顺序
- 父类(静态变量、静态语句块)
- 子类(静态变量、静态语句块)
- 父类(实例变量、普通语句块)
- 父类(构造函数)
- 子类(实例变量、普通语句块)
- 子类(构造函数)
缓存池
- boolean 缓存池数据:true、false
- short 缓存池数据:-128 至 127
- int 缓存池数据:-128 至 127
Integer m = 123;
Integer n = 123;
System.out.println(m == n);
Integer m1 = 323;
Integer n1 = 323;
System.out.println(m1 == n1);
JAVA是值传递
- 对于基本数据类型(如int、float等),传递的是它们的值的副本
- 对于对象引用(如String、数组、自定义对象等),传递的是对象引用的副本
public class Main {
public static void main(String[] args) {
int x = 10;
increment(x);
int[] arr = {1, 2, 3};
changeArray(arr);
changeArray(arr);
}
public static void increment(int num) {
num++;
}
public static void changeArray1(int[] arr) {
arr[0] = 100;
}
public static void changeArray2(int[] arr) {
arr = {4, 5, 6};
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具