Java 擁有豐富多樣的, API它們?yōu)殚_發(fā)者提供了高效、便捷的方式來處理各種編程任務(wù)。這些 API 就像是一個龐大的工具箱,涵蓋了從基礎(chǔ)的數(shù)據(jù)類型操作到復(fù)雜的網(wǎng)絡(luò)編程、文件處理、數(shù)據(jù)庫連接等眾多方面,幫助開發(fā)者能夠快速構(gòu)建出功能強大的應(yīng)用程序。熟練掌握 Java 常用 API 是成為一名優(yōu)秀 Java 開發(fā)者的重要一步。
Java 集合框架 API
List 接口及其實現(xiàn)類(ArrayList、LinkedList 等)
ArrayList :基于動態(tài)數(shù)組實現(xiàn),提供了快速的隨機訪問。,例如創(chuàng)建一個存儲整數(shù)的 ArrayList:
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
System.out.println(arrayList.get(1)); // 輸出 2
LinkedList :基于雙向鏈表實現(xiàn),適合頻繁的插入和刪除操作。創(chuàng)建 LinkedList 示例:
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("a");
linkedList.add("b");
linkedList.add("c");
linkedList.removeFirst(); // 刪除第一個元素
Set 接口及其實現(xiàn)類(HashSet、TreeSet 等)
HashSet :存儲無序、不重復(fù)的元素。它通過哈希表來實現(xiàn)。例如:
HashSet<Integer> hashSet = new HashSet<>();
hashSet.add(1);
hashSet.add(2);
hashSet.add(1); // 添加失敗,因為元素重復(fù)
TreeSet :提供有序、不重復(fù)的元素存儲。它底層是基于紅黑樹數(shù)據(jù)結(jié)構(gòu)。使用示例:
TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");
treeSet.add("cat");
System.out.println(treeSet.first()); // 輸出 apple,第一個元素按自然排序
Map 接口及其實現(xiàn)類(HashMap、TreeMap 等)
HashMap :存儲鍵值對(key - value),根據(jù)鍵來存取值,底層基于哈希表。示例:
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("one", 1);
hashMap.put("two", 2);
System.out.println(hashMap.get("two")); // 輸出 2
TreeMap :基于紅黑樹的鍵值對映射,按鍵的順序進行排序。代碼示例:
TreeMap<String, Double> treeMap = new TreeMap<>();
treeMap.put("math", 95.5);
treeMap.put("english", 92.3);
System.out.println(treeMap.firstKey()); // 按鍵的字典順序輸出第一個鍵
Java I/O(輸入輸出)API
文件操作 API(File 類)
創(chuàng)建 File 對象表示文件或目錄:
File file = new File("C:\\test.txt");
if (file.exists()) {
System.out.println("文件存在");
} else {
System.out.println("文件不存在");
}
創(chuàng)建目錄:
File dir = new File("C:\\newdir");
dir.mkdirs(); // 創(chuàng)建多級目錄
字節(jié)流(InputStream 和 OutputStream)
讀取文件(使用 FileInputStream):
FileInputStream fis = new FileInputStream("C:\\test.txt");
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
fis.close();
寫入文件(使用 FileOutputStream):
FileOutputStream fos = new FileOutputStream("C:\\test.txt");
String str = "Hello, Java!";
byte[] bytes = str.getBytes();
fos.write(bytes);
fos.close();
字符流(Reader 和 Writer)
讀取文本文件(使用 FileReader):
FileReader fr = new FileReader("Ctest:\\.txt");
?。悖瑁幔騕] chars = new char[100];
fr.read(chars);
String content = new String(chars);
System.out.println(content);
fr.close();
寫入文本文件(使用 FileWriter):
FileWriter fw = new FileWriter("C:\\test.txt");
fw.write("Java is great!");
fw.close();
Java 日期時間 API(java.time 包)
LocalDate、LocalTime 和 LocalDateTime
獲取當前日期和時間:
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("當前日期:" + localDate);
System.out.println("當前時間:" + localTime);
System.out.println("當前日期時間:" + localDateTime);
日期計算:
LocalDate date = LocalDate.now();
LocalDate nextWeek = date.plusWeeks(1);
LocalDate previousMonth = date.minusMonths(1);
DateTimeFormatter 類(用于日期時間格式化和解析)
格式化日期時間:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy - MM - dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.now();
String formattedDateTime = dateTime.format(formatter);
System.out.println(formattedDateTime);
`` `
解析日期時間字符串:
String strDateTime = "2024 - 11 - 01 14:30:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy - MM - dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parseDateTime(str, formatter);
Java 網(wǎng)絡(luò)編程 API
Socket 編程(TCP 協(xié)議)
創(chuàng)建一個簡單的 TCP 服務(wù)器:
ServerSocket serverSocket = new ServerSocket(8080);
Socket socket = serverSocket.accept(); // 阻塞等待客戶端連接
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message = br.readLine();
System.out.println("接收到客戶端消息:" + message);
serverSocket.close();
創(chuàng)建一個簡單的 TCP 客戶端:
Socket socket = new Socket("localhost", 8080);
OutputStream os = socket.getOutputStream();
String message = "Hello, Server!";
os.write(message.getBytes());
socket.close();
UDP 編程
創(chuàng)建 UDP 發(fā)送端:
DatagramSocket datagramSocket = new DatagramSocket();
String message = "Hello, UDP!";
InetAddress address = InetAddress.getByName("localhost");
DatagramPacket datagramPacket = new DatagramPacket(message.getBytes(), message.length(), address, 8080);
datagramSocket.send(datagramPacket);
datagramSocket.close();
創(chuàng)建 UDP 接收端:
DatagramSocket datagramSocket = new DatagramSocket(8080);
byte[] buffer = new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(buffer, buffer.length);
datagramSocket.receive(datagramPacket);
String message = new String(datagramPacket.getData(), 0, datagramPacket.getLength());
System.out.println("接收到消息:" + message);
datagramSocket.close();
Java 數(shù)據(jù)庫連接 API(JDBC)
加載 JDBC 驅(qū)動并建立連接
加載驅(qū)動:
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("JDBC 驅(qū)動加載成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
建立連接:
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "root";
String password = "password";
Connection connection = DriverManager.getConnection(url, username, password);
執(zhí)行 SQL 查詢
查詢操作:
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID:" + id + ", Name:" + name);
}
resultSet.close();
statement.close();
更新操作:
Statement statement = connection.createStatement();
int rowsAffected = statement.executeUpdate("insert INTO users (name) VALUES ('John')");
System.out.println("受影響的行數(shù):" + rowsAffected);
statement.close();
使用 PreparedStatement 防止 SQL 注入
示例:
String sql = "SELECT * FROM users WHERE name = ?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "John");
ResultSet resultSet = preparedStatement.executeQuery();
// 處理結(jié)果集
resultSet.close();
preparedStatement.close();
Java 常用 API 在我們開發(fā)應(yīng)用程序時起到了至關(guān)重要的作用。通過合理地使用集合框架 API,我們可以高效地存儲和操作數(shù)據(jù);I/O API 讓文件和數(shù)據(jù)的輸入輸出變得簡單;日期時間 API 為我們處理日期時間相關(guān)業(yè)務(wù)提供了強大的工具;網(wǎng)絡(luò)編程 API 使我們的應(yīng)用能夠通過網(wǎng)絡(luò)進行通信;JDBC API 則是連接數(shù)據(jù)庫、操作數(shù)據(jù)庫數(shù)據(jù)的關(guān)鍵。在實際開發(fā)中,開發(fā)者需要根據(jù)具體的應(yīng)用場景來選擇合適的 API,不斷熟悉和掌握它們的用法,提高開發(fā)效率和代碼質(zhì)量,構(gòu)建出功能豐富、性能可靠的 Java 應(yīng)用程序。