Java变量作用域由声明位置决定:①局部变量从声明行到最近},需显式初始化且同名会遮蔽;②成员变量属对象,全类可见、有默认值;③静态变量属类,全实例共享;④instanceof模式变量仅在true分支内有效。

Java 变量的作用域由声明位置决定,编译期就固定,不依赖运行时流程。理解它关键不是死记分类,而是抓住“在哪能用”“谁会盖住谁”“什么时候开始存在”这三点。
局部变量:从声明起,到最近的 } 结束
包括方法参数、方法体内定义的变量、以及任意 {} 块(如 if、for、while 内)声明的变量。
- 作用域起点是声明语句那一行,终点是它所在最内层花括号的 };
- for 循环里的 int i = 0,只在该 for 语句范围内有效,循环外访问直接报错;
- 必须显式初始化才能使用,比如 int x; 后不能直接 System.out.println(x);;
- 嵌套块中同名变量会遮蔽外层——内部声明的 name 会覆盖方法里或外层块里的同名 name,但不会改变外层变量本身。
成员变量(实例变量):整个类内可见,每个对象一份
写在类体里、所有方法和代码块之外,属于对象状态的一部分。
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
- 作用域覆盖整个类:所有非静态方法、构造器、实例初始化块都能直接访问;
- 有默认初始值(int 是 0,boolean 是 false,引用类型是 null),不用手动赋值也能编译通过;
- 与局部变量同名时,用 this.name 明确指代成员变量;
- 访问受修饰符限制:private 只能在本类用,public 则无限制。
静态变量(类变量):属于类本身,全实例共享
用 static 修饰,在类中方法外声明。
- 作用域也是整个类,但可通过 类名.变量名 直接调用,无需创建对象;
- 随类加载而初始化,生命周期贯穿程序运行全程;
- 所有实例共用同一份数据,适合计数器、配置项等跨对象场景;
- 静态方法中不能直接访问成员变量(因为没有 this),但可以访问静态变量。
instanceof 模式变量:Java 16 起的特殊局部变量
出现在 if (obj instanceof String s) 这类结构中,s 是一种带类型检查的绑定变量。
- 作用域严格限定在 if 块内,且仅当判断为 true 时才被声明并赋值;
- else 分支或 if 外部完全不可见;
- 不需要额外强转,也不会出现空指针风险,比传统写法更安全简洁。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










