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得造成多少垃圾啊!不是说不让创建对象,这要根据业务情况而定,最起码不要创造垃圾(不使用的对象)。
Java初学者容易犯的代码错误的更多相关文章
- Java开发者常犯的十个错误
翻译自:Top 10 Mistakes Java Developers Make 文章列出了Java开发者最常犯的是个错误. 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开 ...
- java继承会犯的小错误
注意事项:阅读本文前应该先了解java的继承.本文定位为已经继承基础知识. 一:试图覆盖私有方法 先上代码 public class Father { private void print() { S ...
- Java中数组转为List三种情况的优劣对比,常犯的类型转换错误原因解析
一.最常见方式(未必最佳)通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常. 关键代码:List list = Arrays. ...
- java 初学者需注意问题
1.Java为什么能跨平台运行? Java语言编写的程序既是编译型的,又是解释型的.程序代码经过编译之后转换为一种Java字节码的中间语言,Java虚拟机即JVM将对字节码进行解释和运行.编译只进行一 ...
- 【转载学习前辈的经验】-- Mistakes I made (as a developer) 我(作为一名开发者)所犯过的错误
我 2006 年开始工作,至今已经 10 年.10 年是个里程碑,我开始回顾自己曾经犯过的错误,以及我希望从同行那里得到什么类型的忠告.一切都在快速改变,10 年了,我不能确定这些秘诀是否还有用. 不 ...
- 对Java初学者的忠告
1) 适合自己的图书才是最好的,最好的书并不一定适合你,看自己的情况. 如果你是一个Java初学者一上手就捧一本Thinking in Java在手里,我想你的日子是不会好过的,那样的书给有一定基础的 ...
- PHP开发者常犯的MySQL错误
PHP开发者常犯的MySQL错误 数据库是WEB大多数应用开发的基础.如果你是用PHP,那么大多数据库用的是MYSQL也是LAMP架构的重要部分. PHP看起来很简单,一个初学者也可以几个小时内就 ...
- java 初学者 第一阶段作业编程总结及心得体会
0.前言 第一阶段java作业分为3次. 第一次作业是简单得一些语法和一些简单得逻辑思维,主要内容有求三角形是什么三角形的,还有就是求坐标点所在范围的,也涉及到了数字和字母的转换,总之相相当于是给ja ...
- 一位资深程序员大牛给予Java初学者的学习路线建议
java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...
随机推荐
- margin-top / padding-top 的百分比 到底是多少?
之前,我以为 margin-top/padding-top 如果设置成%,得到的是 基于父对象总高度的百分比. 但是,这种想法是错的.因为在CSS标准里,是基于父对象宽度的百分比. <style ...
- Jenkins+Gradle+Git自动打apk包,并上传到ftp
软件安装: 1.安装Jenkins.git.AndroidSDK 2.配置AndroidSDK环境变量 ANDROID_HOME:D:\Androidsdk PATH:%ANDROID_HOME%\p ...
- hibernate入门一
---恢复内容开始--- hibernate简介: 1.优秀的持久化(通俗讲把内存上的短时间运行信息存储在持久化硬盘上)框架. 2.作用于持久层,因为没什么侵入性,所以同样适用于其他层面上的存储 3. ...
- NumPy学习_02 ndarray基本操作
1.算术运算符 它们只用于位置相同的元素之间,即为元素级的运算. 所得到的运算结果组成一个新的数组. 不用编写循环即可对数据执行批量运算.(矢量化) import numpy as np # 创建一个 ...
- java整数溢出问题及提升为long型
整数溢出问题 Java 中的 int 用 32 位表示,正数最大值的情况,首位是 0,其他位都可以是 1(就是 2^31-1).但是如果正数过大了,例如 2^31,计算机不得不把首位变成 1,并且计算 ...
- Python:每日一题008
题目: 判断101-200之间有多少个素数,并输出所有素数. 程序分析: 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 个人思路及代码: li ...
- testXSS <img src="aa" onerror="javascript:alert('XSS');"/>
adsa </p><img src="aa" onerror="javascript:alert('XSS');"/><p> ...
- PNP的学习-EPNP
EPNP主要是利用已知的3d点,通过PCA选择4个控制点,建立新的局部坐标系,从而将3d坐标用新的控制点表示出来. 然后,利用相机投影模型和2d点,转换到相机坐标系中,再在相机坐标系中建立和世界坐标系 ...
- java39
String a= "hello.a.java;b.java;hello.java;hello.toha;"; //将每个分号的内容取出来 String[] res=a.split ...
- PL/SQL Developer 破解方法~
1.有注册码的方式:亲自测试,立马见效 LicenseNumber : 999 productCode : 46jvnzf74ysf3mqm4hx4tvhcamh8gpe3v5 SeriesNumbe ...