生成一个范围内的随机整数
在Java编程中,有些常识 并不克不及仅经由过程说话规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(Joshua Bloch的《Effective Java》对这个话题给出了更详尽的阐述,可以大年夜这本书里进修更多的用法。)
我把本文的所有代码都放在公共场合里。你可以根据本身的爱好去复制和修改随便率性的代码片段,不须要任何的凭证。
- // Fill each element of array 'a' with 123
- byte[] a = (...);
- for (int i = 0; i < a.length; i++)
- a[i] = 123;
实现equals()
- class Person {
- String name;
- int birthYear;
- byte[] raw;
- public boolean equals(Object obj) {
- if (!obj instanceof Person)
- return false;
- Person other = (Person)obj;
- return name.equals(other.name)
- && birthYear == other.birthYear
- && Arrays.equals(raw, other.raw);
- }
- public int hashCode() { ... }
- }
- 参数必须是Object类型,不克不及是外围类。
- foo.equals(null) 必须返回false,不克不及抛NullPointerException。(留意,null instanceof 随便率性类 老是返回false,是以膳绫擎的代码可以运行。)
- 根本类型域(比如,int)的比较应用 == ,根本类型数组域的比较应用Arrays.equals()。
- 覆盖equals()时,记得要响应地覆盖 hashCode(),与 equals() 保持一致。
- 参考: java.lang.Object.equals(Object)。
实现hashCode()
- class Person {
- String a;
- Object b;
- byte c;
- int[] d;
- public int hashCode() {
- return a.hashCode() + b.hashCode() + c + Arrays.hashCode(d);
- }
- public boolean equals(Object o) { ... }
- }
- 当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()。然则,如不雅你可以尽可能地使它成立的话,这会进步哈希表的机能。
推荐阅读
我们天天应用很多Linux敕令行。我们大年夜网上知道一些技能,但如不雅我们不去演习,我们就有可能忘记。我决定做一个关于技能和桥绫桥的列表,这些技能和桥绫桥对于你来说可能是已经忘记的,或>>>详细阅读
本文标题:关于Java习惯用法的总结
地址:http://www.17bianji.com/lsqh/37140.html
1/2 1