02 变量与数据类型¶
本章目标¶
- 理解什么是变量
- 掌握 8 种基本数据类型
- 掌握引用类型(String 等)
- 学会类型转换
2.1 什么是变量?¶
变量就是给数据起个名字,存在内存里。程序运行时会用到各种数据(数字、文字、真假值),我们把它们存进变量里,随时取用。
int age = 18; // 定义一个整数变量 age,赋值为 18
String name = "小明"; // 定义一个字符串变量 name,内容是"小明"
System.out.println(name + "今年" + age + "岁");
输出:
小明今年18岁
变量三要素¶
数据类型 变量名 = 初始值;
↓ ↓ ↓
int age = 18;
- 数据类型:这个变量能装什么类型的数据
- 变量名:给数据起的名字(要符合命名规则)
- 初始值:第一次放进去的数据(也可以先声明后赋值)
命名规则(必须遵守)¶
- 只能包含字母、数字、下划线
_、美元符$ - 不能以数字开头
- 不能用关键字(如
class、int、public等) - 习惯上用小驼峰:
myAge、playerCount、totalScore
错误示范
int 2x = 5; ❌ 数字开头
int class = 5; ❌ 用了关键字
String 名字 = "小明"; ✅ 其实中文变量名合法,但不建议
2.2 基本数据类型(8 种)¶
Java 有 8 种基本类型,分三类:
整数型(4 种)¶
| 类型 | 占用 | 取值范围 | 例子 |
|---|---|---|---|
byte |
1 字节 | -128 ~ 127 | byte b = 100; |
short |
2 字节 | 约 -3.2万 ~ 3.2万 | short s = 30000; |
int |
4 字节 | 约 ±21亿 | int i = 1000000; |
long |
8 字节 | 极大 | long l = 10000000000L; |
最常用的是 int。long 类型赋值时末尾要加 L 或 l。
浮点型(2 种)¶
| 类型 | 占用 | 说明 | 例子 |
|---|---|---|---|
float |
4 字节 | 单精度,末尾要加 F |
float f = 3.14F; |
double |
8 字节 | 双精度,默认 | double d = 3.14; |
最常用的是 double。模组里坐标、速度都是 double。
字符与布尔(2 种)¶
char c = 'A'; // 单个字符,用单引号
boolean flag = true; // 布尔值:true / false
boolean 只有两个值,用于判断。模组里"方块有没有被激活""玩家是不是生存模式"都用它。
2.3 引用类型:String¶
String 是引用类型(不是基本类型),表示一串字符:
String name = "小明";
String greeting = "你好,";
System.out.println(greeting + name); // + 号拼接字符串
String 本身是类,有很多方法(第 10 章详细讲):
String s = "Hello World";
System.out.println(s.length()); // 长度:11
System.out.println(s.toUpperCase()); // 转大写:HELLO WORLD
基本类型 vs 引用类型¶
| 基本类型 | 引用类型 | |
|---|---|---|
| 存的什么 | 真正的值 | 对象的"地址"(引用) |
| 例子 | int、double、boolean | String、数组、后面学的类 |
| 默认值 | 0 / 0.0 / false | null(空) |
null 是什么
引用类型变量没有指向任何对象时是 null。对 null 调用方法会报 NullPointerException(空指针异常)——这是 Java 最常见的报错,第 12 章会讲怎么处理。
2.4 类型转换¶
自动转换(小范围 → 大范围)¶
int a = 10;
double b = a; // int 自动变成 double,安全
System.out.println(b); // 10.0
强制转换(大范围 → 小范围,可能丢失精度)¶
double d = 9.8;
int i = (int) d; // 强制转换,直接砍掉小数
System.out.println(i); // 9
常见坑:整数除法¶
int a = 7;
int b = 2;
System.out.println(a / b); // 3 !不是 3.5
两个整数相除结果是整数(向下取整)。想要小数,至少要有一个是 double:
System.out.println((double) a / b); // 3.5
System.out.println(a / (double) b); // 3.5
字符串转数字 / 数字转字符串¶
String num = "42";
int n = Integer.parseInt(num); // "42" -> 42
double d = Double.parseDouble("3.14");
int x = 99;
String s = String.valueOf(x); // 99 -> "99"
2.5 常量与 var¶
final 常量¶
final double PI = 3.14159;
// PI = 3.0; // ❌ 报错:final 变量不能重新赋值
模组开发里大量使用 final(比如注册名、配置项)。
var(Java 10+)¶
var name = "小明"; // 编译器自动推断类型,等价于 String name = "小明"
var age = 18; // 等价于 int age = 18
var 只是偷懒写法,类型还是要明确知道。项目里建议:局部变量可用 var,其他场合写清楚类型。
2.6 小练习¶
- 定义变量:你的名字(String)、年龄(int)、身高(double)、是否成年(boolean),打印出来
- 算
10 / 4和10.0 / 4的区别 - 把
"123"转成 int 再乘 2 输出
本章小结¶
- 变量 = 数据类型 + 变量名 + 值
- 基本类型 8 种:byte/short/int/long/float/double/char/boolean
- String 是引用类型,用双引号
- 整数相除会丢小数,注意转换
- final 定义常量,var 让编译器推断类型
下一章:03 运算符与表达式