作家
登录

关于Java习惯用法的总结

作者: 来源: 2017-09-05 12:03:04 阅读 我要评论

生成一个范围内的随机整数

关于Java习惯用法的总结

在Java编程中,有些常识 并不克不及仅经由过程说话规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(Joshua Bloch的《Effective Java》对这个话题给出了更详尽的阐述,可以大年夜这本书里进修更多的用法。)

我把本文的所有代码都放在公共场合里。你可以根据本身的爱好去复制和修改随便率性的代码片段,不须要任何的凭证。

  1. // Fill each element of array 'a' with 123 
  2. byte[] a = (...); 
  3. for (int i = 0; i < a.length; i++) 
  4.   a[i] = 123;  

实现equals()

  1. class Person { 
  2.   String name
  3.   int birthYear; 
  4.   byte[] raw; 
  5.  
  6.   public boolean equals(Object obj) { 
  7.     if (!obj instanceof Person) 
  8.       return false
  9.  
  10.     Person other = (Person)obj; 
  11.     return name.equals(other.name
  12.         && birthYear == other.birthYear 
  13.         && Arrays.equals(raw, other.raw); 
  14.   } 
  15.  
  16.   public int hashCode() { ... } 
  17.  
  • 参数必须是Object类型,不克不及是外围类。
  • foo.equals(null) 必须返回false,不克不及抛NullPointerException。(留意,null instanceof 随便率性类 老是返回false,是以膳绫擎的代码可以运行。)
  • 根本类型域(比如,int)的比较应用 == ,根本类型数组域的比较应用Arrays.equals()。
  • 覆盖equals()时,记得要响应地覆盖 hashCode(),与 equals() 保持一致。
  • 参考: java.lang.Object.equals(Object)。

实现hashCode()

  1. class Person { 
  2.   String a; 
  3.   Object b; 
  4.   byte c; 
  5.   int[] d; 
  6.  
  7.   public int hashCode() { 
  8.     return a.hashCode() + b.hashCode() + c + Arrays.hashCode(d); 
  9.   } 
  10.  
  11.   public boolean equals(Object o) { ... } 
  12.  
  • 当x和y两个对象具有x.equals(y) == true ,你必须要确保x.hashCode() == y.hashCode()。
  • 根据逆反命题,如不雅x.hashCode() != y.hashCode(),那么x.equals(y) == false 必定成立。
  • 你不须要包管,当x.equals(y) == false时,x.hashCode() != y.hashCode()。然则,如不雅你可以尽可能地使它成立的话,这会进步哈希表的机能。
     1/8    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      非常实用的Linux命令行技巧

    我们天天应用很多Linux敕令行。我们大年夜网上知道一些技能,但如不雅我们不去演习,我们就有可能忘记。我决定做一个关于技能和桥绫桥的列表,这些技能和桥绫桥对于你来说可能是已经忘记的,或>>>详细阅读


    本文标题:关于Java习惯用法的总结

    地址:http://www.17bianji.com/lsqh/37140.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)