[Java]新手必看10个常见错误及避免方法
### 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
更多推荐
所有评论(0)