Java局部变量

对 Java 局部变量的理解

一、什么是局部变量

定义在方法内、方法参数、代码块(for/if/while)、构造方法内部的变量,统称为局部变量。

只在当前所属范围内有效,出了范围就不能使用。

二、局部变量的核心特点

  1. 作用域范围小

只在定义它的大括号{}内有效,代码执行离开这个{},局部变量立即失效、被销毁。

  1. 没有默认初始值

局部变量不会自动赋默认值(不像成员变量默认0、null),使用前必须手动赋值,否则编译报错。

  1. 不被修饰符修饰

局部变量只能用 final 修饰,不能用 private、public、protected、static 修饰。

  1. 存储位置

局部变量存放在栈内存中,方法调用结束后,栈内存自动释放,变量消失。

  1. 生命周期短

随方法/代码块执行而创建,随方法/代码块执行结束而销毁。

  1. 可以和成员变量重名

局部变量和成员变量同名时,局部变量优先(就近原则);

想要访问成员变量,需要用 this.变量名 。

三、局部变量的分类

  1. 方法形参:方法括号里定义的变量,属于局部变量。

  2. 方法内变量:方法体内部定义的变量。

  3. 代码块变量:if、for、while、{} 内部定义的变量。

四、和成员变量的核心区别

对比 局部变量 成员变量

定义位置 方法/代码块内部 类中、方法外

默认值 无默认值,必须手动赋值 有默认值

修饰符 只能用final 可用public/private/static等

内存位置 栈内存 堆内存(对象中)

作用域 当前{}内 整个类有效

生命周期 方法执行完就销毁 对象存在就存在

代码示例理解

java

public class VarTest {

// 成员变量

int num = 10;

复制代码
public void test(int a){ // a 是形参,属于局部变量
    // 局部变量
    int num = 20;
    System.out.println(num);       // 就近原则,输出20
    System.out.println(this.num);  // 访问成员变量,输出10

    if(true){
        // 代码块局部变量
        int b = 30;
        System.out.println(b);
    }
    // 这里不能使用b,超出作用域,编译报错
}

}

六、总结一句话

Java 局部变量是定义在方法/代码块内部、栈内存存储、无默认值、仅当前大括号内有效、生命周期随方法执行结束而消失的变量,遵循就近原则