1. 什么是变量?为什么需要它?

📦 生活类比——储物盒:变量就是贴了名字标签的储物盒。
你往盒子里放东西(赋值),想用的时候喊盒子的名字(读值),还可以换里面的东西(重新赋值)。
盒子有"类型":有的只能放数字,有的只能放文字——这是 Java 的规矩(强类型语言)。
变量的完整写法:类型 + 名字 + 值
// 格式:数据类型 变量名 = 值;
int age = 25;            // 声明一个"整数盒子"叫 age,放 25
String name = "张三";     // 声明一个"字符串盒子"叫 name,放 "张三"
double price = 9.9;       // 小数盒子 price
boolean isOk = true;      // 真假盒子 isOk(true/false)

// 用变量(读值)
System.out.println(name + "今年 " + age + " 岁");
张三今年 25 岁

// 重新赋值(换盒子里的东西)
age = 26;                // 注意:这里不用再写 int,只有第一次声明才写类型

🎯 关键点

  • 变量 = 类型 + 名字 + 值;先声明后使用
  • 重新赋值不再写类型;变量名不能重复声明
  • String 是"字符串"类型(双引号包文字);其他基本都是基础类型(下一节)

2. Java 的 8 种基本数据类型(背下来)

类型 字节 范围 例子
byte1-128 ~ 127byte b = 100;
short2-32768 ~ 32767short s = 20000;
int4-21 亿 ~ 21 亿int age = 25;(整数默认)
long8超大数字long l = 9999999999L;(加 L)
double8小数(默认)double p = 3.14;
float4小数(精度低)float f = 1.5F;(加 F)
char2单个字符char c = 'A';(单引号!)
booleanJVM 相关true / falseboolean ok = true;

记忆分组:

🎯 易错提醒

  • 整数默认 int,小数默认 double——long 数字要加 L,float 要加 F
  • char 用单引号,String 用双引号——写错是新手高频报错
  • String 不是基本类型(是类),但使用频率最高,先当"特殊基本类型"用

3. 变量命名规则与规范?

硬性规则(不遵守编译报错):

规范(习惯,建议遵守):

命名示例
// ✅ 好名字
int userAge = 25;
double orderPrice = 99.5;
String studentName = "小明";

// ❌ 坏名字(不报错但不规范)
int a = 25;      // a 是什么?
int 2age = 25;  // 报错:数字不能开头
int class = 1;   // 报错:class 是关键字

4. 类型转换:自动转换和强制转换?

自动类型转换(小 → 大,无需写代码):就像把小杯水倒进大桶,不会洒。

自动转换:范围小的自动变范围大的
int a = 10;
double b = a;          // int → double 自动转,b = 10.0
System.out.println(b);
10.0

强制类型转换(大 → 小,要写 (类型)):大桶倒小杯,可能"洒"(丢失精度/溢出)。

强制转换:可能丢精度
double d = 3.99;
int i = (int) d;       // 强制转换,小数部分直接砍掉
System.out.println(i);
3   // 注意:不是四舍五入,是直接截断!
经典陷阱:整数除法
int a = 7, b = 2;
System.out.println(a / b);    // 整数 ÷ 整数 = 整数:结果是 3(不是 3.5!)
3

// 想得到小数:先让其中一个变成小数
System.out.println(a / (b * 1.0));   // 7 / 2.0 = 3.5
3.5

✍️ 练习题(自己先写,再对照运行结果)

  • 1. 定义变量保存:你的年龄(int)、体重(double)、姓名(String)、是否学生(boolean),并打印
  • 2. 打印 10 / 3 和 10.0 / 3 的结果,观察区别
  • 3. 把 double 3.7 强转成 int 再打印,结果是多少?(答案:3)
  • 4. 下面哪个变量名合法?A: 2name B: name2 C: my-name D: my_name
  • 5. 报错排查:int x = "10"; 为什么错?(类型不匹配,字符串不能直接给 int)
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。