设为首页收藏本站language 语言切换
查看: 757|回复: 0
收起左侧

Java程序员都会遇到的六大问题

[复制链接]
发表于 2016-1-13 10:49:25 | 显示全部楼层 |阅读模式

  东方瑞通从事IT培训十多年,拥有优质的教学环境和一流的配套设施,作为国内IT高级培训的领军企业之一,东方瑞通拥有十余个IT主流厂商的授权培训资质,为数千家企业客户提供员工外派(公开课)和团体定制培训,专家级IT外包服务,累计培训IT专业人才数万名。
1.检测一个Array是否包含一个元素
一般开发者喜欢用:
1.  Set<String> set = new HashSet<String>(Arrays.asList(arr)); 2.  return set.contains(targetValue); 这段代码能够工作,但并没有先转将list转为set,list转为set需要额外时间,可以用下面更简单的:
1.  Arrays.asList(arr).contains(targetValue); 或者
1.  for(String s: arr){ 2.  if(s.equals(targetValue)) 3.      return true; 4.  } 5.  return false; 第一种方法比第二种的可读性更好。
2.Hashtable vs HashMap
在算法中,哈希表是数据结构的名称。但在Java中,数据结构的名字是HashMap中。其中一个Hashtable和HashMap的之间的主要区别是,Hashtable是同步的。所以,很多时候,你并不需要哈希表,HashMap就够用了。
3.使用原始类型的集合
在Java中,原始类型和无界通配符类型很容易混在一起。以Set为例,设定为原始类型,同时set<?>是无界的通配符类型。
使用原始类型list,考虑下面的情况:
1.  public static void add(List list, Object o){ 2.  list.add(o); 3.  } 4.  public static void main(String[] args){ 5.      List<String> list = new ArrayList<String>(); 6.      add(list, 10); 7.      String s = list.get(0); 8.  } 这个代码将会抛出错误:
1.  Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 2.  at ... 使用原始类型集合是很危险的一件事,因为它跳过了类属性检测并且是不安全的。Set, Set<?>, andSet
4.访问权限
很多开发者使用public修饰类的字段,这样很容易获取字段值,但这是一个糟糕的设计。经验法则是给用户尽可能低的访问权限。
5.ArrayListvs. LinkedList
大部分的开发者并不知道ArrayList和LinkedList 的区别,所以经常使用ArrayList,这个看起来更熟悉。但是,在这两者之间,有一个很大的性能差异。
简单来说,在有很多插入和删除操作时,同时有很少或者几乎没有随机访问的操作情况下,推荐使用LinkedList。其次,再使用ArrayList。
6.”"or Constructor?
创建一个String 有两种方式:
//1. use double quotes
String x = "abc";
//2. use constructor
String y = new String("abc");
区别是什么?
1.  String a = "abcd"; 2.  String b = "abcd"; 3.  System.out.println(a == b);  // True 4.  System.out.println(a.equals(b)); // True 5.   6.  String c = new String("abcd"); 7.  String d = new String("abcd"); 8.  System.out.println(c == d);  // False 9.  System.out.println(c.equals(d)); // True
想了解更多IT资讯吗?持续关注东方瑞通官方微博(东方瑞通IT培训与IT服务),小编为您分享更多精彩最热资讯。

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-2-2 18:05 , Processed in 0.062932 second(s), 12 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表