跳到主要内容

Java 基础:变量、常量和标识符

标识符(Identifiers)

在 Java 编程中,标识符用于命名类、方法、变量等代码元素。需要遵循以下规则:

  • 组成规则:只能由字母、数字、下划线和美元符号$组成。
  • 首字符限制:不能以数字开头。
  • 关键字限制:不能使用 Java 的关键字或保留字,如classpublic等。
  • 大小写敏感:区分大小写,Variablevariable是不同的标识符。
  • 命名规范
    • 类名:首字母大写,遵循大驼峰命名法,例如MyClass
    • 方法名和变量名:首字母小写,遵循小驼峰命名法,例如myMethodmyVariable
  • 可读性:命名应语义清晰,便于理解和维护。
  • 其他限制
    • 不允许有空格。
    • 不建议使用中文字符,避免编码和兼容性问题。

访问控制修饰符

访问控制修饰符用于定义类、方法和变量的可见性范围:

  • public:公共的,任何类都可以访问。
  • private:私有的,只能在所属类内部访问。
  • protected:受保护的,在同一包内或子类中访问。
  • 默认(不加修饰符):包级私有,只能在同一包内访问。

其他常用修饰符:

  • static:静态的,表示属于类而非实例。
  • final:最终的,表示不可改变的变量、方法或类。
  • abstract:抽象的,用于定义抽象类和抽象方法。
  • synchronized:同步的,确保线程安全。
  • native:本地的,用于调用非 Java 代码。
  • strictfp:严格的,确保浮点运算的精确性。
  • transient:短暂的,序列化时忽略的变量。
  • volatile:易变的,多线程环境下保证变量的可见性。

变量

变量是内存中存储数据的基本单元,代表特定的一块存储空间,用于保存可变的数据。

变量的三要素

在 Java 这类强类型语言中,变量具有以下三要素:

  • 变量类型:定义存储值的数据类型,例如intString
  • 变量名:标识这块存储空间的名称。
  • 变量值:存储在变量中的实际数据。
int age = 20;
// 类型 变量名 值

内存空间示例

以下代码展示了变量在内存中的工作方式:

public class SumExample {
public static void main(String[] args) {
int firstNumber = 1;
int secondNumber = 2;
System.out.println(firstNumber + secondNumber);
}
}

在这段代码中:

  1. int firstNumber在内存中分配了一个 32 位的整型空间。
  2. firstNumber指向该内存地址,例如0x000fff
  3. 将值1赋给firstNumber,在内存中以 32 位二进制形式存储。
  4. System.out.println(firstNumber + secondNumber);读取变量的值,计算并输出结果3

常量

常量是值在程序运行过程中不可改变的量,一旦赋值后无法修改。

  • 命名规范:全部大写,单词间用下划线分隔,例如MAX_VALUE
  • 声明方式:使用关键字final
public class ConstantExample {
public static void main(String[] args) {
final int WEEK_DAYS = 7;
final String MESSAGE = "Hello, Java!";

// 常量之间可以进行计算
final int NUMBER_ONE = 1;
final int NUMBER_TWO = 2;
final int SUM = NUMBER_ONE + NUMBER_TWO;
System.out.println(SUM); // 输出 3

// 常量可以由常量和变量计算得到,但只能赋值一次
int multiplier = 2;
final int PRODUCT = NUMBER_ONE * multiplier;
System.out.println(PRODUCT); // 输出 2

// 字符串常量的拼接
String greeting = "The sum is: ";
final String RESULT = greeting + SUM;
System.out.println(RESULT); // 输出 "The sum is: 3"
}
}

在上述代码中:

  • 常量SUM由其他常量计算得到。
  • 常量PRODUCT由常量和变量计算得到,但一旦赋值后不可更改。
  • 字符串常量RESULT通过拼接得到,体现了常量的不可变性。