下面是核心Java类库的详细教程,涵盖了Java的String类、集合框架、日期和时间API、I/O操作、异常处理以及Java 8的新特性等核心概念。这些是每个Java开发者必备的技能:
Java教程之:核心Java类库
1. String类
- 字符串的创建与操作
Java中的String类用于处理字符串,字符串在Java中是不可变的。字符串可以通过字面量或new关键字创建。
String str1 = "Hello";
String str2 = new String("World");
System.out.println(str1 + " " + str2);
常用操作包括字符串拼接、替换、查找、大小写转换等:
String str = "Hello World";
String upperStr = str.toUpperCase(); // 转为大写
String replacedStr = str.replace("World", "Java"); // 替换字符串
- StringBuffer与StringBuilder
StringBuffer和StringBuilder都是可变的字符序列,主要用于字符串的修改操作。StringBuffer是线程安全的,而StringBuilder不是,适用于单线程环境。
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb);
2. 集合框架
- List、Set、Map的接口及其实现类
- List:有序且可重复的集合,常见实现类为
ArrayList、LinkedList。java List<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); - Set:无序且不可重复的集合,常见实现类为
HashSet、TreeSet。java Set<String> set = new HashSet<>(); set.add("Java"); set.add("Java"); - Map:存储键值对的集合,常见实现类为
HashMap、TreeMap。Map<String, Integer> map = new HashMap<>(); map.put("Java", 1); map.put("Python", 2); - 遍历集合
- 使用
for-each循环遍历集合:
“`java
for (String s : list) {
System.out.println(s);
}
- **泛型在集合中的使用**
泛型可以提供类型安全的集合操作,避免类型转换错误。
java
List integerList = new ArrayList<>();
integerList.add(1);
integerList.add(2);
#### **3. 日期和时间API**
- **Date和Calendar类**
`Date`类用于表示日期和时间,但它的方法已过时,推荐使用`Calendar`类。
java
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.set(2023, Calendar.JANUARY, 1);
- **Java 8的DateTime API**
Java 8引入了`LocalDate`、`LocalTime`、`LocalDateTime`等类,简化了日期和时间的处理。
java
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
#### **4. 输入输出(I/O)**
- **File类**
`File`类用于处理文件和目录的创建、删除、重命名等操作。
java
File file = new File(“example.txt”);
if (file.exists()) {
System.out.println(“File exists.”);
}
- **字节流与字符流**
- **字节流**:用于处理所有类型的数据(如图片、视频)。常用类有`InputStream`和`OutputStream`。
- **字符流**:用于处理文本数据。常用类有`Reader`和`Writer`。
java
FileInputStream fis = new FileInputStream(“file.txt”);
FileOutputStream fos = new FileOutputStream(“output.txt”);
- **BufferedReader和BufferedWriter**
`BufferedReader`用于高效地读取文本,`BufferedWriter`用于高效地写入文本。
java
BufferedReader reader = new BufferedReader(new FileReader(“input.txt”));
BufferedWriter writer = new BufferedWriter(new FileWriter(“output.txt”));
- **序列化与反序列化**
Java中的序列化将对象转换为字节流以便保存或传输,反序列化则是将字节流转换回对象。
java
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(“object.dat”));
oos.writeObject(myObject);
#### **5. 异常处理**
- **异常的种类(Checked异常和Unchecked异常)**
- **Checked异常**:编译时异常,如`IOException`,必须处理。
- **Unchecked异常**:运行时异常,如`NullPointerException`,不需要强制处理。
- **try-catch-finally语句**
使用`try-catch`来捕获异常,并在`finally`中执行清理工作。
java
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println(“Error: ” + e.getMessage());
} finally {
System.out.println(“Cleanup done.”);
}
- **自定义异常类**
自定义异常类继承`Exception`类或其子类。
java
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
#### **6. Java 8新特性**
- **Lambda表达式**
Lambda表达式用于简化函数式编程,允许传递行为(函数作为参数)。
java
List list = Arrays.asList(“Apple”, “Banana”, “Cherry”);
list.forEach(s -> System.out.println(s));
- **Stream API**
Stream API简化了对集合的操作,如过滤、排序、映射等。
java
list.stream().filter(s -> s.startsWith(“A”)).forEach(System.out::println);
- **Optional类**
`Optional`类用于避免`NullPointerException`,表示可能为null的值。
java
Optional optional = Optional.ofNullable(“Hello”);
optional.ifPresent(System.out::println);
- **方法引用**
方法引用是Lambda表达式的一种简化方式,直接引用已有方法。
java
List list = Arrays.asList(“a”, “b”, “c”);
list.forEach(System.out::println);
“`
总结
本部分涵盖了Java核心类库的多个关键方面,包括字符串处理、集合框架、日期时间API、I/O操作、异常处理及Java 8的新特性。掌握这些类库是Java开发的基础,可以帮助开发者高效地编写、管理和优化应用程序。无论是基础操作,还是更复杂的功能,都能通过这些类库轻松实现。