摘要:自1995年首次发布以来,Java凭借“一次编写,到处运行”(WORA)的核心理念,从嵌入式系统起步,逐步成为企业级开发、云计算和AI领域的基石语言。
⬆️ 欢迎分享上面关于Java 30岁的庆生图~
2025年5月23日,Java编程语言迎来了它的30岁生日。
自1995年首次发布以来,Java凭借“一次编写,到处运行”(WORA)的核心理念,从嵌入式系统起步,逐步成为企业级开发、云计算和AI领域的基石语言。
以下是关于Java语法的有趣冷知识(如有错误,请Javaer指正):
1. 双括号初始化(已过时)
曾流行用匿名内部类初始化集合:new ArrayList {{ add("A"); add("B"); }}。实际会生成额外类,可能引发内存泄漏。
2. 标签的诡异用法
Java支持循环标签(如outer:),可配合break或continue跳出多层循环,但极少被使用。
3. 泛型的类型擦除
泛型信息在编译后消失(如List变为List),运行时无法获取泛型类型,导致某些反射操作受限。
4. Java的“隐藏”操作符
>>>是无符号右移运算符,将二进制位右移并用0填充高位,适用于处理无符号数。
5. 枚举的超级能力
Java枚举(enum)本质是类,可包含方法、实现接口,甚至定义抽象方法供每个枚举实例实现。
6. Java的“魔数”
所有.class文件以0xCAFEBABE开头(十六进制),称为“魔数”,用于标识文件类型。
7. 数组的协变特性
Java数组是协变的(String是Object的子类),可能导致运行时错误,而泛型是不变的。
8. Lambda的闭包限制
Lambda表达式捕获的变量必须是final或等效final,因JVM需保证变量在匿名类中一致性。
9. Java的“时间黑洞”
2012年发现HashMap在多线程下可能导致无限循环(JDK 8已修复)。
10. Java的“幽灵”版本
1996年发布的Java 1.0仅需212KB内存即可运行,而现代JVM已庞大得多。
11. Null的发明者道歉
C.A.R. Hoare(null引用发明者)称其为“十亿美元错误”,Java的Optional类试图缓解此问题。
12. Java的“不死线程”
即使主线程结束,守护线程(Daemon Thread)会自动终止,而非守护线程会阻止JVM退出。
来源:看世界