Java核心类库是指Java语言提供的一组基础类和接口,用于处理常见的任务和操作,包括字符串处理、集合操作、IO操作、多线程等。
目录
一. java.lang包:
- Object类:所有类的父类,基本方法如equals()、hashCode()、toString()等。
- String类:处理字符串的类,提供了字符串连接、格式化、替换等操作。
- Math类:提供了常用的数学方法和常量。
- System类:提供与系统相关的方法,如标准输入输出、环境变量等。
1. Object类:
- Object类是Java中所有类的根类。它提供了一些常用方法,如`equals()`用于比较对象的相等性,`hashCode()`用于获取对象的哈希码值,`toString()`用于返回对象的字符串表示等。
- 代码示例:
public class MyClass {
private int id;
private String name;
// 省略构造器和其他方法
@Override
public boolean equals(Object obj) {
if (this == obj) // 比较引用是否相同
return true;
if (obj == null || getClass() != obj.getClass()) // 比较类类型是否相同
return false;
MyClass myClass = (MyClass) obj; // 强制类型转换
return id == myClass.id && Objects.equals(name, myClass.name); // 比较属性值是否相同
}
@Override
public int hashCode() {
return Objects.hash(id, name); // 计算哈希码值
}
@Override
public String toString() {
return "MyClass{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
2. String类:
- String类表示字符串,提供了大量的方法用于字符串的操作和处理,如连接、截取、替换、格式化等。
- 代码示例:
public class StringExample {
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "World";
String s3 = s1 + ", " + s2; // 字符串拼接
System.out.println(s3); // 输出:Hello, World
String s4 = s3.substring(7); // 子字符串截取
System.out.println(s4); // 输出:World
String s5 = s3.replace("Hello", "Hi"); // 字符串替换
System.out.println(s5); // 输出:Hi, World
String s6 = String.format("The result is %.2f", 3.14159); // 格式化字符串
System.out.println(s6); // 输出:The result is 3.14
}
}
3. Math类:
- Math类提供了常用的数学相关方法和常量,如绝对值、幂运算、三角函数、常量π等。
- 代码示例:
public class MathExample {
public static void main(String[] args) {
double a = -3.5;
double b = 2.7;
double abs = Math.abs(a); // 绝对值
System.out.println(abs); // 输出:3.5
double pow = Math.pow(b, 2); // 平方
System.out.println(pow); // 输出:7.29
double sin = Math.sin(Math.PI / 2); // 正弦函数
System.out.println(sin); // 输出:1.0
}
}
4. System类:
- System类提供了与系统相关的一些静态方法和字段,如标准输入输出、环境变量、当前时间等。
- 代码示例:
public class SystemExample {
public static void main(String[] args) {
System.out.println("Hello, World!"); // 输出到标准输出
System.err.println("An error occurred!"); // 输出到标准错误流
long start = System.currentTimeMillis(); // 获取当前时间(毫秒)
// 执行一段耗时操作
long end = System.currentTimeMillis();
System.out.println("Elapsed time: " + (end - start) + " ms"); // 输出耗时
String value = System.getenv("JAVA_HOME"); // 获取环境变量
System.out.println("JAVA_HOME: " + value);
}
}
5. Thread类和Runnable接口:
- Thread类用于创建和管理线程,实现多线程编程。
- Runnable接口定义了一个线程的任务,可以通过实现该接口来创建一个可执行的任务。
- 代码示例:
public class ThreadExample {
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable()); // 创建线程
thread.start(); // 启动线程
System.out.println("Main thread"); // 主线程执行
// 匿名内部类实现Runnable接口
Thread anonymousThread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Anonymous thread");
}
});
anonymousThread.start();
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("MyRunnable thread");
}
}
6. Enum枚举类:
- Enum枚举类提供了一种定义有限个数常量值的类型。
- Enum枚举类可以包含方法、构造函数和字段。
- 代码示例:
public class EnumExample {
public static void main(String[] args) {
DayOfWeek day = DayOfWeek.MONDAY;
System.out.println(day); // 输出:MONDAY
switch (day) {
case MONDAY:
System.out.println("Today is Monday");
break;
case TUESDAY:
case WEDNESDAY:
case THURSDAY:
case FRIDAY:
System.out.println("Today is a weekday");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Today is a weekend");
}
}
}
enum DayOfWeek {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
二. java.util包:
- 集合框架:包括List、Set、Map等接口和对应的实现类,提供了对集合数据的操作和管理。
- Iterator和Enumeration接口:用于遍历集合元素。
- Arrays类:提供了对数组的操作,如排序、搜索等。
- Date和Calendar类:处理日期和时间相关操作。
1. 集合框架:
- List接口和ArrayList类:用于存储有序的元素列表,支持随机访问和动态调整大小。
- Set接口和HashSet类:用于存储无序的唯一元素集合。
- Map接口和HashMap类:用于存储键值对的映射关系,其中键是唯一的。
- Collections类:提供了一些静态方法,如sort()方法用于对集合进行排序,binarySearch()方法用于在有序集合中二分查找等。
2. 迭代器和枚举:
- Iterator接口:用于遍历集合元素,提供了hasNext()、next()、remove()等方法。
- Enumeration接口:在早期集合类中使用,提供了类似于Iterator的功能,但功能较为有限。
3. Arrays类:
- Arrays类提供了对数组的操作方法,如排序、搜索和填充。
- 代码示例:
import java.util.Arrays;
public class ArraysExample {
public static void main(String[] args) {
int[] arr = {5, 2, 8, 1, 9};
Arrays.sort(arr); // 对数组进行排序
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 5, 8, 9]
int index = Arrays.binarySearch(arr, 5); // 二分搜索
System.out.println("Index of 5: " + index); // 输出:Index of 5: 2
int[] copy = Arrays.copyOf(arr, 3); // 数组复制
System.out.println(Arrays.toString(copy)); // 输出:[1, 2, 5]
Arrays.fill(copy, 0); // 数组填充
System.out.println(Arrays.toString(copy)); // 输出:[0, 0, 0]
}
}
4. Date和Calendar类:
- Date类提供了处理日期和时间的功能,但在Java 8及以后被推荐使用新的日期时间API。
- Calendar类是一个抽象类,提供了对日期和时间的操作。
- 代码示例: