Java程序员容易犯的10大低级错误

本文列举了Java程序员常犯的10个低级错误,包括使用'=='比较字符串、在foreach循环中修改list、日志不规范、魔鬼数字、空指针异常、数组下标越界、字符串转换数字不捕获异常、资源未及时释放、循环体性能问题以及数据类未重载toString()。详细解读每个错误的含义并提供了示例和解决方案。
摘要由CSDN通过智能技术生成

本文根据java开发人员在编码过程中容易忽视或经常出错的地方进行了整理,总结了十个比较常见的低级错误点,方便大家学习。

1、不能用“==”比较两个字符串内容相等。
2、 对list做foreach循环时,循环代码中不能修改list的结构。
3、 日志和实际情况不一致;捕获异常后没有在日志中记录异常栈。
4、 魔鬼数字。
5、 空指针异常。
6、 数组下标越界。
7、 将字符串转换为数字时没有捕获NumberFormatException异常。
8、 对文件、IO、数据库等资源进行操作后没有及时、正确进行释放。
9、 循环体编码时不考虑性能,循环体中包含不需要的重复逻辑。
10、数据类没有重载toString()方法。

1不能用“==”比较两个字符串内容相等。

解读

两个字符串在比较内容是否相等的时候,如果使用“”,当两个字符串不是指向内存中同一地址,那么即使这两个字符串内容一样,但是用“”比较出来的结果也是false。所以两个字符串在比较内容是否相等的时候一定要使用“equals”方法。

示例

下面就是一个字符串比较的例子:

publicclass Test { 
publicstaticvoid main(String[] args) 
{ 
String a = new String("a"); 
String a2 = "a"; 
if(a == a2) 
{ 
System.out.println("a == a2return true."); 
} 
else
{ 
System.out.println("a == a2 returnfalse."); 
} 
if(a.equals(a2)) 
{ 
 System.out.println("a.equals(a2)return true."); 
} 
else
{ 
System.out.println("a.equals(a2)return false."); 
} 
} 
}

最终输出的结果为:

a == a2 return false. a.equals(a2) return true.

2 不能在foreach循环中修改list结构

解读

在jdk1.5版以上的foreach循环写法中,不能在循环代码中对正在循环的list的结构进行修改,即对list做add、remove等操作,如果做了这些操作,必须立即退出循环,否则会抛出异常。

示例

publicclass Test { 
 publicstaticvoid main(String[] args) 
 { 
 List<Person> list = new ArrayList<Person>(); 
 Person p1 = new Person("张三", 23); 
 Person p2 = new Person("李四", 26); 
 Person p3 = new Person("王五", 34); 
 Person p4 = new Person("刘二", 15); 
 Person p5 = new Person("朱六", 40); 
  
 list.add(p1); 
 list.add(p2); 
 list.add(p3); 
 list.add(p4); 
 list.add(p5); 
 for(Person p : list) 
 { 
 if("王五".equals(p.getName())) 
 { 
 list.remove(p); // 不能在此时删除对象。 
 } 
elseif("李四".equals(p.getName())) 
 { 
 list.remove(p); // 不能在此时删除对象。 
 } 
 } 
 System.out.println(list.size()); 
 } 
} 
  
class Person 
{ 
 private String name; 
 privateintage; 
  
 public Person(String name, int age) 
 { 
 this.name = name; 
 this.age = age; 
 } 
  
 public String getName() 
 { 
 returnname; 
 } 
  
 publicvoid
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值