zoukankan      html  css  js  c++  java
  • Java初学者容易犯的代码错误

    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得造成多少垃圾啊!不是说不让创建对象,这要根据业务情况而定,最起码不要创造垃圾(不使用的对象)。

  • 相关阅读:
    libpcap编程实例
    libnet发包例子(tcp udp arp广播)
    C#中一个窗口是一个类呢,还是一个窗口类的实例呢?(转)
    创建一个实例&创建一个线程。。
    (转)C#中的 Interfaces (For 初学者们)
    C#中接口声明属性,但是提示“接口”中不能有属性。
    十万个为什么:现在还没发现“虚函数virtual”和多态性的优点,估计是因为我还没有编程序吧。
    C#中的多态性
    Windows 程序支持 Unicode
    Python 中的函数与类的方法
  • 原文地址:https://www.cnblogs.com/bingyimeiling/p/10314882.html
Copyright © 2011-2022 走看看