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

原文地址:https://www.cnblogs.com/bingyimeiling/p/10314882.html

时间: 2024-10-11 14:28:10

Java初学者容易犯的代码错误的相关文章

java继承会犯的小错误

注意事项:阅读本文前应该先了解java的继承.本文定位为已经继承基础知识. 一:试图覆盖私有方法 先上代码 1 public class Father { 2 3 private void print() { 4 System.out.println("private print"); 5 } 6 7 public static void main(String[] args) { 8 Father father = new Son(); 9 father.print(); 10 }

Java开发者常犯的十个错误

翻译自:Top 10 Mistakes Java Developers Make 文章列出了Java开发者最常犯的是个错误. 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList,但这个ArrayList是Arrays的私有静态类,不是java.util.ArrayList.java.util.Arrays.Arra

初学者易犯的的错误

//用户类 public class User{ private int id; public int getId(){ return this.id;  } public void setId(int id_){  this.id = id_; } } //测试类 public class Test{ User user = new User(); user.getId();//错误的做法(类中只能存在属性或方法) User.getId(); public static void meth()

java 初学者需注意问题

1.Java为什么能跨平台运行? Java语言编写的程序既是编译型的,又是解释型的.程序代码经过编译之后转换为一种Java字节码的中间语言,Java虚拟机即JVM将对字节码进行解释和运行.编译只进行一次,而解释在每次运行程序时都会进行. Java程序运行在虚拟机上,每个平台都有JVM,所以Java能实现“一次编译,到处运行”. 2.请尝试安装和配置JDK,并给出安装.配置JDK的步骤. jdk可以从Oracle官网上下载,下载后直接安装即可,傻瓜式安装点击下一步,不过切记安装目录中不要有中文.

我(作为一名开发者)所犯过的错误[转]

投递人 itwriter 发布于 2016-11-10 17:49 评论(6) 有657人阅读 原文链接 [收藏] ? ? 英文原文:Mistakes I made (as a developer) 我 2006 年开始工作,至今已经 10 年.10 年是个里程碑,我开始回顾自己曾经犯过的错误,以及我希望从同行那里得到什么类型的忠告.一切都在快速改变,10 年了,我不能确定这些秘诀是否还有用. 不管您是新人还是老手,您都会发现我的话是有用的.我期待听到您的观点,所以请不吝赐教给我回信. 坚持使用

Python程序员最常犯的十个错误

不管是在学习还是工作过程中,人都会犯错.虽然Python的语法简单.灵活,但也一样存在一些不小的坑,一不小心,初学者和资深Python程序员都有可能会栽跟头.本文是Toptal网站的程序员梳理的10大常见错误,非常有参考意义.大家在开发过程中需要格外注意.译文中如有理解错误的地方,可以在网站留言或通过微信公众号编程派回复. 常见错误1:错误地将表达式作为函数的默认参数 在Python中,我们可以为函数的某个参数设置默认值,使该参数成为可选参数.虽然这是一个很好的语言特性,但是当默认值是可变类型时

Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误

这篇是计算机类的优质预售推荐>>>><Verilog与SystemVerilog编程陷阱:如何避免101个常犯的编码错误> 编辑推荐 纠错式学习,从"陷阱"中学习编程,加深对语言本身的理解. 逆向式学习,从错误中学习避免错误的方法,让读者写出更好的代码. 案例式学习,将101个"陷阱"分类汇编,以针对性案例引导读者掌握编程要点. 译者序 译者序 随着电子设计自动化(Electronic Design Automation,EDA)

web开发易犯的低级错误

web开发过程中,我们经常会犯一些小错误,但是却浪费了大量的时间,这里总结几个错误,以示警醒. 1.调试js的时候,明明设置了断点,但是就是不走断点.期初遇到这个问题,我不停的修改js代码,修改网页的html,不停的刷新浏览器,以为缓存的问题.结果后来发现,是因为有多出引入js,当我设置了一个断点,而程序走的却是其他的js,这个问题如果发现了,就根本不是问题,但是如果没发现,就要浪费你很长的时间咯. 2.提交表单,有的field的值却没有传递到后台.明明写了name属性啊,明明其他的field都

java unreachable code不可达代码

例子: static int test(int testval) {    int target = 1;    if (testval > target)       System.out.println(1);    return -1;(下边是永远不会达到的代码,所以编译器提示错误(unreachable code))    if (testval < target)       return +1;    return 0; // match }. 修改为让return -1 与上边的