JavaSE基础知识分享(九)
写在前面
今天继续将集合后面的部分,还会加一点JavaIO流的知识!
关于 Java 增强 for
循环和 Collections
类概述:
增强 for
循环
概述
增强 for
循环用于简化数组和 Collection
集合的遍历。它使代码更简洁,易于阅读。
格式
for (元素数据类型 变量 : 数组或者 Collection 集合) {
// 使用变量,该变量就是元素
}
好处
- 简化遍历代码
- 避免使用迭代器时可能出现的复杂性
注意事项
- 增强
for
循环的目标对象(数组或集合)需要进行null
判断,以避免NullPointerException
。
示例
假设有一个 List<String>
集合 list
,遍历这个集合的传统 for
循环如下:
for (int i = 0; i < list.size(); i++) {
String item = list.get(i);
System.out.println(item);
}
使用增强 for
循环可以简化为:
for (String item : list) {
System.out.println(item);
}
Collections
类
概述
Collections
是 Java 提供的一个工具类,用于对集合进行操作。它包含了许多静态成员方法,可以对集合进行各种操作。
静态成员方法
-
public static <T> void sort(List<T> list)
对List
进行排序。 -
public static <T> int binarySearch(List<?> list, T key)
在排序的List
中进行二分查找。 -
public static <T> T max(Collection<?> coll)
返回集合中最大元素。 -
public static void reverse(List<?> list)
反转List
中元素的顺序。 -
public static void shuffle(List<?> list)
随机打乱List
中元素的顺序。
同步集合
将不安全的集合转换为线程安全的集合。
-
public static <T> Collection<T> synchronizedCollection(Collection<T> c)
返回由指定集合支持的同步(线程安全)集合。 -
public static <T> List<T> synchronizedList(List<T> list)
返回由指定列表支持的同步(线程安全)列表。 -
public static <K, V> Map<K, V> synchronizedMap(Map<K, V> m)
返回由指定地图支持的同步(线程安全)映射。 -
public static <T> Set<T> synchronizedSet(Set<T> s)
返回由指定集合支持的同步(线程安全)集。
关于Java 输入输出流和异常处理的概述:
输入输出流
概述
Java 提供了一系列类和接口来处理输入和输出操作。这些类主要分为字节流和字符流两大类。
字节流
InputStream
: 所有字节输入流的基类。OutputStream
: 所有字节输出流的基类。- 常用类:
FileInputStream
: 从文件中读取字节数据。FileOutputStream
: 向文件中写入字节数据.BufferedInputStream
: 带有缓冲区的输入流,提高效率。BufferedOutputStream
: 带有缓冲区的输出流,提高效率。
字符流
Reader
: 所有字符输入流的基类。Writer
: 所有字符输出流的基类.- 常用类:
FileReader
: 从文件中读取字符数据。FileWriter
: 向文件中写入字符数据。BufferedReader
: 带有缓冲区的字符输入流,通常用于读取文本行。BufferedWriter
: 带有缓冲区的字符输出流,通常用于写入文本行。
异常处理
概述
异常是指 Java 程序在编译或运行过程中遇到的不正常情况。异常处理机制用于处理这些情况,以避免程序崩溃。
Throwable
Error
: 表示严重的错误,通常不需要应用程序去捕获或处理。Exception
: 表示程序运行过程中发生的异常情况,程序可以捕获和处理。
异常的分类
- 编译时期异常: 需要在编译时处理(例如:
IOException
,SQLException
)。这些异常必须用try...catch
语句块处理,或者在方法签名中使用throws
声明。 - 运行时期异常 (
RuntimeException
): 不需要在编译时处理(例如:NullPointerException
,ArrayIndexOutOfBoundsException
)。这些异常可以在运行时被捕获,但不强制要求处理。
异常的处理
try...catch...finally
:try { // 可能引发异常的代码 } catch (ExceptionType e) { // 处理异常的代码 } finally { // 无论是否发生异常,都会执行的代码 }
throws
:
在方法定义上声明异常,表明该方法可能抛出异常,调用者需要处理或继续抛出。public void myMethod() throws IOException { // 方法体 }
throw
:
在方法内部抛出异常。if (condition) { throw new CustomException("Custom exception message"); }
自定义异常
自定义异常类可以扩展 Exception
或 RuntimeException
。
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
好了今天的分享就结束了,之后我将继续分享IO流后面的内容!