跳到内容

前置知识:第2章全部内容——变量声明、基本类型、var、类型转换

玩法:先做热身,再挑战,卡住了就查排障表。不要跳过直接看答案。


🔥 热身(5 分钟·必做)

每个练习新建一个 .java 文件,编译运行验证。

1. 自我介绍变量

声明以下变量并打印出来:

  • 你的年龄(int
  • 你的身高(double
  • 你的姓的首字母(char
  • 你是否喜欢编程(boolean
java
// 你的代码在这里

2. long 字面量陷阱

声明一个 long 变量赋值为 10000000000(100 亿),注意加 L 后缀。先不加 L 看看编译报什么错,再加 L 修复。

3. 超出范围的 byte

声明 byte b = 200;——观察编译错误,想想为什么(提示:byte 的范围是 -128~127)。

4. var 的类型锁定

java
var city = "Beijing";
city = 42; // 试试这个

看编译器说什么。为什么不能把数字赋给 city


⚔️ 挑战(30 分钟·选做)

挑战 1:整数溢出实验

Integer.MAX_VALUE 演示溢出。Integer.MAX_VALUE 的值是 2147483647(约 21 亿)。

java
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...。

java
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 largeint 字面量超过了 21 亿,需要加 L 变成 long
cannot find symbol变量名拼写错了,或者还没声明就用
: expected忘了写类型(Java 不是 Python——类型必须声明)
incompatible types: String cannot be converted to int试图把字符串当数字用
char cannot be converted to Stringchar 用了双引号,或者字符串用了单引号

✅ 验收标准

学完本章,你应该能:

  • [ ] 用一句话解释什么是变量("带标签的盒子"类比)
  • [ ] 写出所有 8 种基本类型的声明和初始化
  • [ ] 知道 var 的用法和限制(声明时必须赋值、类型锁定、只能用于局部变量)
  • [ ] 区分隐式转换和强制转换,知道风险
  • [ ] 演示整数除法丢失小数、浮点运算有精度误差
  • [ ] 知道 char 用单引号、String 用双引号
  • [ ] 能独立诊断 variable not initializedlossy conversion 两类编译错误

如果有一两项还不熟——正常。第3章会反复用到变量和类型,用多了自然就记住了。


📌 现在不需要理解

  • 什么是"栈"和"堆"——第5章讲方法时会揭晓
  • 基本类型和引用类型的根本区别——第7章面向对象时会提
  • String 为什么是大写开头(它是一个类,不是基本类型)——第9章字符串专题
  • 浮点数的 IEEE 754 二进制表示——感兴趣可以查,但入门不需要
  • final 关键字——第3章常量篇会覆盖

旅人笔记

变量就像一个带标签的盒子

你告诉 Java:"我要一个叫 score 的盒子,它只能装 int 类型的东西。" Java 就在内存里给你分配一个 4 字节的"盒子"。然后你把 95 放进去。以后每次用 score 这个名字,Java 就帮你打开那个盒子取出值。

八个基本类型是 Java 的"原子"——所有复杂的东西(字符串、对象、数组)最终都是由这些原子拼出来的。

老陈师傅贴的纸条:

变量让你能记住东西。 类型让你不会记错。 名字让你能找到它。


→ 下一章预告

有了变量之后,你不再只能打印固定文字。你可以把变量组合起来做计算、比对、判断——这就进入了表达式和操作符的世界。

第3章:表达式与操作符

Built with VitePress | Software Systems Atlas