Java中的常用类

Java 中的常用类主要集中在 java.lang(核心基础类,无需导入)、java.util(工具类)、java.io(IO 操作)、java.text(文本处理)等包中,这些类是日常开发的基础,以下按功能分类详解核心常用类:

一、核心基础类(java.lang 包,自动导入)

1. Object 类

  • 地位:Java 中所有类的直接或间接父类,所有对象都继承其方法。
  • 核心方法
    • equals(Object obj):判断对象是否相等(默认比较地址,建议重写)。
    • hashCode():返回对象的哈希码(重写 equals 必须重写 hashCode,保证 “相等对象哈希码相等”)。
    • toString():返回对象的字符串表示(默认格式 类名@哈希码,建议重写)。
    • getClass():返回对象的运行时类(反射常用)。
    • wait()/notify()/notifyAll():线程同步通信(已被 java.util.concurrent 工具替代,不推荐直接使用)。

2. 包装类(8 种,对应基本数据类型)

  • 作用:基本类型 → 对象(支持泛型、集合操作、null 值),提供类型转换、常量定义等工具方法。
  • 核心类IntegerLongDoubleBooleanCharacterShortByteFloat
  • 常用功能
    • 类型转换:Integer.parseInt("123")(字符串→int)、Double.valueOf(3.14)(基本类型→包装类)。
    • 常量:Integer.MAX_VALUE(int 最大值)、Double.NaN(非数字)。
    • 自动装箱 / 拆箱(JDK 1.5+):Integer i = 10;(自动装箱)、int j = i;(自动拆箱)。
    • 注意:Integer 缓存 [-128~127] 区间的对象,直接赋值时复用(Integer a=100; Integer b=100; a==b → truea=200; b=200; a==b → false)。

3. String 类

  • 特性:不可变字符串(底层是 char[] 或 byte[],修改会创建新对象),线程安全。
  • 核心方法
    • 字符串比较:equals()(内容相等)、equalsIgnoreCase()(忽略大小写)、compareTo()(字典序比较)。
    • 字符串操作:length()(长度)、charAt(int index)(取字符)、substring(int beginIndex)(截取子串)、concat(String str)(拼接)、replace(String old, String new)(替换)。
    • 查找 / 判断:contains(CharSequence s)(是否包含子串)、startsWith(String prefix)(是否以前缀开头)、endsWith(String suffix)(是否以后缀结尾)、indexOf(String str)(子串首次出现索引)。
    • 分割 / 转换:split(String regex)(按正则分割)、toUpperCase()/toLowerCase()(大小写转换)、trim()(去除首尾空白,JDK 11+ 用 strip() 支持全角空白)。
  • 扩展:可变字符串用 StringBuilder(非线程安全,效率高)或 StringBuffer(线程安全,效率低)。

4. 数字相关类

  • Math 类:提供数学运算静态方法(无需实例化):
    • 基本运算:Math.abs(-10)(绝对值)、Math.max(3,5)(最大值)、Math.min(2,4)(最小值)。
    • 三角函数 / 指数:Math.sin(Math.PI)(正弦)、Math.pow(2,3)(2³=8)、Math.sqrt(16)(平方根 = 4)。
    • 随机数:Math.random()(返回 [0.0,1.0) 随机 double)。
  • BigInteger/BigDecimal:处理超大整数 / 高精度小数(解决基本类型精度丢失问题):
    • BigInteger:支持无限精度整数运算(add()subtract()multiply()divide())。
    • BigDecimal:用于金融计算(避免 double 精度误差),需指定精度和舍入模式(setScale(2, RoundingMode.HALF_UP) 保留 2 位小数,四舍五入)。

二、工具类(java.util 包,需导入)

1. 集合框架(核心容器)

  • List:有序、可重复集合:
    • ArrayList:基于动态数组,查询快、增删慢(日常开发首选)。
    • LinkedList:基于双向链表,增删快、查询慢(适合频繁插入删除场景)。
    • 常用方法:add()(添加元素)、get(int index)(获取元素)、remove(int index)(删除元素)、size()(集合大小)。
  • Set:无序、不可重复集合:
    • HashSet:基于哈希表,查询 / 增删快(无序)。
    • TreeSet:基于红黑树,自动排序(需元素实现 Comparable 或传入 Comparator)。
  • Map:键值对集合(键唯一,值可重复):
    • HashMap:基于哈希表,查询 / 增删快(JDK 1.8+ 数组 + 链表 + 红黑树),无序。
    • TreeMap:基于红黑树,键自动排序。
    • LinkedHashMap:有序(保留插入顺序或访问顺序)。
    • 常用方法:put(K key, V value)(存键值对)、get(K key)(根据键取值)、containsKey(K key)(判断键是否存在)、keySet()(获取所有键)、values()(获取所有值)。

