Java 基础:变量、常量和标识符
标识符(Identifiers)
在 Java 编程中,标识符用于命名类、方法、变量等代码元素。需要遵循以下规则:
- 组成规则:只能由字母、数字、下划线和美元符号
$
组成。 - 首字符限制:不能以数字开头。
- 关键字限制:不能使用 Java 的关键字或保留字,如
class
、public
等。 - 大小写敏感:区分大小写,
Variable
和variable
是不同的标识符。 - 命名规范:
- 类名:首字母大写,遵循大驼峰命名法,例如
MyClass
。 - 方法名和变量名:首字母小写,遵循小驼峰命名法,例如
myMethod
、myVariable
。
- 类名:首字母大写,遵循大驼峰命名法,例如
- 可读性:命名应语义清晰,便于理解和维护。
- 其他限制:
- 不允许有空格。
- 不建议使用中文字符,避免编码和兼容性问题。
访问控制修饰符
访问控制修饰符用于定义类、方法和变量的可见性范围:
public
:公共的,任何类都可以访问。private
:私有的,只能在所属类内部访问。protected
:受保护的,在同一包内或子类中访问。- 默认(不加修饰符):包级私有,只能在同一包内访问。
其他常用修饰符:
static
:静态的,表示属于类而非实例。final
:最终的,表示不可改变的变量、方法或类。abstract
:抽象的,用于定义抽象类和抽象方法。synchronized
:同步的,确保线程安全。native
:本地的,用于调用非 Java 代码。strictfp
:严格的,确保浮点运算的精确性。transient
:短暂的,序列化时忽略的变量。volatile
:易变的,多线程环境下保证变量的可见性。
变量
变量是内存中存储数据的基本单元,代表特定的一块存储空间,用于保存可变的数据。
变量的三要素
在 Java 这类强类型语言中,变量具有以下三要素:
- 变量类型:定义存储值的数据类型,例如
int
、String
。 - 变量名:标识这块存储空间的名称。
- 变量值:存储在变量中的实际数据。
int age = 20;
// 类型 变量名 值
内存空间示例
以下代码展示了变量在内存中的工作方式:
public class SumExample {
public static void main(String[] args) {
int firstNumber = 1;
int secondNumber = 2;
System.out.println(firstNumber + secondNumber);
}
}
在这段代码中:
int firstNumber
在内存中分配了一个 32 位的整型空间。firstNumber
指向该内存地址,例如0x000fff
。- 将值
1
赋给firstNumber
,在内存中以 32 位二进制形式存储。 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
通过拼接得到,体现了常量的不可变性。