前置知识:第2章全部内容——变量声明、基本类型、
var、类型转换玩法:先做热身,再挑战,卡住了就查排障表。不要跳过直接看答案。
🔥 热身(5 分钟·必做)
每个练习新建一个 .java 文件,编译运行验证。
1. 自我介绍变量
声明以下变量并打印出来:
- 你的年龄(
int) - 你的身高(
double) - 你的姓的首字母(
char) - 你是否喜欢编程(
boolean)
// 你的代码在这里2. long 字面量陷阱
声明一个 long 变量赋值为 10000000000(100 亿),注意加 L 后缀。先不加 L 看看编译报什么错,再加 L 修复。
3. 超出范围的 byte
声明 byte b = 200;——观察编译错误,想想为什么(提示:byte 的范围是 -128~127)。
4. var 的类型锁定
var city = "Beijing";
city = 42; // 试试这个看编译器说什么。为什么不能把数字赋给 city?
⚔️ 挑战(30 分钟·选做)
挑战 1:整数溢出实验
用 Integer.MAX_VALUE 演示溢出。Integer.MAX_VALUE 的值是 2147483647(约 21 亿)。
int max = Integer.MAX_VALUE;
System.out.println("最大值: " + max);
System.out.println("加 1 后: " + (max + 1));
System.out.println("加 2 后: " + (max + 2));预期输出不是更大,而是绕到了负数那一边。这就是整数溢出。
挑战 2:温度转换器
输入华氏度(double),转换为摄氏度并打印。公式:C = (F - 32) * 5 / 9。
注意整数除法的陷阱——如果用 5 / 9,结果是 0,不是 0.555...。
double fahrenheit = 100.0;
double celsius = (fahrenheit - 32) * 5 / 9; // 想想为什么这样写就对了
System.out.println(fahrenheit + "°F = " + celsius + "°C");预期输出:
100.0°F = 37.77777777777778°C
挑战 3:var + 类型推断
用 var 声明一个 float 变量,然后尝试和 double 变量做加法——看看编译器如何推断结果类型。(提示:可以用 IDE 鼠标悬停查看类型,或者用 javap 反编译。)
🔧 排障速查表
| 报错信息 | 最常见原因 |
|---|---|
variable X might not have been initialized | 声明了但没赋值就使用 |
incompatible types: possible lossy conversion | 大范围类型隐式转小范围——必须加 (cast) |
integer number too large | int 字面量超过了 21 亿,需要加 L 变成 long |
cannot find symbol | 变量名拼写错了,或者还没声明就用 |
: expected | 忘了写类型(Java 不是 Python——类型必须声明) |
incompatible types: String cannot be converted to int | 试图把字符串当数字用 |
char cannot be converted to String | char 用了双引号,或者字符串用了单引号 |
✅ 验收标准
学完本章,你应该能:
- [ ] 用一句话解释什么是变量("带标签的盒子"类比)
- [ ] 写出所有 8 种基本类型的声明和初始化
- [ ] 知道
var的用法和限制(声明时必须赋值、类型锁定、只能用于局部变量) - [ ] 区分隐式转换和强制转换,知道风险
- [ ] 演示整数除法丢失小数、浮点运算有精度误差
- [ ] 知道
char用单引号、String用双引号 - [ ] 能独立诊断
variable not initialized和lossy conversion两类编译错误
如果有一两项还不熟——正常。第3章会反复用到变量和类型,用多了自然就记住了。
📌 现在不需要理解
- 什么是"栈"和"堆"——第5章讲方法时会揭晓
- 基本类型和引用类型的根本区别——第7章面向对象时会提
String为什么是大写开头(它是一个类,不是基本类型)——第9章字符串专题- 浮点数的 IEEE 754 二进制表示——感兴趣可以查,但入门不需要
final关键字——第3章常量篇会覆盖
旅人笔记
变量就像一个带标签的盒子。
你告诉 Java:"我要一个叫 score 的盒子,它只能装 int 类型的东西。" Java 就在内存里给你分配一个 4 字节的"盒子"。然后你把 95 放进去。以后每次用 score 这个名字,Java 就帮你打开那个盒子取出值。
八个基本类型是 Java 的"原子"——所有复杂的东西(字符串、对象、数组)最终都是由这些原子拼出来的。
老陈师傅贴的纸条:
变量让你能记住东西。 类型让你不会记错。 名字让你能找到它。
→ 下一章预告
有了变量之后,你不再只能打印固定文字。你可以把变量组合起来做计算、比对、判断——这就进入了表达式和操作符的世界。
第3章:表达式与操作符