在 Java 中,引入包(包括java.util
、java.lang
、java.io
等)主要通过import
语句来实现。以下是具体的引入方式和一些说明:
- 引入
java.util
包:
如果你想使用java.util
包中的类,例如ArrayList
、HashMap
等,可以在 Java 源文件的开头添加import java.util.*;
语句,这表示引入java.util
包下的所有类。示例代码如下:
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Hello");
System.out.println(list);
}
}
也可以只引入特定的类,比如只使用ArrayList
,则可以写成import java.util.ArrayList;
,这样代码中就只能使用ArrayList
类,而不会引入java.util
包中的其他类。
- 引入
java.lang
包:
java.lang
包是 Java 的核心包,包含了一些最基本的类,如String
、Integer
、Object
等。在 Java 中,java.lang
包是默认自动引入的,不需要显式使用import
语句。例如:
public class Main {
public static void main(String[] args) {
String str = "Java";
Integer num = 10;
System.out.println(str + " " + num);
}
}
这里使用String
和Integer
类时,不需要额外引入java.lang
包。
- 引入
java.io
包:
如果要进行输入输出操作,使用java.io
包中的类,如FileInputStream
、BufferedReader
等,需要显式引入该包。可以使用import java.io.*;
引入java.io
包下的所有类,示例代码如下:
import java.io.*;
public class Main {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("test.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fis))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
同样,也可以只引入特定的类,如import java.io.FileInputStream;
和import java.io.BufferedReader;
等。
一、java.util
包核心 API
1. 集合框架
ArrayList
- 功能:动态数组,支持快速随机访问元素,适用于频繁查询的场景。
- 核心方法:
ArrayList<String> list = new ArrayList<>(); list.add("Java"); // 添加元素 String element = list.get(0); // 获取元素 list.remove(0); // 删除指定索引元素
- 考试考点:扩容机制(默认初始容量为 10,扩容时新容量为原容量的 1.5 倍)、泛型使用、与
LinkedList
的性能对比。
HashMap
- 功能:基于哈希表的键值对集合,允许
null
键和null
值,查找效率高。 - 核心方法:
HashMap<String, Integer> map = new HashMap<>(); map.put("apple", 1); // 插入键值对 Integer value = map.get("apple"); // 获取值 map.remove("apple"); // 删除键值对
- 考试考点:哈希冲突解决机制(链地址法 + 红黑树)、遍历方式(
entrySet
性能最优)、与TreeMap
的区别。
2. 工具类
Arrays
- 功能:提供数组操作方法,如排序、搜索、填充等。
int[] arr = {3, 1, 2}; Arrays.sort(arr); // 排序数组 int index = Arrays.binarySearch(arr, 2); // 二分查找
- 考试考点:排序算法(基本类型用快速排序,对象类型用归并排序)、
deepToString
处理多维数组。
Collections
- 功能:集合工具类,支持排序、反转、查找最值等操作。
List<Integer> numbers = Arrays.asList(3, 1, 2); Collections.sort(numbers); // 排序集合 Collections.reverse(numbers); // 反转集合
- 考试考点:
binarySearch
的前提条件(集合需有序)、synchronizedList
实现线程安全。
二、java.lang
包基础 API
1. 包装类
Integer
- 功能:将基本类型
int
封装为对象,支持字符串转换、位运算等。Integer num = Integer.valueOf("123"); // 字符串转Integer int value = num.intValue(); // 拆箱
- 考试考点:自动装箱 / 拆箱原理、
valueOf
方法的缓存机制(-128~127 范围内复用对象)。
2. 字符串处理
String
- 功能:不可变字符序列,提供查找、截取、替换等操作。
String str = "Hello, Java"; int index = str.indexOf("Java"); // 查找子串位置 String sub = str.substring(7); // 截取子串
- 考试考点:字符串常量池、
equals
与==
的区别、intern
方法的作用。
StringBuilder & StringBuffer
- 功能:可变字符序列,用于高效拼接字符串。
StringBuilder sb = new StringBuilder(); sb.append("Hello").append("World"); // 链式调用拼接
- 考试考点:两者区别(
StringBuffer
线程安全,StringBuilder
性能更高)。
三、java.io
包 IO 操作 API
1. 字节流
FileInputStream & FileOutputStream
- 功能:用于读写文件的字节流。
try (FileInputStream fis = new FileInputStream("input.txt"); FileOutputStream fos = new FileOutputStream("output.txt")) { int data; while ((data = fis.read()) != -1) { fos.write(data); } } catch (IOException e) { e.printStackTrace(); }
- 考试考点:异常处理(
try-with-resources
语法)、文件不存在时的处理。
2. 字符流
BufferedReader & BufferedWriter
- 功能:高效读写文本文件的字符流。
try (BufferedReader br = new BufferedReader(new FileReader("input.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) { String line; while ((line = br.readLine()) != null) { bw.write(line); bw.newLine(); } } catch (IOException e) { e.printStackTrace(); }
- 考试考点:
readLine
方法返回null
的条件、缓冲区刷新机制。
四、考试高频问题与答题技巧
-
ArrayList 与 LinkedList 如何选择?
答:查询多选ArrayList
,增删多选LinkedList
。 -
String 为什么设计为不可变?
答:保证字符串常量池安全、支持哈希码缓存、线程安全等。 -
简述 IO 流的关闭顺序?
答:先关闭高层流(如BufferedReader
),底层流(如FileReader
)会自动关闭(try-with-resources
语法)。
通过对这些核心 API 的深入理解和实践,不仅能轻松应对期末考试,还能为后续项目开发打下坚实基础。建议结合练习题和实际案例巩固知识,祝考试顺利!如果对某个 API 还有疑问,欢迎在评论区留言讨论~