1. Java 简介
Java 是一种广泛使用的面向对象编程语言,具有跨平台特性。其应用领域包括企业级应用、移动应用和嵌入式系统等。
例如,可以使用 Java 开发一个简单的控制台应用程序来计算两个数的和:
import java.util.Scanner;
public class SumExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个数字: ");
int num1 = scanner.nextInt();
System.out.print("请输入第二个数字: ");
int num2 = scanner.nextInt();
int sum = num1 + num2;
System.out.println("两个数的和是: " + sum);
}
}
公式: sum = num1 + num2
2. 快速入门
编写一个简单的 Java 程序,输出 "Hello, World!"。
示例代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
公式: 输出语句:System.out.println("Hello, World!")
运行此程序后,控制台将输出 "Hello, World!",这表示程序运行成功。
3. 面向对象编程 (OOP)
Java 是一种面向对象编程语言,核心概念包括类与对象、继承、多态、接口等。
- 类与对象:类是对象的模板,对象是类的实例。
- 继承:通过继承实现代码复用。
- 多态:不同对象可以以相同方式调用。
- 接口:定义类必须实现的方法。
示例:
class Animal {
void sound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Woof");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.sound(); // 输出 "Woof"
}
}
公式: 继承:class SubClass extends SuperClass
公式: 多态:SuperClass obj = new SubClass()
在这个示例中,Dog 类继承了 Animal 类,并重写了 sound() 方法,体现了继承和多态的特性。
4. 异常处理
Java 提供了异常处理机制,用于处理程序中的错误或异常情况。
- try-catch 语句:用于捕获并处理异常。
- finally 语句:在异常处理后执行一些必要的清理工作。
示例:
public class ExceptionExample {
public static void main(String[] args) {
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("除以零错误: " + e.getMessage());
} finally {
System.out.println("执行完毕");
}
}
}
公式: try-catch-finally 结构:try { ... } catch (ExceptionType e) { ... } finally { ... }
在这个示例中,程序试图进行除以零的操作,catch 语句捕获了 ArithmeticException,并输出相应的错误信息。
5. 反射
反射是 Java 语言中一个强大的功能,允许在运行时检查类、接口、字段和方法。
示例:
import java.lang.reflect.Method;
public class ReflectionExample {
public static void main(String[] args) throws Exception {
Class> clazz = Class.forName("java.util.ArrayList");
Method[] methods = clazz.getMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
}
}
公式: 获取类的方法:Class> clazz = Class.forName("类名"); Method[] methods = clazz.getMethods()
在这个示例中,程序使用反射获取了 ArrayList 类中的所有公共方法,并将它们的名称打印出来。
6. 注解
注解用于为代码添加元数据,可以被编译器和运行时工具使用。
示例:
@interface MyAnnotation {
String value();
}
@MyAnnotation(value = "Hello")
public class AnnotationExample {
public static void main(String[] args) {
System.out.println("使用了自定义注解");
}
}
公式: 定义注解:@interface AnnotationName { ... }
公式: 使用注解:@AnnotationName
在这个示例中,我们定义了一个名为 MyAnnotation 的注解,并将其应用于 AnnotationExample 类。
7. 泛型
泛型允许在类、接口和方法中使用类型参数,提高代码的复用性和安全性。
示例:
import java.util.ArrayList;
public class GenericExample {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("Hello");
list.add("World");
for (String s : list) {
System.out.println(s);
}
}
}
公式: 泛型声明:ClassName<Type> variable = new ClassName<>()
在这个示例中,我们创建了一个包含字符串的列表,并使用泛型确保列表中只包含 String 类型的元素。
8. 集合
Java 集合框架提供了一组用于存储和操作数据的接口和类。
- List:
ArrayList
和LinkedList
,用于存储有序的元素。 - Set:
HashSet
和TreeSet
,用于存储唯一的元素。 - Map:
HashMap
和TreeMap
,用于存储键值对。
示例:
import java.util.HashMap;
import java.util.HashSet;
import java.util.ArrayList;
public class CollectionsExample {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
System.out.println("List: " + list);
HashSet set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 重复元素不会被添加
System.out.println("Set: " + set);
HashMap map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
System.out.println("Map: " + map);
}
}
公式: List:List<Type> list = new ArrayList<>()
公式: Set:Set<Type> set = new HashSet<>()
公式: Map:Map<KeyType, ValueType> map = new HashMap<>()
在这个示例中,展示了如何使用 List、Set 和 Map 集合来存储和操作数据。
9. 日期与时间
Java 提供了丰富的日期与时间 API 来处理时间相关的操作。
示例:
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
public class DateTimeExample {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("当前日期: " + date);
System.out.println("当前时间: " + time);
System.out.println("当前日期和时间: " + dateTime);
}
}
公式: 获取当前日期:LocalDate.now()
10. 单元测试
单元测试用于测试程序的独立模块,Java 中常用的测试框架是 JUnit。
示例:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class CalculatorTest {
@Test
public void testAddition() {
Calculator calc = new Calculator();
int result = calc.add(2, 3);
assertEquals(5, result);
}
}
公式: 断言相等:assertEquals(expected, actual)
11. 正则表达式
正则表达式用于匹配字符串模式,Java 提供了 Pattern
和 Matcher
类来处理正则表达式。
示例:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexExample {
public static void main(String[] args) {
String text = "Java is fun";
Pattern pattern = Pattern.compile("\bis\b");
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
System.out.println("找到匹配: " + matcher.group());
}
}
}
公式: 创建正则模式:Pattern pattern = Pattern.compile("regex")
12. 加密与安全
Java 提供了 java.security
包来进行加密和安全操作。
示例:
import java.security.MessageDigest;
public class HashingExample {
public static void main(String[] args) throws Exception {
String password = "12345";
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] hash = md.digest(password.getBytes());
StringBuilder hexString = new StringBuilder();
for (byte b : hash) {
hexString.append(String.format("%02x", b));
}
System.out.println("哈希值: " + hexString.toString());
}
}
公式: 哈希计算:MessageDigest md = MessageDigest.getInstance("算法名称")
13. 多线程
Java 中使用 Thread
类和 Runnable
接口来创建和管理线程。
示例:
public class ThreadExample {
public static void main(String[] args) {
Runnable task = () -> {
for (int i = 0; i < 5; i++) {
System.out.println("线程执行: " + i);
}
};
Thread thread = new Thread(task);
thread.start();
}
}
公式: 创建线程:Thread thread = new Thread(Runnable)
14. Maven 基础
Maven 是 Java 项目的构建工具,用于管理项目的依赖和构建过程。
示例:
4.0.0
com.example
my-app
1.0-SNAPSHOT
公式: Maven 项目定义:
15. 网络编程
Java 提供了 java.net
包来进行网络编程,允许应用程序通过套接字进行通信。
示例:
import java.net.ServerSocket;
import java.net.Socket;
public class ServerExample {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("服务器已启动,等待客户端连接...");
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接");
serverSocket.close();
}
}
公式: 创建服务器套接字:ServerSocket serverSocket = new ServerSocket(port)
16. XML 与 JSON
Java 中可以使用 Jackson
或 Gson
库来解析和生成 JSON 数据。
示例:
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonExample {
public static void main(String[] args) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
String json = "{\"name\":\"John\", \"age\":30}";
Person person = objectMapper.readValue(json, Person.class);
System.out.println("姓名: " + person.name);
}
}
class Person {
public String name;
public int age;
}
公式: JSON 解析:ObjectMapper.readValue(json, ClassName.class)
17. JDBC 编程
JDBC(Java Database Connectivity)用于连接和操作数据库。
示例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCExample {
public static void main(String[] args) {
try {
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "user", "password");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
while (resultSet.next()) {
System.out.println("用户名: " + resultSet.getString("username"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
公式: 创建数据库连接:DriverManager.getConnection(url, user, password)