int变量必须显式声明类型并以分号结尾,如int count = 10;;double字面量默认为double类型,赋值给float需加F后缀或强制转换,且不可用==比较浮点数相等。

声明并初始化 int 变量时,别漏掉分号和类型关键字
Java 是强类型语言,int 必须显式声明类型,不能像 JavaScript 那样用 let 或 var 混用。常见错误是写成 i = 42(编译报错:找不到符号),或者忘记分号导致后续语句连在一起出错。
- 正确写法:
int count = 10;—— 声明 + 初始化一步到位 - 也可以分两步:
int age;然后age = 25;,但未赋值前直接读取会编译失败(局部变量不自动初始化) - 注意:
int范围是 -2³¹ 到 2³¹−1,超限如int x = 2147483648;会编译报错integer number too large
double 初始化要小心默认类型和小数点
写 3.14 这样的字面量,默认是 double 类型,但如果你写成 float pi = 3.14; 就会报错:可能的精度丢失。因为 3.14 是 double,赋给 float 需显式强制转换或加 F 后缀。
- 正确初始化
double:double price = 99.99;或double rate = 0.05d;(d后缀可省略) - 避免写
double value = 10;—— 虽然合法,但建议写10.0更明确意图 - 不要用
==直接比较double值是否相等,浮点误差会导致意外结果;该用Math.abs(a - b)
boolean 只能是 true 或 false,不能用 0/1 或字符串
Java 的 boolean 是独立类型,不是整数,也不是字符串。写 boolean flag = 1; 或 boolean active = "true"; 全部编译失败 —— 这点和 C/C++、Python 完全不同,容易从其他语言迁移时踩坑。
- 合法值只有两个:
true和false(全小写,不是True或TRUE) - 成员变量(类字段)未初始化时默认为
false;但局部变量必须显式赋值才能使用 - 别把
Boolean(包装类)和boolean(基本类型)混淆:前者可为null,后者永远非空
初始化时机影响作用域和线程安全
在方法内声明并初始化,是线程安全的(每个线程栈独立);但在类里声明为 static 字段,多个线程可能同时访问,如果初始化过程有副作用(比如依赖外部状态),就可能出问题。
立即学习“Java免费学习笔记(深入)”;
- 推荐在声明处直接初始化:
private static final int MAX_RETRY = 3;—— 清晰、不可变、线程安全 - 避免在构造函数里做复杂初始化逻辑,尤其涉及 I/O 或锁;基础类型尽量用字面量或常量表达式
- 注意:
final修饰的基本类型变量,一旦初始化就不能再改,但不等于“初始化过程本身是原子的”——比如final double ratio = computeRatio();,computeRatio()仍可能被并发调用
初始化本身很简单,但 Java 对类型、作用域、默认值、线程上下文这些细节管得很死,漏掉任一环都可能卡在编译或运行时异常上。


















