1. 不会判断空java
空指针异常是全部Java初学者接触最多的异常,没有之一。缘由是,大家拿到一个对象后容易不假思索的直接使用(直接给这个对象的属性赋值,直接调用这个对象的方法等),不报异常才怪呢!下面是最经典的判断空的例子:程序员
private boolean isEmpty(String str){ if(str==null || "".equals(str)){ return true; } return false; }
2. 在for循环嵌套里调用底层查询数据库的方法数据库
这种方式必定要避免!!由于查询数据库是很耗时的,而在for循环里不停的查询数据库性能有多低可想而知,那么怎么替换这种方式呢?很简单:在for循环外面先把符合条件的数据获取到,存在map里,而后在for循环里面根据key获取对应的value值。这种状况虽然多些循环,可是只须要查询一次数据库便可。jvm
3. 在List循环里删除元素性能
java.util.ConcurrentModificationException这个异常就是你在循环list是删除元素形成的。List是按照下标寻找元素的,并且有大小长度,如何你删除一个元素,list列表的大小缩小而且下标也会随之变化,因此当你想要在一个循环中用下标删除多个元素的时候,它并不会正常的生效。这个时候应该将list转成Iterator遍历删除,代码以下:学习
List<String> strList = new ArrayList<>(); strList.add("one"); strList.add("two"); strList.add("three"); strList.add("four"); for(String s : strList){ if(s.equals("two")){ strList.remove(s);//错误 } } Iterator<String> iter = strList.iterator(); while (iter.hasNext()) { String s = iter.next(); if (s.equals("two")) { iter.remove();//正确 } }
4. 不会重构代码spa
学习java的时候,每一个人都遇到过这种状况:不一样方法里包含相同的功能代码块,例如日期转换,初学者常常会在一个方法里实现的代码,若是另外一个方法也要用,就采用复制粘贴的方法,把相同的代码拷到另外一个方法里面去,这种代码看起来多臃肿啊,后期也很难维护。遇到这种状况应该把公共代码进行封装(面向对象第一特征),无论谁要用到这个功能,只须要调用公共方法便可。指针
5. 建立对象太多code
我曾经见过一个程序员写的方法里处处都是new对象,把我吓了一跳,这给jvm得形成多少垃圾啊!不是说不让建立对象,这要根据业务状况而定,最起码不要创造垃圾(不使用的对象)。对象