跳转至

Java 标准库参考

Java 标准库(Java Standard Library)提供了丰富的类和接口,涵盖了日常开发中的大部分需求。本章将介绍最常用的核心类库。

核心包概览

java.lang 包

java.lang 包是Java的核心包,自动导入,包含最基本的类。

类名 用途 重要方法
Object 所有类的根类 equals(), hashCode(), toString()
String 字符串处理 length(), charAt(), substring()
StringBuilder 可变字符串 append(), insert(), delete()
Integer, Double等 包装类 valueOf(), parseInt(), toString()
Math 数学运算 abs(), max(), min(), sqrt()
System 系统相关 out, in, currentTimeMillis()
Thread 线程 start(), run(), sleep()

java.util 包

java.util 包提供了集合框架、日期时间、随机数等实用工具。

类名 用途 重要方法
ArrayList 动态数组 add(), get(), remove(), size()
HashMap 哈希映射 put(), get(), containsKey()
HashSet 哈希集合 add(), contains(), remove()
Date 日期时间 getTime(), toString()
Calendar 日历 get(), set(), add()
Random 随机数 nextInt(), nextDouble()
Scanner 输入扫描 next(), nextInt(), nextLine()

java.io 包

java.io 包提供了输入输出流相关的类。

类名 用途 重要方法
File 文件操作 exists(), mkdir(), delete()
FileInputStream 文件输入流 read(), close()
FileOutputStream 文件输出流 write(), close()
BufferedReader 缓冲读取 readLine(), close()
PrintWriter 格式化输出 print(), println(), close()

String 类详解

String 是Java中最常用的类之一,用于处理字符串。

创建字符串

// 字面量方式(推荐)
String str1 = "Hello World";

// 构造方法方式
String str2 = new String("Hello World");
String str3 = new String(new char[]{'H', 'e', 'l', 'l', 'o'});

// 从字节数组创建
byte[] bytes = {72, 101, 108, 108, 111};
String str4 = new String(bytes);

常用方法

String str = "Hello World";

// 长度和字符访问
int length = str.length();              // 11
char ch = str.charAt(0);                // 'H'
int index = str.indexOf('o');           // 4
int lastIndex = str.lastIndexOf('o');   // 7

// 子字符串
String sub1 = str.substring(6);         // "World"
String sub2 = str.substring(0, 5);      // "Hello"

// 大小写转换
String upper = str.toUpperCase();       // "HELLO WORLD"
String lower = str.toLowerCase();       // "hello world"

// 去除空白
String trimmed = "  Hello  ".trim();    // "Hello"

// 替换
String replaced = str.replace('l', 'L'); // "HeLLo WorLd"
String replacedAll = str.replaceAll("o", "0"); // "Hell0 W0rld"

// 分割
String[] parts = str.split(" ");        // ["Hello", "World"]

// 判断
boolean starts = str.startsWith("Hello"); // true
boolean ends = str.endsWith("World");     // true
boolean contains = str.contains("llo");   // true
boolean empty = str.isEmpty();            // false

字符串比较

String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");

// 引用比较(不推荐用于内容比较)
System.out.println(str1 == str2);        // true(字符串池)
System.out.println(str1 == str3);        // false

// 内容比较(推荐)
System.out.println(str1.equals(str2));   // true
System.out.println(str1.equals(str3));   // true
System.out.println(str1.equalsIgnoreCase("HELLO")); // true

// 字典序比较
int result = str1.compareTo("World");     // 负数

字符串格式化

// String.format()
String formatted = String.format("姓名:%s,年龄:%d,分数:%.2f", 
                                 "张三", 20, 85.678);

// printf风格格式化
System.out.printf("姓名:%s,年龄:%d%n", "李四", 25);

// 常用格式说明符
// %s - 字符串
// %d - 整数
// %f - 浮点数
// %c - 字符
// %b - 布尔值
// %n - 换行符

StringBuilder 类

StringBuilder 用于高效地构建字符串,避免String的不可变性带来的性能问题。

StringBuilder sb = new StringBuilder();

// 追加内容
sb.append("Hello");
sb.append(" ");
sb.append("World");
sb.append(123);

// 插入内容
sb.insert(5, " Java");

// 删除内容
sb.delete(5, 10);

// 替换内容
sb.replace(0, 5, "Hi");

// 反转
sb.reverse();

// 转换为String
String result = sb.toString();

// 链式调用
String result2 = new StringBuilder()
    .append("Hello")
    .append(" ")
    .append("World")
    .toString();

Math 类

Math 类提供了常用的数学运算方法。

// 常量
double pi = Math.PI;        // 3.141592653589793
double e = Math.E;          // 2.718281828459045

// 基本运算
int abs = Math.abs(-10);           // 10
double max = Math.max(3.5, 2.8);   // 3.5
double min = Math.min(3.5, 2.8);   // 2.8

// 幂运算
double pow = Math.pow(2, 3);       // 8.0
double sqrt = Math.sqrt(16);       // 4.0
double cbrt = Math.cbrt(27);       // 3.0

