Java程序员常犯的错误,你占几个?
人无完人,谁都避免不了犯错误。Java程序员也是一样,都说Java语言是一门简单的编程语言,但这并不能保证Java程序员不会犯错。那么对于广大的Java程序员来说,他们最常犯的错误有哪些呢?Java程序员常犯的错误,你占几个?一起来看看吧。
1.数组转ArrayList
为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码:
List<String> list = Arrays.asList(arr);
Arrays.asList确实会返回一个 ArrayList对象,但是该类是 Arrays类 中一个私有静态内部类,而不是常见的 java.util.ArrayList类。这个 java.util.Arrays.ArrayList 类具有 set(),get(),contains()等方法,但是不具有任何添加或移除元素的任何方法。因为该类的大小(size)是固定的。为了创建出一个真正的 java.util.ArrayList,代码应该如下所示:
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
我们知道,ArrayList的构造方法可以接受一个 Collection 类型的对象,而我们的 java.util.Arrays.ArrayList 正好也是它的一个子类。实际上,更加高效的代码示例是:
ArrayList<String>arrayList=new ArrayList<String>(arr.length);
Collections.addAll(arrayList,arr);
2.访问权限
很多的Java初学者喜欢使用 public 来修饰类的成员。这样可以很方便地直接访问和存取该成员。但是,这是一种非常糟糕的编程风格,正确的设计风格应该是尽可能降低类成员的访问权限。
Java程序员常犯的错误
3.Hashtable vs HashMap
学习过数据结构的读者都知道一种非常重要的数据结构叫做 哈希表。在Java中,对应哈希表的的类是 HashMap 而不是 Hashtable。HashMap与Hashtable之间的最核心区别就是:HashMap是非同步的,Hashtable是同步的。
4.ArrayList vs LinkedList
很多的Java初学者不明白ArrayList与LinkedList之间的区别,所以,他们完全只用相对简单的ArrayList,甚至不知道JDK中还存在LinkedList。但是,在某些具体场景下,这两种List的选择会导致程序性能的巨大差异。简单而言:当应用场景中有很多的 add/remove 操作,只有少量的随机访问操作时,应该选择LinkedList;在其他的场景下,考虑使用ArrayList。
5.可变 vs 不可变
不可变的对象具有非常多的优势,比如简单,安全等。但是,对于每一个不同的值,都需要该类的一个对象。而且,生成很多对象带来的问题就是可能导致频繁的垃圾回收。所以,在选择可变类还是不可变类时,应该综合考虑后再做抉择。
通常而言,可变对象可以避免创建大量的中间对象。一个非常经典的例子就是链接大量的短String对象为一个长的String对象。如果使用不可变String类,链接的过程将产生大量的,适合立即被垃圾回收的中间String对象,这将消耗大量的CPU性能和内存空间。此时,使用一个可变的StringBuilder或StringBuffer才是正确的。
String result="";for(String s: arr){result = result + s;}
除了上述情况,可变对象在其他场景下可能由于不可变对象。比如,深入理解Java面向对象,传递一个可变的对象到方法内部,利用该对象可以收集多个结果,而不用在多个循环层次中跳进跳出。
光环大数据小编总结出Java程序员最常犯一些错误,以便Java后来者少走弯路,少加班,并写出更高效的应用程序。
大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。
更多问题咨询,欢迎点击------>>>>在线客服!