第 2 课(完整版):变量与数据类型

7 阅读2分钟

一、变量 = 贴标签的盒子

int age = 18;      // 申请 int 盒子 + 贴 age 标签 + 放入 18
age = 19;          // 换新值,旧值被覆盖
  • 变量的值可变,类型不可变
  • int age = 18; 是「声明 + 赋值」的合并写法,开发中都用这种

二、八大基本数据类型

类型字节取值范围使用建议
byte1-128 ~ 127底层文件流处理
short2约 ±3.2 万几乎不用
int4约 ±21 亿整数默认用它
long8极大超大金额/时间戳,字面量加 L
float4约 7 位有效数字字面量加 f,少用
double8约 15-16 位有效数字小数默认用它
char2单个字符'A'、'中',单引号
boolean1(视 JVM)true / false判断场景

经验法则:整数用 int,小数用 double,其余了解即可。

三、基本类型 vs 引用类型(面试必问)

  • 基本类型(8 种):变量在栈中直接存值
  • 引用类型(String、数组、对象):变量在栈中存地址,真实内容在堆中

由此推出的结论:

  1. String 比较用 equals(),不能用 ==(== 比地址)
  2. 对象作为参数传入方法,方法内修改会影响外部(同一份地址)
  3. 引用类型默认值是 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。

复习清单

  1. 八大基本类型名称与用途
  2. 基本类型存值 / 引用类型存地址
  3. 三种转换场景 + 整数除法坑 + 溢出坑
  4. final 常量与命名规范

下一课预告

运算符(算术、比较、逻辑、三元)与 Scanner 键盘输入。