一、变量 = 贴标签的盒子
int age = 18; // 申请 int 盒子 + 贴 age 标签 + 放入 18
age = 19; // 换新值,旧值被覆盖
- 变量的值可变,类型不可变
int age = 18;是「声明 + 赋值」的合并写法,开发中都用这种
二、八大基本数据类型
| 类型 | 字节 | 取值范围 | 使用建议 |
|---|---|---|---|
| byte | 1 | -128 ~ 127 | 底层文件流处理 |
| short | 2 | 约 ±3.2 万 | 几乎不用 |
| int | 4 | 约 ±21 亿 | 整数默认用它 |
| long | 8 | 极大 | 超大金额/时间戳,字面量加 L |
| float | 4 | 约 7 位有效数字 | 字面量加 f,少用 |
| double | 8 | 约 15-16 位有效数字 | 小数默认用它 |
| char | 2 | 单个字符 | 'A'、'中',单引号 |
| boolean | 1(视 JVM) | true / false | 判断场景 |
经验法则:整数用 int,小数用 double,其余了解即可。
三、基本类型 vs 引用类型(面试必问)
- 基本类型(8 种):变量在栈中直接存值
- 引用类型(String、数组、对象):变量在栈中存地址,真实内容在堆中
由此推出的结论:
String比较用equals(),不能用==(== 比地址)- 对象作为参数传入方法,方法内修改会影响外部(同一份地址)
- 引用类型默认值是
null,直接用会抛 NullPointerException
四、类型转换(4 个必背点)
// 1. 自动转换:小 → 大,安全
int a = 100; double b = a; // 100.0
// 2. 强制转换:大 → 小,砍掉小数(不是四舍五入)
int p = (int) 9.99; // 9
// 3. 整数除法坑:两个整数相除结果还是整数
System.out.println(5 / 2); // 2,不是 2.5
System.out.println(5 / 2.0); // 2.5
// 4. 溢出坑
int max = Integer.MAX_VALUE;
System.out.println(max + 1); // -2147483648
五、常量 final
final double PI = 3.14159; // 再赋值会编译报错
命名规范:全大写 + 下划线,如 MAX_COUNT、DEFAULT_PAGE_SIZE。
六、命名规范
| 类型 | 规范 | 正例 |
|---|---|---|
| 变量/方法 | 小驼峰 | studentName、getAge() |
| 类名 | 大驼峰 | StudentService |
| 常量 | 全大写下划线 | MAX_SIZE |
| 包名 | 全小写 | com.example.demo |
原则:见名知意,拒绝 int a = 1;。
七、进阶知识
// 成员变量有默认值(0 / 0.0 / false / null),局部变量没有,必须先赋值
class User {
int age; // 0
String name; // null
}
// 包装类与自动装箱
int a = 10;
Integer b = a; // 装箱
int c = b; // 拆箱
// 集合只能装对象:List<Integer> list = new ArrayList<>();
// 坑:Integer 缓存 -128~127
Integer x = 127, y = 127; // x == y → true
Integer m = 128, n = 128; // m == n → false
八、课后作业
int total = 92;
int people = 3;
double avg = total / people; // 30.0(整数除法坑)
double avg2 = (double) total / people; // 30.666...
答案:avg = 30.0,avg2 = 30.666666666666668。
复习清单
- 八大基本类型名称与用途
- 基本类型存值 / 引用类型存地址
- 三种转换场景 + 整数除法坑 + 溢出坑
- final 常量与命名规范
下一课预告
运算符(算术、比较、逻辑、三元)与 Scanner 键盘输入。