/*
栈:方法只要执行,会压栈。(局部变量)
堆:new出来的对象都在堆中。垃圾回收器主要针对。(实例变量)
方法区:类的信息,字节码信息,代码片段。(静态变量)
方法的代码片段放在方法区,但是方法执行过程当中需要的内在在栈中。
*/
public class StaticTest03 {
//静态变量在什么时候初始化?类加载时初始化。
//静态变量存储在哪里?方法区
static int i = 100;
//静态代码块什么时候执行?类加载时执行。
//只要是代码一定是存储在方法区的。
static {
//这里可以访问i吗?
System.out.println("i = " +i);
}
//实例变量
int k =111;//k变量是实例变量,在构造方法执行时内存空间才会开辟。
static {
//k变量可以访问吗?
//static静态代码块在类加载时执行,并且只执行一次
//类加载时,k变量空间还没有开辟出来呢。
System.out.println("k="+k);//错误:无法从静态上下文中引用非静态变量 k
}
//入口(main方法执行之前实际上执行了很多代码)
public static void main(String[] args) {
System.out.println();
}
}
/*
总结:
到目前为止,你遇到的所有java程序,有顺序要求的是哪些?
第一:对于一个方法来说,方法体中的代码是有顺序的,遵循自上而下的顺序执行。
第二:静态代码块1和静态代码块2是有先后顺序的。
第三:静态代码块和静态变量是有先后顺序的。
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效