### Java新手必看10个常见错误及避免方法

#### 1. 空指针异常(NullPointerException)

错误示例:

```java

String str = null;

System.out.println(str.length());

```

避免方法:

- 使用前检查对象是否为null

- 使用Optional类进行安全处理

- 使用Objects.requireNonNull()进行验证

#### 2. 数组越界(ArrayIndexOutOfBoundsException)

错误示例:

```java

int[] arr = new int[5];

System.out.println(arr[5]);

```

避免方法:

- 访问数组前检查索引范围

- 使用增强for循环遍历数组

- 使用List等集合类替代数组

#### 3. 类型转换异常(ClassCastException)

错误示例:

```java

Object obj = Hello;

Integer num = (Integer) obj;

```

避免方法:

- 使用instanceof进行类型检查

- 使用泛型避免强制类型转换

- 合理设计类层次结构

#### 4. 并发修改异常(ConcurrentModificationException)

错误示例:

```java

List list = new ArrayList<>();

list.add(a);

for (String s : list) {

list.remove(s);

}

```

避免方法:

- 使用迭代器的remove()方法

- 使用并发集合类

- 遍历时不要修改集合

#### 5. 资源未关闭

错误示例:

```java

FileInputStream fis = new FileInputStream(file.txt);

// 忘记调用fis.close()

```

避免方法:

- 使用try-with-resources语句

- 在finally块中关闭资源

- 使用自动资源管理

#### 6. equals和hashCode不一致

错误示例:

```java

class Person {

String name;

// 只重写equals,未重写hashCode

}

```

避免方法:

- 同时重写equals和hashCode方法

- 使用IDE自动生成这两个方法

- 确保逻辑一致性

#### 7. 字符串拼接性能问题

错误示例:

```java

String result = ;

for (int i = 0; i < 1000; i++) {

result += i;

}

```

避免方法:

- 使用StringBuilder进行字符串拼接

- 预估字符串长度初始化StringBuilder

- 避免在循环中进行字符串拼接

#### 8. 忽略异常处理

错误示例:

```java

try {

// 可能抛出异常的代码

} catch (Exception e) {

// 空的catch块

}

```

避免方法:

- 合理处理捕获的异常

- 记录异常日志

- 使用具体的异常类型

- 不要忽略异常信息

#### 9. 内存泄漏

错误示例:

```java

// 静态集合持有对象引用导致无法回收

static List list = new ArrayList<>();

```

避免方法:

- 及时清理不再使用的引用

- 使用弱引用或软引用

- 避免在长生命周期对象中持有短生命周期对象的引用

#### 10. 错误的字符串比较

错误示例:

```java

String str1 = hello;

String str2 = new String(hello);

if (str1 == str2) { // 错误的方式

// ...

}

```

避免方法:

- 使用equals()方法比较字符串内容

- 了解字符串常量池机制

- 使用Objects.equals()进行null安全比较

通过了解和避免这些常见错误,Java新手能够编写出更加健壮、高效的代码,减少调试时间,提高开发效率。建议在实际编程中多加练习,养成良好的编程习惯。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