[Java]新手必看10个常见错误及解决方法
### 1. 空指针异常(NullPointerException)
错误原因:尝试调用一个空对象的方法或访问其属性。
解决方法:
- 使用前检查对象是否为null
- 使用Optional类进行安全处理
- 使用三目运算符提供默认值
```java
// 错误示例
String str = null;
System.out.println(str.length());
// 正确做法
if (str != null) {
System.out.println(str.length());
}
// 或使用Optional
Optional.ofNullable(str).ifPresent(s -> System.out.println(s.length()));
```
### 2. 数组越界异常(ArrayIndexOutOfBoundsException)
错误原因:访问了不存在的数组索引。
解决方法:
- 确保索引在有效范围内
- 使用增强for循环
```java
// 错误示例
int[] arr = {1, 2, 3};
System.out.println(arr[5]);
// 正确做法
if (index >= 0 && index < arr.length) {
System.out.println(arr[index]);
}
// 或使用增强for循环
for (int num : arr) {
System.out.println(num);
}
```
### 3. 类型转换异常(ClassCastException)
错误原因:不安全的类型强制转换。
解决方法:
- 使用instanceof进行类型检查
- 使用泛型
```java
// 错误示例
Object obj = Hello;
Integer num = (Integer) obj;
// 正确做法
if (obj instanceof Integer) {
Integer num = (Integer) obj;
}
```
### 4. 并发修改异常(ConcurrentModificationException)
错误原因:在遍历集合时修改集合内容。
解决方法:
- 使用迭代器的remove方法
- 使用并发集合类
- 创建集合的副本进行遍历
```java
// 错误示例
List list = new ArrayList<>();
list.add(a);
for (String s : list) {
if (a.equals(s)) {
list.remove(s); // 抛出异常
}
}
// 正确做法
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
String s = iterator.next();
if (a.equals(s)) {
iterator.remove(); // 安全删除
}
}
```
### 5. 数字格式异常(NumberFormatException)
错误原因:将非数字字符串转换为数字类型。
解决方法:
- 使用try-catch处理异常
- 使用正则表达式验证
```java
// 错误示例
String str = abc;
int num = Integer.parseInt(str);
// 正确做法
try {
int num = Integer.parseInt(str);
} catch (NumberFormatException e) {
System.out.println(字符串不是有效数字);
}
// 或使用正则验证
if (str.matches(-?\d+)) {
int num = Integer.parseInt(str);
}
```
### 6. 内存泄漏
错误原因:对象不再使用但仍被引用,无法被垃圾回收。
解决方法:
- 及时释放资源
- 使用弱引用
- 避免静态集合长期持有对象引用
```java
// 错误示例
public class MemoryLeak {
private static List
更多推荐

所有评论(0)