// 三角函数
double sin = Math.sin(Math.PI / 2); // 1.0
double cos = Math.cos(0);           // 1.0
double tan = Math.tan(Math.PI / 4); // 1.0

// 对数函数
double log = Math.log(Math.E);      // 1.0
double log10 = Math.log10(100);     // 2.0

// 取整函数
double ceil = Math.ceil(3.2);       // 4.0
double floor = Math.floor(3.8);     // 3.0
long round = Math.round(3.6);       // 4

// 随机数
double random = Math.random();      // [0.0, 1.0)

Random 类

Random 类提供了更多的随机数生成功能。

Random random = new Random();

// 基本随机数
int randomInt = random.nextInt();           // 随机整数
int boundedInt = random.nextInt(100);       // [0, 100)
double randomDouble = random.nextDouble();   // [0.0, 1.0)
boolean randomBoolean = random.nextBoolean();

// 指定种子(可重现的随机序列)
Random seededRandom = new Random(12345);

// 生成指定范围的随机数
int min = 10, max = 50;
int rangeRandom = random.nextInt(max - min + 1) + min; // [10, 50]

System 类

System 类提供了系统相关的功能。

// 标准输入输出
System.out.println("输出到控制台");
System.err.println("错误输出");

// 系统属性
String javaVersion = System.getProperty("java.version");
String osName = System.getProperty("os.name");
String userHome = System.getProperty("user.home");

// 环境变量
String path = System.getenv("PATH");

// 时间
long currentTime = System.currentTimeMillis();  // 毫秒时间戳
long nanoTime = System.nanoTime();              // 纳秒时间

// 数组复制
int[] source = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(source, 0, dest, 0, source.length);

// 垃圾回收
System.gc();  // 建议JVM进行垃圾回收

// 程序退出
// System.exit(0);  // 正常退出
// System.exit(1);  // 异常退出

Arrays 类

Arrays 类提供了数组操作的实用方法。

import java.util.Arrays;

int[] arr = {3, 1, 4, 1, 5, 9, 2, 6};

// 排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // [1, 1, 2, 3, 4, 5, 6, 9]

// 二分查找(数组必须已排序)
int index = Arrays.binarySearch(arr, 4);  // 4

// 填充数组
int[] filled = new int[5];
Arrays.fill(filled, 10);  // [10, 10, 10, 10, 10]

// 数组比较
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
boolean equal = Arrays.equals(arr1, arr2);  // true

// 数组复制
int[] copied = Arrays.copyOf(arr, arr.length);
int[] partial = Arrays.copyOfRange(arr, 2, 5);

// 转换为字符串
String str = Arrays.toString(arr);

Objects 类

Objects 类提供了对象操作的实用方法(Java 7+)。

import java.util.Objects;

String str1 = "Hello";
String str2 = null;

// 安全的equals比较
boolean equal = Objects.equals(str1, str2);  // false
boolean equal2 = Objects.equals(null, null); // true

// 安全的hashCode
int hash1 = Objects.hashCode(str1);  // 不会抛出NPE
int hash2 = Objects.hashCode(str2);  // 0

// 非空检查
String nonNull = Objects.requireNonNull(str1);  // 返回str1
// String willThrow = Objects.requireNonNull(str2);  // 抛出NPE

// 带消息的非空检查
String nonNull2 = Objects.requireNonNull(str1, "字符串不能为空");

// toString
String toString1 = Objects.toString(str1);        // "Hello"
String toString2 = Objects.toString(str2, "默认值"); // "默认值"

常用工具方法示例

字符串工具类

public class StringUtils {

    // 判断字符串是否为空或null
    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }

    // 判断字符串是否为空白
    public static boolean isBlank(String str) {
        return str == null || str.trim().length() == 0;
    }

    // 安全的字符串连接
    public static String join(String delimiter, String... strings) {
        if (strings == null || strings.length == 0) {
            return "";
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < strings.length; i++) {
            if (i > 0) {
                sb.append(delimiter);
            }
            sb.append(strings[i] != null ? strings[i] : "");
        }
        return sb.toString();
    }

    // 重复字符串
    public static String repeat(String str, int count) {
        if (str == null || count <= 0) {
            return "";
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < count; i++) {
            sb.append(str);
        }
        return sb.toString();
    }
}

数学工具类

public class MathUtils {

    // 判断是否为质数
    public static boolean isPrime(int n) {
        if (n <= 1) return false;
        if (n <= 3) return true;
        if (n % 2 == 0 || n % 3 == 0) return false;

        for (int i = 5; i * i <= n; i += 6) {
            if (n % i == 0 || n % (i + 2) == 0) {
                return false;
            }
        }
        return true;
    }

    // 计算最大公约数
    public static int gcd(int a, int b) {
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }

    // 计算最小公倍数
    public static int lcm(int a, int b) {
        return (a * b) / gcd(a, b);
    }

    // 生成指定范围的随机整数
    public static int randomInt(int min, int max) {
        return (int) (Math.random() * (max - min + 1)) + min;
    }
}

Java标准库功能强大,熟练掌握这些常用类和方法能大大提高开发效率。建议在实际开发中多查阅官方文档,了解更多细节和最佳实践。