Java #1 基础
本文最后更新于 2025年4月24日 晚上
一、历史
1.1 历史版本
JDK Alpha 和 Beta
JDK 1.0
Released: January 23, 1996
JDK 1.1
Released: February 19, 1997
J2SE 1.2
Released: December 8, 1998
Codename: Playground
The release on December 8, 1998 and subsequent releases through J2SE 5.0 were rebranded retrospectively Java 2 and the version name "J2SE" replaced JDK to distinguish the base platform from J2EE and J2ME.
This was a very significant release of Java as it tripled the size of the Java platform to 1520 classes in 59 packages.
J2SE 1.3
Released: May 8, 2000
Codename: Kestrel
J2SE 1.4
Released: February 6, 2002
Codename: Merlin
J2SE 5.0
Released: September 30, 2004
Codename: Tiger
The release on September 30, 2004 was originally numbered 1.5, which is still used as the internal version number.
The number was changed to "better reflect the level of maturity, stability, scalability and security of the J2SE"
Both version numbers "1.5.0" and "5.0" are used to identify this release of the Java 2 Platform Standard Edition.
Version "5.0" is the product version, while "1.5.0" is the developer version.
This correspondence continued through later releases (Java 6 = JDK 1.6, Java 7 = JDK 1.7, and so on).
Java SE 6
Released: November 11, 2006
Codename: Mustang
As of the version released on December 11, 2006, Sun replaced the name "J2SE" with Java SE and dropped the ".0" from the version number.
Internal numbering for developers remains 1.6.0.
Java SE 7
Released: July 28, 2011
Codename: Dolphin
Lambda (Java's implementation of lambda functions), Jigsaw (Java's implementation of modules), and part of Coin were dropped from Java 7, and released as part of Java 8
Java SE 8
Released: March 18, 2014
Java 8 was released on March 18, 2014, and included some features that were planned for Java 7 but later deferred.
二、基础
2.1 Java 基本类型
[!NOTE]
从 Java 7 开始,可以给数字字面量加下划线,编译器会去除这些下划线。
Java 有8种基本类型(primitive type)
整型
- int
- long
- short
- byte
浮点型
- float
- double
字符型
char
[!NOTE]
转义序列
\u除了可以出现在单双引号内,还可以出现在其外,Unicode 转义序列会在解析代码之前得到处理
布尔型
boolean
[!WARNING]
C++ 中值 0 相当于 false,非 0 值相当于 true
1
if( x=0 )C++ 可以通过编译运行,而 Java 中整型表达式不能转换成布尔值
2.2 字符串
[!NOTE]
java 没有提供内置的字符串数据类型,但是标准库提供了一个预定义类
String,每一个用双引号引起来的字符串都是该类的一个对象。
子串
String 类提供了一个方法
substring,第二个参数是不想复制的第一个位置,优点是容易计算子串长度。
拼接
- 静态方法
String.join():将多个字符串用界定符拼接起来 - 实例方法
repeat():重复拼接字符串该实例,由 Java 11提供
不可变字符串
[!IMPORTANT]
优点:编译器可以让字符串共享,在复制一个字符串变量时,原始字符串和复制字符串共享相同的字符
[!NOTE]
ANSI C++ 定义了 String 类型,也可以自动进行内存分配和回收,但可以修改字符串中的单个字符。
检测字符串是否相等
- 实例方法
equals(),判断两个字符串是否相等 - 忽略大小写
equalsIgnoreCase() - 实例方法
compareTo()
[!WARNING]
==只能确定两个字符串是否放在同一位置上,事实上,只有字符串字面量是共享的
+和substring得到的都不是共享的但在 c++ 中,重载了运算符
==,可以用它进行相等性测试
[!NOTE]
C 程序员用
==进行字符串内容相等性检测,而是用strcmp()函数,java 的compareTo方法完全类似于它。
构建字符串
每次字符串拼接时,都会构建一个新的 String
对象,既耗时,又费空间
StringBuilder 类(在 Java 5 引入)可以避免这个问题
1 | |