Java 期末考试常见 API 深度解析与应用案例

在 Java 中,引入包(包括java.utiljava.langjava.io等)主要通过import语句来实现。以下是具体的引入方式和一些说明:

  1. 引入java.util
    如果你想使用java.util包中的类,例如ArrayListHashMap等,可以在 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包中的其他类。

  1. 引入java.lang
    java.lang包是 Java 的核心包,包含了一些最基本的类,如StringIntegerObject等。在 Java 中,java.lang包是默认自动引入的,不需要显式使用import语句。例如:
public class Main {
    public static void main(String[] args) {
        String str = "Java";
        Integer num = 10;
        System.out.println(str + " " + num);
    }
}

这里使用StringInteger类时,不需要额外引入java.lang包。

  1. 引入java.io
    如果要进行输入输出操作,使用java.io包中的类,如FileInputStreamBufferedReader等,需要显式引入该包。可以使用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的条件、缓冲区刷新机制。

四、考试高频问题与答题技巧

  1. ArrayList 与 LinkedList 如何选择?
    答:查询多选ArrayList,增删多选LinkedList

  2. String 为什么设计为不可变?
    答:保证字符串常量池安全、支持哈希码缓存、线程安全等。

  3. 简述 IO 流的关闭顺序?
    答:先关闭高层流(如BufferedReader),底层流(如FileReader)会自动关闭(try-with-resources语法)。

通过对这些核心 API 的深入理解和实践,不仅能轻松应对期末考试,还能为后续项目开发打下坚实基础。建议结合练习题和实际案例巩固知识,祝考试顺利!如果对某个 API 还有疑问,欢迎在评论区留言讨论~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值