Java 拥有丰富多样的, API它们为开发者提供了高效、便捷的方式来处理各种编程任务。这些 API 就像是一个庞大的工具箱,涵盖了从基础的数据类型操作到复杂的网络编程、文件处理、数据库连接等众多方面,帮助开发者能够快速构建出功能强大的应用程序。熟练掌握 Java 常用 API 是成为一名优秀 Java 开发者的重要一步。
Java 集合框架 API
List 接口及其实现类(ArrayList、LinkedList 等)
ArrayList :基于动态数组实现,提供了快速的随机访问。,例如创建一个存储整数的 ArrayList:
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
System.out.println(arrayList.get(1)); // 输出 2
LinkedList :基于双向链表实现,适合频繁的插入和删除操作。创建 LinkedList 示例:
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("a");
linkedList.add("b");
linkedList.add("c");
linkedList.removeFirst(); // 删除第一个元素
Set 接口及其实现类(HashSet、TreeSet 等)
HashSet :存储无序、不重复的元素。它通过哈希表来实现。例如:
HashSet<Integer> hashSet = new HashSet<>();
hashSet.add(1);
hashSet.add(2);
hashSet.add(1); // 添加失败,因为元素重复
TreeSet :提供有序、不重复的元素存储。它底层是基于红黑树数据结构。使用示例:
TreeSet<String> treeSet = new TreeSet<>();
treeSet.add("apple");
treeSet.add("banana");
treeSet.add("cat");
System.out.println(treeSet.first()); // 输出 apple,第一个元素按自然排序
Map 接口及其实现类(HashMap、TreeMap 等)
HashMap :存储键值对(key - value),根据键来存取值,底层基于哈希表。示例:
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 类)
创建 File 对象表示文件或目录:
File file = new File("C:\\test.txt");
if (file.exists()) {
System.out.println("文件存在");
} else {
System.out.println("文件不存在");
}
创建目录:
File dir = new File("C:\\newdir");
dir.mkdirs(); // 创建多级目录
字节流(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");
char[] 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 网络编程 API
Socket 编程(TCP 协议)
创建一个简单的 TCP 服务器:
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();
创建一个简单的 TCP 客户端:
Socket socket = new Socket("localhost", 8080);
OutputStream os = socket.getOutputStream();
String message = "Hello, Server!";
os.write(message.getBytes());
socket.close();
UDP 编程
创建 UDP 发送端:
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();
创建 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 数据库连接 API(JDBC)
加载 JDBC 驱动并建立连接
加载驱动:
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("JDBC 驱动加载成功");
} 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);
执行 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("受影响的行数:" + 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();
// 处理结果集
resultSet.close();
preparedStatement.close();
Java 常用 API 在我们开发应用程序时起到了至关重要的作用。通过合理地使用集合框架 API,我们可以高效地存储和操作数据;I/O API 让文件和数据的输入输出变得简单;日期时间 API 为我们处理日期时间相关业务提供了强大的工具;网络编程 API 使我们的应用能够通过网络进行通信;JDBC API 则是连接数据库、操作数据库数据的关键。在实际开发中,开发者需要根据具体的应用场景来选择合适的 API,不断熟悉和掌握它们的用法,提高开发效率和代码质量,构建出功能丰富、性能可靠的 Java 应用程序。