// 基类
class Animal {
public void makeSound() {
System.out.println("动物发出声音");
}
}
// 子类
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("狗汪汪叫");
}
}
// 测试类
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.makeSound();
Animal dog = new Dog();
dog.makeSound();
}
}
3. 异常处理与测试
3.1 异常处理
术语
定义
exception
封装错误信息的对象
checked exception
代码必须显式处理的异常
unchecked exception
代码无需显式处理的异常
catch
捕获抛出的异常
rethrow
捕获并随后抛出相同或另一个异常对象
3.2 测试相关
术语
定义
acceptance test
展示功能行为的测试,也称为功能测试或客户测试
unit test
验证目标类行为的代码体,也称为程序员测试
regression test
确保在应用更改后现有应用程序仍然正常工作的测试
test - driven
在编写相应实现代码之前编写编程规范测试的设计方式
test - driven truth table (TDTT)
一系列断言,用于展示位运算和逻辑运算符所有可能组合的结果
3.3 异常处理示例代码
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("捕获到算术异常: " + e.getMessage());
}
}
}
4. 设计与架构相关术语
4.1 设计原则
术语
定义
design by contract
一种设计技术,要求程序员为软件的预期行为创建契约,包括前置条件、后置条件和不变式
dependency inversion
设计类关联,使类依赖于抽象而非具体实现
refactor
转换代码,重构不应改变代码的行为
simple design
一种重视测试、消除重复和代码表达性的设计方法,简单设计规则会在代码中产生积极的涌现行为
4.2 架构组件
术语
定义
controller
负责管理最终用户输入的类
model
包含应用程序或业务逻辑的类
view
负责向最终用户显示内容的类
client
与特定目标类交互的类或代码,目标类可能被称为服务器类
server
为客户端提供服务的类或类组
4.3 设计模式示例代码(单例模式)
class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class SingletonExample {
public static void main(String[] args) {
Singleton singleton1 = Singleton.getInstance();
Singleton singleton2 = Singleton.getInstance();
System.out.println(singleton1 == singleton2); // 输出 true
}
}
5. 其他重要术语
5.1 数据结构与算法
术语
定义
hash table
使用哈希码确定元素位置的固定大小集合
linked list
通过动态分配内存添加新元素的串行数据结构,链表元素必须通过存储一个或多个引用指向其他元素
queue
一种串行数据结构,当客户端请求对象时返回最旧的对象,也称为先进先出(FIFO)数据结构
5.2 并发编程
术语
定义
thread
Java 执行单元,一个 Java 进程可能包含多个线程,每个线程可以与其他线程同时执行
thread pool
一组可重用的线程
synchronization
协调同时执行的线程以避免数据竞争
cooperative multitasking
一种多线程方案,其中各个线程负责让出时间以允许其他线程执行
preemptive multitasking
一种多线程方案,其中操作系统(或虚拟机)负责中断和调度线程
5.3 其他杂项
术语
定义
i18n
国际化
localize
为将国际化应用程序交付到特定区域做准备
resource bundle
包含消息字符串等资源的集合,允许应用程序按名称动态加载这些资源,通常是外部文件
whitespace
空格、制表符、换行符、换页符和回车符(统称)
wildcard
类型参数中的替代字符(?),表示任何可能的类型
wrapper
包含另一个对象或值的对象,在 Java 中,包装对象用于包含基本类型,以便它们可以作为对象使用
5.4 并发编程示例代码
class MyThread extends Thread {
@Override
public void run() {
System.out.println("线程正在执行: " + Thread.currentThread().getName());
}
}
public class ThreadExample {
public static void main(String[] args) {
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();
}
}
public class VariableAndTypeExample {
// 类变量
static int classVariable = 10;
public static void main(String[] args) {
// 局部变量
int localVariable = 20;
// 自动装箱
Integer boxedInt = localVariable;
// 自动拆箱
int unboxedInt = boxedInt;
// 类型转换
double doubleValue = 3.14;
int intValue = (int) doubleValue;
System.out.println("类变量: " + classVariable);
System.out.println("局部变量: " + localVariable);
System.out.println("装箱后的整数: " + boxedInt);
System.out.println("拆箱后的整数: " + unboxedInt);
System.out.println("转换后的整数: " + intValue);
}
}
7. 方法与操作符相关术语
7.1 方法相关
术语
定义
method
帮助定义类行为的代码单元,返回类型、名称和参数列表唯一确定一个方法,由多个语句组成
constructor
用于初始化对象的代码块,使用
new
操作符调用构造函数会创建一个对象
constructor chaining
从一个构造函数调用另一个构造函数
query method
向客户端返回信息但不改变对象状态的方法
action method
执行操作,通常会改变对象状态的方法
generic method
可以用一个或多个类型参数进行参数化的方法
7.2 操作符相关
术语
定义
assignment operator
等号(=),用于赋值操作
compound assignment
赋值的快捷形式,假设被赋值的变量也是右表达式中第一个操作的目标
logical operator
返回布尔值的操作符
ternary operator
允许将
if - else
语句表示为表达式的操作符
unary operator
只有一个操作数的操作符,如
++
和
--
postfix operator
出现在操作目标之后的一元操作符
prefix operator
出现在操作目标之前的一元操作符
7.3 方法与操作符示例代码
public class MethodAndOperatorExample {
// 构造函数
public MethodAndOperatorExample() {
System.out.println("对象已创建");
}
// 方法
public int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
MethodAndOperatorExample obj = new MethodAndOperatorExample();
// 方法调用
int result = obj.add(3, 5);
System.out.println("加法结果: " + result);
// 操作符使用
int num = 10;
num++; // 自增操作
System.out.println("自增后的数值: " + num);
int ternaryResult = (num > 5)? 1 : 0;
System.out.println("三元操作符结果: " + ternaryResult);
}
}
graph LR
A[Java 编程] --> B[基础语法]
A --> C[面向对象]
A --> D[异常处理与测试]
A --> E[设计与架构]
A --> F[数据结构与算法]
A --> G[并发编程]
A --> H[资源与国际化]
A --> I[内存管理与代理]
B --> B1[变量与类型]
B --> B2[方法与操作符]
C --> C1[类与对象]
C --> C2[继承与多态]
D --> D1[异常处理]
D --> D2[测试驱动开发]
E --> E1[设计原则]
E --> E2[架构组件]
F --> F1[哈希表]
F --> F2[链表]
F --> F3[队列]
G --> G1[线程]
G --> G2[线程池]
G --> G3[同步]
H --> H1[资源包]
H --> H2[国际化与本地化]
I --> I1[垃圾回收]
I --> I2[代理模式]