2. 日期时间类(JDK 8+ 推荐)

  • 替代旧版 Date/Calendar(线程不安全、API 繁琐),核心包 java.time
    • LocalDate:日期(年 - 月 - 日),如 LocalDate.now()(当前日期)、LocalDate.of(2025, 12, 5)(指定日期)。
    • LocalTime:时间(时 - 分 - 秒),如 LocalTime.now()LocalTime.of(14, 30, 0)
    • LocalDateTime:日期 + 时间(年 - 月 - 日 时 - 分 - 秒),常用方法 plusDays(1)(加 1 天)、minusMonths(2)(减 2 月)、format(DateTimeFormatter)(格式化)。
    • DateTimeFormatter:日期时间格式化(线程安全),如 DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
  • 示例:
    java
     
    运行
     
    LocalDateTime now = LocalDateTime.now();
    String formatNow = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    LocalDateTime parseTime = LocalDateTime.parse("2025-12-05 14:30:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
     

3. 其他工具类

  • Arrays:数组操作工具类(静态方法):
    • Arrays.sort(int[] a)(数组排序)、Arrays.toString(int[] a)(数组转字符串)、Arrays.copyOf(int[] original, int newLength)(数组复制)、Arrays.asList(T... a)(数组转 List)。
  • Collections:集合操作工具类(静态方法):
    • Collections.sort(List<T> list)(集合排序)、Collections.reverse(List<?> list)(反转集合)、Collections.max(Collection<?> coll)(获取最大值)、Collections.synchronizedList(List<T> list)(将非线程安全集合转为线程安全)。
  • Scanner:控制台输入工具:
    java
     
    运行
    Scanner scanner = new Scanner(System.in);
    String str = scanner.next(); // 读取字符串(空格分隔)
    int num = scanner.nextInt(); // 读取整数
    scanner.close();
     
     

三、文本处理类(java.text 包)

1. SimpleDateFormat(日期格式化,JDK 8 前常用)

  • 注意:线程不安全,需避免多线程共享实例。
  • 示例:
    java
     
    运行
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateStr = sdf.format(new Date()); // Date → 字符串
    Date date = sdf.parse("2025-12-05 14:30:00"); // 字符串 → Date
     
     

2. DecimalFormat(数字格式化)

  • 用于格式化数字(保留小数、千分位等)。
  • 示例:
    java
     
    运行
    DecimalFormat df = new DecimalFormat("###,###.00"); // 千分位+保留2位小数
    String numStr = df.format(12345.678); // 结果:12,345.68
     

四、IO 操作类(java.io 包)

1. 字节流(处理二进制文件:图片、视频、音频)

  • 输入流:FileInputStream(读取文件)、BufferedInputStream(缓冲流,提高效率)。
  • 输出流:FileOutputStream(写入文件)、BufferedOutputStream(缓冲流)。
  • 示例(复制文件):
    java
     
    运行
    try (InputStream in = new BufferedInputStream(new FileInputStream("source.jpg"));
         OutputStream out = new BufferedOutputStream(new FileOutputStream("target.jpg"))) {
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) != -1) {
            out.write(buf, 0, len);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
     
     

2. 字符流(处理文本文件:.txt、.java 等)

  • 输入流:FileReaderBufferedReader(支持 readLine() 读取整行)。
  • 输出流:FileWriterBufferedWriter(支持 newLine() 换行)。
  • 示例(读取文本文件):
    java
     
    运行
    try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

3. 转换流(字节流 ↔ 字符流)

  • InputStreamReader:字节输入流 → 字符输入流(指定编码)。
  • OutputStreamWriter:字节输出流 → 字符输出流(指定编码,避免中文乱码)。

五、其他常用类

1. System 类

  • 静态工具类,提供系统级操作:
    • System.out.println()(控制台输出)。
    • System.currentTimeMillis()(获取当前时间戳,毫秒级)。
    • System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)(数组复制,效率高)。
    • System.exit(int status)(退出程序,0 正常退出,非 0 异常退出)。

2. Runtime 类

  • 表示 Java 运行时环境,单例模式(通过 Runtime.getRuntime() 获取实例):
    • exec(String command):执行系统命令(如 Runtime.getRuntime().exec("notepad.exe") 打开记事本)。
    • availableProcessors():获取 CPU 核心数。
    • totalMemory()/freeMemory():获取 JVM 总内存 / 空闲内存。

总结

Java 常用类的核心集中在:
  1. 基础层Object、包装类、StringMath(构建数据基础)。
  2. 容器层:集合框架(ArrayListHashMap 等,存储数据)。
  3. 工具层ArraysCollections、日期时间类(简化开发)。
  4. IO 层:字节流 / 字符流(数据读写)。
掌握这些类的核心方法和使用场景,能大幅提升开发效率。实际开发中,优先使用 JDK 8+ 新特性(如 java.time 日期类、Stream API),替代老旧 API(如 DateVector)。
 
 
 
posted @ 2025-12-05 17:02  小java  阅读(2)  评论(0)    收藏  举报