背景与动机
变量是程序保存数据的名字,类型决定这个变量能保存什么值、能参与哪些操作。
Java 是静态类型语言,变量在使用前必须先声明类型。这样做的好处是编译期能提前发现很多类型错误,代价是写代码时需要更明确地表达数据形态。
核心原理拆解
1. 变量声明
变量声明的基本格式是:
类型 变量名 = 初始值;例如:
int age = 18;String name = "Tom";局部变量必须先赋值再使用,否则编译器会报错。
命名规则:
- 只能包含字母、数字、_和$符,并且不能以数字开头
- 严格区分大小写
- 不能使用关键字
- 可以中文命名,但不建议
建议”英文的见名知意”、“驼峰命名法”
2. Java 的 8 种基本数据类型
Java 基本类型分为 4 类:
- 整数:
byte、short、int、long - 浮点数:
float、double - 字符:
char - 布尔:
boolean
常用默认选择:
- 整数优先用
int - 长整数用
long - 小数优先用
double - 判断条件用
boolean

3. 基本类型和引用类型
基本类型变量直接保存值,例如:
int n = 10;引用类型变量保存对象的引用,例如:
String text = "hello";可以先粗略理解为:基本类型更像“值本身”,引用类型更像“指向对象的入口”。

4. 常量使用 final
Java 使用 final 声明不可重新赋值的变量:
final int MAX_RETRY = 3;final 修饰变量后,只能赋值一次。常量名通常使用大写字母和下划线。
5. 成员变量有默认值,局部变量没有可用默认值
类的成员变量如果没有显式赋值,会有默认值:
- 数值类型默认
0 boolean默认falsechar默认空字符- 引用类型默认
null
但方法内部的局部变量必须先赋值才能使用。
最小可运行代码示例
public class VariableDemo { public static void main(String[] args) { int age = 18; long total = 10000000000L; double price = 19.9; char level = 'A'; boolean active = true; final int MAX_RETRY = 3;
System.out.println(age); System.out.println(total); System.out.println(price); System.out.println(level); System.out.println(active); System.out.println(MAX_RETRY); }}常见陷阱与错误示例
1. long 字面量忘记加 L
错误示例:
long n = 10000000000;整数默认按 int 处理,超出范围会报错。应写成:
long n = 10000000000L;2. float 字面量忘记加 F
错误示例:
float price = 19.9;小数字面量默认是 double。如果要赋给 float,应写成:
float price = 19.9F;3. 局部变量未初始化就使用
错误示例:
int count;System.out.println(count);局部变量没有可直接读取的默认值,必须先赋值。
面试高频问题
1. Java 有哪些基本数据类型
Java 有 8 种基本类型:byte、short、int、long、float、double、char、boolean。
2. final 修饰变量是什么意思
final 修饰变量表示该变量只能赋值一次,之后不能重新指向新值或新对象。
3. 基本类型和引用类型有什么区别
基本类型保存具体值,引用类型保存对象引用。引用类型变量可能为 null,基本类型变量不能为 null。
一句话总结
Java 变量的核心是“先声明类型,再保存数据”:基本类型保存值,引用类型保存对象引用,常量用 final 约束不可重新赋值。