1. 不会判断空
空指针异常是所有 Java 初学者接触最多的异常, 没有之一. 原因是, 你们拿到一个对象后容易不假思索的直接使用 (直接给这个对象的属性赋值, 直接调用这个对象的方法等), 不报异常才怪呢! 下面是最经典的判断空的例子:
- private boolean isEmpty(String str){
- if(str==null || "".equals(str)){
- return true;
- }
- return false;
- }
2. 在 for 循环嵌套里调用底层查询数据库的方法
这种方式一定要避免!! 因为查询数据库是很耗时的, 而在 for 循环里不停的查询数据库性能有多低可想而知, 那么怎么替换这种方式呢? 很简单: 在 for 循环外面先把符合条件的数据获取到, 存在 map 里, 然后在 for 循环里面根据 key 获取对应的 value 值. 这种情况虽然多些循环, 但是只需要查询一次数据库即可.
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. 不会重构代码
学习 java 的时候, 每个人都遇到过这种情况: 不同方法里包含相同的功能代码块, 例如日期转换, 初学者经常会在一个方法里实现的代码, 如果另一个方法也要用, 就采用复制粘贴的方法, 把相同的代码拷到另一个方法里面去, 这种代码看起来多臃肿啊, 后期也很难维护. 遇到这种情况应该把公共代码进行封装 (面向对象第一特征), 不管谁要用到这个功能, 只需要调用公共方法即可.
5. 创建对象太多
我曾经见过一个程序员写的方法里到处都是 new 对象, 把我吓了一跳, 这给 jvm 得造成多少垃圾啊! 不是说不让创建对象, 这要根据业务情况而定, 最起码不要创造垃圾 (不使用的对象).
来源: https://www.cnblogs.com/bingyimeiling/p/10314882.html