06-变量与常量

nobility 发布于 2025-07-08 01-Java语言基础 163 次阅读


变量与常量

变量(Variable)

定义:变量是程序中存储数据的基本单元,其值可以在程序运行过程中发生改变。

特点

  • 必须先声明,后使用。
  • 必须先初始化,后使用。
  • 必须要有明确的数据类型(比如 intdoubleString 等)。

声明语法

数据类型 变量名 = 初始值;

示例

int age = 18;

符号常量(Symbolic Constant)

定义:常量是值不能被修改的变量。

特点

  • 使用 final 关键字修饰。
  • 命名通常全大写,单词间用下划线连接。
  • 必须在声明时初始化。

声明语法

final 数据类型 常量名 = 值;

示例

final double PI = 3.14159;
// or (只需要保证只有一次赋值)
final double PI;
PI = 3.14;

字面常量(Literal Constant)

定义:直接出现在源代码中的固定值,没有变量名,直接使用值本身。

特点

  • 无标识符(没有变量名)。
  • 类型由书写形式自动确定(编译器会根据值的形式推断出其类型)。
  • 所有基本类型的值和字符串值都是字面常量。

声明语法

字面常量可能会出现在赋值语句的右侧方法参数中。

数据类型 变量名 = 初始值;
方法名(参数值);

其中 初始值参数值 就是字面常量。

示例

int age = 18;
int sum = add(1, 1);

变量与常量的区别

  • 变量可以重新赋值,常量一旦赋值就不能改变。
  • 变量命名通常使用驼峰式,常量命名通常全大写。
  • 变量可以稍后初始化,常量必须在声明时初始化。

变量的作用域(Scope)

变量只能在其定义的作用域范围内使用,作用域由代码中的花括号所圈定的。

变量的分类

变量类型 声明位置 访问方式 生命周期 默认值
静态变量 定义在类中,使用 static 关键字修饰 可以通过类名直接访问,无需实例化 类加载后即存在,直到类被卸载或程序执行结束才销毁 有默认的初始化值
成员变量 定义在类中,但不使用 static 修饰 必须通过对象实例访问 随着对象的创建而创建,随对象销毁而销毁 有默认的初始化值
局部变量 定义在方法体内(包括方法的参数)或语句块内 只能在所在方法体或代码块内访问 执行到该变量声明处时创建,方法或语句块执行完毕时销毁 没有默认的初始值,使用前必须显式赋初值

变量的默认初始值

  • 成员变量和类变量都有默认初始值,比如 int 默认为 0char 默认为 '\u0000'boolean 默认为 false,引用默认为 null
  • 局部变量没有默认值,使用前必须初始化,否则编译错误。

示例

public class Dome {
    private int age;
    private boolean sex;
    private String name;

    public void printDefault() {
        System.out.println(age); // 输出:0
        System.out.println(sex); // 输出:false
        System.out.println(name); // 输出:null
    }
}

变量的访问优先原则

  • 在同一作用域内不能声明重复变量名。
  • 成员变量和局部变量可以重名,访问时遵循“就近原则”,优先访问局部变量。
  • 如果想要访问被局部变量覆盖的成员变量,可使用 this 关键字。

示例

public class Dome {
    private String name = "全局变量";

    public void printName() {
        String name = "局部变量";
        System.out.println(name); // 输出:局部变量
        System.out.println(this.name); // 输出:全局变量
    }
}
加油啊!即便没有转生到异世界,也要拿出真本事!!!\(`Δ’)/
最后更新于 2025-07-08