nav_path: java_instant_reference
下面是Java速查手册的一个大纲,涵盖了基本语法、常用类和方法、异常处理等内容。这样的手册对初学者和有经验的开发者都非常有用,可以节省查找文档和在线搜索的时间。
1. 基本语法
1.1 数据类型
- 基本数据类型:
byte b = 127;short s = 32767;int i = 2147483647;long l = 9223372036854775807L;float f = 3.14f;double d = 3.141592653589793;char c = 'A';boolean bool = true;
- 引用数据类型:
String str = "Hello, World!";int[] arr = {1, 2, 3, 4, 5};
1.2 变量与常量
- 变量声明:
int a = 10;
- 常量声明:
final int CONSTANT = 100;
1.3 运算符
- 算术运算符:
int sum = a + b;int diff = a - b;int product = a * b;int quotient = a / b;int remainder = a % b;
- 比较运算符:
boolean isEqual = (a == b);boolean isNotEqual = (a != b);boolean isGreater = (a > b);boolean isLesser = (a < b);boolean isGreaterOrEqual = (a >= b);boolean isLesserOrEqual = (a <= b);
- 逻辑运算符:
boolean and = (a > b && c > d);boolean or = (a > b || c > d);boolean not = !(a > b);
1.4 控制结构
- 条件语句:
if (a > b) {System.out.println("a is greater than b");} else if (a < b) {System.out.println("a is less than b");} else {System.out.println("a is equal to b");}
- 循环语句:
// for循环for (int i = 0; i < 10; i++) {System.out.println(i);}// while循环int i = 0;while (i < 10) {System.out.println(i);i++;}// do-while循环int j = 0;do {System.out.println(j);j++;} while (j < 10);
2. 面向对象编程
2.1 类与对象
- 类的定义:
public class Person {private String name;private int age;// 构造方法public Person(String name, int age) {this.name = name;this.age = age;}// Getter和Setter方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}// 普通方法public void introduce() {System.out.println("Hi, my name is " + name + " and I am " + age + " years old.");}}
- 对象的创建:
Person person = new Person("Alice", 30);person.introduce();
2.2 继承
- 继承的使用:
public class Student extends Person {private String studentId;public Student(String name, int age, String studentId) {super(name, age);this.studentId = studentId;}public String getStudentId() {return studentId;}public void setStudentId(String studentId) {this.studentId = studentId;}@Overridepublic void introduce() {super.introduce();System.out.println("My student ID is " + studentId);}}
2.3 多态
- 多态的使用:
public class Animal {public void makeSound() {System.out.println("Some generic animal sound");}}public class Dog extends Animal {@Overridepublic void makeSound() {System.out.println("Bark");}}public class Cat extends Animal {@Overridepublic void makeSound() {System.out.println("Meow");}}public class Main {public static void main(String[] args) {Animal myDog = new Dog();Animal myCat = new Cat();myDog.makeSound(); // 输出:BarkmyCat.makeSound(); // 输出:Meow}}
3. 常用类与方法
3.1 字符串处理
- 字符串拼接:
String greeting = "Hello" + " " + "World!";
- 字符串长度:
int length = greeting.length();
- 字符串比较:
boolean isEqual = greeting.equals("Hello World!");
- 子字符串:
String subStr = greeting.substring(0, 5);
3.2 集合框架
- ArrayList:
List<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Cherry");for (String fruit : list) {System.out.println(fruit);}
- HashMap:
Map<String, Integer> map = new HashMap<>();map.put("Apple", 1);map.put("Banana", 2);map.put("Cherry", 3);for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() + ": " + entry.getValue());}
4. 异常处理
4.1 try-catch块
- 基本用法:
try {int result = 10 / 0;} catch (ArithmeticException e) {System.out.println("Cannot divide by zero");}
4.2 自定义异常
- 定义和使用自定义异常:
public class CustomException extends Exception {public CustomException(String message) {super(message);}}public class Main {public static void main(String[] args) {try {throw new CustomException("This is a custom exception");} catch (CustomException e) {System.out.println(e.getMessage());}}}
5. 输入输出(I/O)
5.1 文件操作
- 读取文件:
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class FileReadExample {public static void main(String[] args) {try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}}
- 写入文件:
import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;public class FileWriteExample {public static void main(String[] args) {try (BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"))) {bw.write("Hello, World!");} catch (IOException e) {e.printStackTrace();}}}
6. 并发编程
6.1 创建线程
- 继承Thread类:
public class MyThread extends Thread {@Overridepublic void run() {System.out.println("Thread is running");}}public class Main {public static void main(String[] args) {MyThread thread = new MyThread();thread.start();}}
- 实现Runnable接口:
public class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("Thread is running");}}public class Main {public static void main(String[] args) {Thread thread = new Thread
好的,下面是Java速查手册的继续部分。
6. 并发编程 (续)
6.1 创建线程
- 实现Runnable接口:
public class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("Thread is running");}}public class Main {public static void main(String[] args) {Thread thread = new Thread(new MyRunnable());thread.start();}}
6.2 并发工具类
- ExecutorService:
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Main {public static void main(String[] args) {ExecutorService executorService = Executors.newFixedThreadPool(2);executorService.submit(new MyRunnable());executorService.submit(new MyRunnable());executorService.shutdown();}}
- CountDownLatch:
import java.util.concurrent.CountDownLatch;public class Worker implements Runnable {private CountDownLatch latch;public Worker(CountDownLatch latch) {this.latch = latch;}@Overridepublic void run() {System.out.println(Thread.currentThread().getName() + " is working");try {Thread.sleep((int) (Math.random() * 1000));} catch (InterruptedException e) {e.printStackTrace();}latch.countDown();System.out.println(Thread.currentThread().getName() + " finished working");}}public class Main {public static void main(String[] args) {CountDownLatch latch = new CountDownLatch(3);new Thread(new Worker(latch)).start();new Thread(new Worker(latch)).start();new Thread(new Worker(latch)).start();try {latch.await();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("All workers finished. Main thread continues.");}}
7. 网络编程
7.1 创建服务器
- 简单服务器:
import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class SimpleServer {public static void main(String[] args) {try (ServerSocket serverSocket = new ServerSocket(8080)) {System.out.println("Server is listening on port 8080");while (true) {Socket socket = serverSocket.accept();System.out.println("New client connected");}} catch (IOException e) {e.printStackTrace();}}}
7.2 创建客户端
- 简单客户端:
import java.io.IOException;import java.net.Socket;public class SimpleClient {public static void main(String[] args) {try (Socket socket = new Socket("localhost", 8080)) {System.out.println("Connected to the server");} catch (IOException e) {e.printStackTrace();}}}
8. 数据库操作
8.1 使用JDBC连接数据库
- 连接数据库:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DatabaseConnection {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "root";String password = "password";try (Connection conn = DriverManager.getConnection(url, user, password)) {if (conn != null) {System.out.println("Connected to the database");}} catch (SQLException e) {e.printStackTrace();}}}
8.2 执行SQL查询
- 查询数据:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DatabaseQuery {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "root";String password = "password";try (Connection conn = DriverManager.getConnection(url, user, password);Statement stmt = conn.createStatement()) {String sql = "SELECT id, name, age FROM users";ResultSet rs = stmt.executeQuery(sql);while (rs.next()) {int id = rs.getInt("id");String name = rs.getString("name");int age = rs.getInt("age");System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);}} catch (SQLException e) {e.printStackTrace();}}}
8.3 更新数据
- 更新数据:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class DatabaseUpdate {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "root";String password = "password";try (Connection conn = DriverManager.getConnection(url, user, password);Statement stmt = conn.createStatement()) {String sql = "UPDATE users SET age = 30 WHERE id = 1";int rowsAffected = stmt.executeUpdate(sql);System.out.println("Rows affected: " + rowsAffected);} catch (SQLException e) {e.printStackTrace();}}}
8.4 插入数据
- 插入数据:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class DatabaseInsert {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "root";String password = "password";try (Connection conn = DriverManager.getConnection(url, user, password);Statement stmt = conn.createStatement()) {String sql = "INSERT INTO users (name, age) VALUES ('John Doe', 25)";int rowsAffected = stmt.executeUpdate(sql);System.out.println("Rows affected: " + rowsAffected);} catch (SQLException e) {e.printStackTrace();}}}
8.5 删除数据
- 删除数据:
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class DatabaseDelete {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mydatabase";String user = "root";String password = "password";try (Connection conn = DriverManager.getConnection(url, user, password);Statement stmt = conn.createStatement()) {String sql = "DELETE FROM users WHERE id = 1";int rowsAffected = stmt.executeUpdate(sql);System.out.println("Rows affected: " + rowsAffected);} catch (SQLException e) {e.printStackTrace();}}}
9. 网络编程
9.1 创建服务器
- 简单服务器:
import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class SimpleServer {public static void main(String[] args) {try (ServerSocket serverSocket = new ServerSocket(8080)) {System.out.println("Server is listening on port 8080");while (true) {Socket socket = serverSocket.accept();System.out.println("New client connected");}} catch (IOException e) {e.printStackTrace();}}}
9.2 创建客户端
- 简单客户端:
import java.io.IOException;import java.net.Socket;public class SimpleClient {public static void main(String[] args) {try (Socket socket = new Socket("localhost", 8080)) {System.out.println("Connected to the server");} catch (IOException e) {e.printStackTrace();}}}
10. Web开发
10.1 创建Servlet
- 简单Servlet:
import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/hello")public class HelloServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("<h1>Hello, World!</h1>");out.println("</body></html>");}}
10.2 创建JSP页面
- 简单JSP页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>JSP Example</title></head><body><h1>Hello, JSP!</h1><%// 在JSP中嵌入Java代码String message = "Welcome to JSP!";out.println("<p>" + message + "</p>");%></body></html>
10.3 Spring Boot
- 创建Spring Boot应用主类:
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}}
- 创建一个简单的REST控制器:
import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/api")public class GreetingController {@GetMapping("/greeting")public String greeting() {return "Hello, RESTful Web Service!";}}
- 配置文件(application.properties):
server.port=8080
10.4 Spring MVC
- 创建控制器类:
import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("/home")public class HomeController {@GetMappingpublic String home(Model model) {model.addAttribute("message", "Welcome to Spring MVC!");return "home";}}
- 创建视图模板(home.html):
<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><title>Home</title></head><body><h1 th:text="${message}">Welcome to Spring MVC!</h1></body></html>
11. 测试
11.1 使用JUnit
- 创建一个简单的JUnit测试:
import static org.junit.jupiter.api.Assertions.assertEquals;import org.junit.jupiter.api.Test;public class CalculatorTest {@Testpublic void testAddition() {Calculator calculator = new Calculator();int result = calculator.add(2, 3);assertEquals(5, result, "2 + 3 should equal 5");}}class Calculator {public int add(int a, int b) {return a + b;}}
11.2 使用Mockito
- 创建一个Mockito测试:
import static org.mockito.Mockito.*;import org.junit.jupiter.api.Test;import org.mockito.InjectMocks;import org.mockito.Mock;import org.mockito.MockitoAnnotations;public class UserServiceTest {@Mockprivate UserRepository userRepository;@InjectMocksprivate UserService userService;@Testpublic void testFindUserById() {MockitoAnnotations.openMocks(this);User user = new User("John");when(userRepository.findById(1L)).thenReturn(Optional.of(user));User result = userService.findUserById(1L);assertEquals("John", result.getName());}}class User {private String name;public User(String name) {this.name = name;}public String getName() {return name;}}interface UserRepository {Optional<User> findById(Long id);}class UserService {private UserRepository userRepository;public UserService(UserRepository userRepository) {this.userRepository = userRepository;}public User findUserById(Long id) {return userRepository.findById(id).orElse(null);}}
12. 常见问题
12.1 NullPointerException
- 处理NullPointerException:
String str = null;if (str != null) {System.out.println(str.length());} else {System.out.println("String is null");}
12.2 ClassCastException
- 处理ClassCastException:
Object obj = "Hello";if (obj instanceof Integer) {Integer num = (Integer) obj;} else {System.out.println("Object is not an Integer");}
12.3 ArrayIndexOutOfBoundsException
- 处理ArrayIndexOutOfBoundsException:
int[] arr = {1, 2, 3};int index = 3;if (index >= 0 && index < arr.length) {System.out.println(arr[index]);} else {System.out.println("Index is out of bounds");}
