第 2 章:变量、基本类型与运算
学习目标
- 理解变量的本质和命名规范
- 掌握 8 种基本类型及其使用场景
- 学会算术 / 关系 / 逻辑运算
- 避开类型转换和运算的常见坑
一、变量:给数据起个名字
变量 = 一块内存 + 一个类型 + 一个名字 + 一个值。
java
int age = 18; // 整型
String name = "张三"; // 字符串(引用类型)
double salary = 3.5; // 浮点
boolean isActive = true; // 布尔⚠️ 坑 1:Java 是强类型,变量必须先声明类型,且类型一旦确定不能改。
二、8 种基本类型(够用版)
| 类型 | 关键字 | 字节 | 取值 | 默认值 |
|---|---|---|---|---|
| 整数 | byte | 1 | -128 ~ 127 | 0 |
| 整数 | short | 2 | -3 万 ~ 3 万 | 0 |
| 整数 | int | 4 | ±21 亿(最常用) | 0 |
| 整数 | long | 8 | 极大(加 L 后缀) | 0L |
| 浮点 | float | 4 | 加 f 后缀 | 0.0f |
| 浮点 | double | 8 | 默认(常用) | 0.0d |
| 字符 | char | 2 | 单个字符,用单引号 | '\u0000' |
| 布尔 | boolean | - | true / false | false |
实战中 99% 的场景:int、long、double、boolean、String(引用类型)。
三、字面量写法
java
int a = 100; // 整数默认 int
long b = 100L; // ⚠️ long 必须加 L,否则按 int 处理(超过 int 范围报错)
float c = 3.14f; // ⚠️ float 必须加 f
double d = 3.14; // double 默认
char e = 'A'; // 单引号是字符
String f = "Hello"; // 双引号是字符串
boolean g = true;四、变量命名规范
java
int userAge = 18; // ✅ 小驼峰
String userName = "张三"; // ✅ 见名知意
final int MAX_COUNT = 100; // ✅ 常量大写+下划线
int a = 1; // ⚠️ 单字母只在循环里用
String yhxm = "张三"; // ❌ 别用拼音五、算术运算
java
int a = 10, b = 3;
a + b // 13
a - b // 7
a * b // 30
a / b // 3(整数除法,截断小数)
a % b // 1(取余)⚠️ 坑 2:整数除法截断小数,
5 / 2 = 2(不是 2.5)。要小数就强转:5.0 / 2 = 2.5。
自增自减(i++ / ++i):单独使用没区别,别塞进复杂表达式(int j = i++ + ++i;——企业代码绝对禁止)。
六、关系运算(返回 boolean)
java
int a = 10, b = 20;
a > b // false
a <= b // true
a == b // false(值相等)
a != b // true⚠️ 坑 3:
==比较基本类型比值,比较引用类型(如String)比地址。javaString a = new String("hi"); String b = new String("hi"); a == b // false(地址不同) a.equals(b) // true(值相同) ✅ 字符串比较永远用 equals
七、逻辑运算
java
boolean a = true, b = false;
a && b // 逻辑与(短路):左边 false 就不算右边
a || b // 逻辑或(短路):左边 true 就不算右边
!a // 逻辑非短路求值的实战意义(避免空指针):
java
if (obj != null && obj.method() > 0) {
// 先判空,确保 obj 不为 null 才调用方法
}八、三元运算符
java
int age = 20;
String status = age >= 18 ? "成年" : "未成年";九、类型转换
自动转换(小 → 大),无需操作:
java
int i = 100;
long l = i; // int → long
double d = i; // int → double强制转换(大 → 小),可能丢精度:
java
double pi = 3.14;
int i = (int) pi; // 3(直接截断小数,不是四舍五入)⚠️ 坑 4:
double转int是截断不是四舍五入,Math.round()才是四舍五入。 ⚠️ 坑 5:金融计算别用double,会出现0.1 + 0.2 = 0.30000000000000004,要用BigDecimal(后续章节讲)。
十、字符串拼接
+ 可以把字符串和任何类型拼接:
java
String name = "张三";
int age = 18;
System.out.println("我叫" + name + ",今年" + age + "岁");
// 输出:我叫张三,今年18岁十一、本章小结
| 要点 | 关键 |
|---|---|
| 变量 | 类型 + 名字 + 值,必须先声明类型 |
| 8 种基本类型 | int / double / boolean / long 最常用 |
| 整数除法 | 5/2=2,要小数得强转 |
== vs equals | 基本类型用 ==,引用类型用 equals |
| 强转 | 大转小可能丢精度,截断小数 |
| 短路 | && || 左边定结果就不算右边 |
动手练习
- 温度转换:摄氏转华氏
F = C × 9/5 + 32,输入 25°C,输出华氏度 - 平均分计算:3 个成绩求平均,注意整数除法的坑
- 判断闰年:年份能被 4 整除且不能被 100 整除,或能被 400 整除
- 字符串拼接练习:打印
XX 今年 XX 岁,XX 性别,用变量
下一章:第 3 章:流程控制、方法与数组 →