Java 知识体系梳理汇总
写这些文章的初衷是什么?
中文世界的Java教材亦或者视频教程使用的JDK版本大多比较滞后,且带有传统编程思维的局限性(从面向过程到面向对象的转变)。内容编排和知识体系也比较陈旧,无法和英文世界的Java知识体系接轨。因此我决定梳理自己的Java知识体系,分享给大家。Java语言的内容翻译自 dev.java,内容非常棒。
主要针对哪些问题?
- 碎片化的Java知识体系
- 过时的Java编程思维
字符串在Java编程中广泛使用,它是一系列字符的序列。在Java编程语言中,字符串是对象。
Java平台提供了 String 类来创建和操作字符串。
创建字符串最直接的方式是这样:
String greeting = "Hello, World!";
在此情况下,“Hello world!”是一个字符串字面量——即代码中用双引号括起来的一系列字符。编译器在代码中遇到字符串字面量时,会创建一个与其值相同的String对象——本例中即为Hello world!。
与其他对象一样,你可以使用 new 关键字和构造函数创建 String 对象。String 类提供了十三个构造函数,允许你通过不同来源(如字符数组)为字符串提供初始值:
char[] helloArray = { 'H', 'e', 'l', 'l', 'o', '.' };
String helloString = new String(helloArray);
IO.println(helloString);
大多数情况下,若使用单字符值,则采用 char 类型。例如:
char ch = 'a';
// Unicode for uppercase Greek omega character
char uniChar = '\u03A9';
// an array of chars
char[] charAarray = {'a', 'b', 'c', 'd', 'e'};
然而,有时你需要将字符作为对象使用——例如作为方法参数时,该参数要求传入对象。Java编程语言为此提供了一个包装类,它将字符”包装”成Character对象。Character类型的对象包含一个字段,其类型为字符。该Character类还提供了一系列有用的类方法(即静态方法)来操作字符。
本节首先讨论 java.lang 包中的 Number 类及其子类,并说明在哪些情况下应使用这些类的实例化而非基本数值类型。
本节还介绍了 PrintStream 和 DecimalFormat 类,它们提供了用于写入格式化数值输出的方法。
Java语言提供了多种创建不可变类的方法。最直接的方式可能是创建一个包含final字段和构造函数的final类,用于初始化这些字段。以下是一个此类类的示例。
public class Point {
private final int x;
private final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
枚举是所有实例均被编译器所知的类。它们用于创建仅能取少数可能值的类型。
枚举的创建方式与类类似,但需使用枚举关键字(enum)替代类关键字(class)。枚举主体中包含一组称为枚举常量的实例列表,各常量以逗号分隔。除枚举常量之外,无法创建枚举的其他实例。
public enum DayOfWeek {
// enum constants are listed here:
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
所有枚举类型都隐式继承自 java.lang.Enum,且不能有任何子类。
Java 编程语言允许你在另一个类内部定义类。此类称为嵌套类,示例如下:
class OuterClass {
...
class NestedClass {
...
}
}
术语:嵌套类分为两类:非静态类和静态类。非静态嵌套类称为内部类。声明为静态的嵌套类称为静态嵌套类。