java习惯用法总结-编程小技巧

java习惯用法总结-编程小技巧

ID:30780243

大小:133.49 KB

页数:14页

时间:2019-01-03

java习惯用法总结-编程小技巧_第1页
java习惯用法总结-编程小技巧_第2页
java习惯用法总结-编程小技巧_第3页
java习惯用法总结-编程小技巧_第4页
java习惯用法总结-编程小技巧_第5页
资源描述:

《java习惯用法总结-编程小技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java习惯用法总结在Java编程中,有些知识并不能仅通过语言规范或者标准API文档就能学到的。在木文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(JoshuaBloch的《EffectiveJava》对这个话题给出了更详尽的论述,可以从这本书里学习更多的用法。)Java我把本文的所有代码都放在公共场所里。你可以根据自己的喜好去复制和修改任意的代码片段,不需要任何的凭证。目录•实现:oequals()ohashCode()ocompareTo()oclone()•应用:oStringBu

2、ilder/StringBufferoRandom.nextlnt(int)oIterator.remove()oStringBuilder.revcrse()oThread/Runnableotry-finally•输入/输出:o从输入流里读取字节数据O从输入流里读取块数据O从文件里读取文本O向文件里写文木•预防性检测:O数值O对象o数组索引O数组区间•数组:O填充元素O复制一个范围内的数组元素O调整数组大小•包装O个字节包装成一个into分解成4个字节实现equals()classPerson{St

3、ringnamc;intbirthYear;byte[]raw;publicbooleanequals(Objectobj){if(!objinstemccofPerson)returnfalse;Personother二(Person)obj;returnname.equals(other,name)&&birthYcar二二other.birthYear&&Arrays,equals(raw,other,raw);publicinthashCode(){…}•参数必须是Object类型,不能是外伟I

4、类。•foo.equals(null)必须返回false,不能抛NullPointerExceptiono(注意,nullinstanceof任意类总是返回false,因此上而的代码可以运行。)•基本类型域(比如,int)的比较使用=,基木类型数组域的比较使用Arrays.equals()o•覆盖equals()时,记得要相应地覆盖hashCode(),与equals()保持致。•参考:java.lang.Object.equals(Object)。实现hashCode()classPerson{Str

5、inga;Objectb;bytec;int[]d;publicinthashCode(){returna.hashCode()+b.hashCode()+c+Arrays.hashCode(d);publicbooleanequals(Objecto){…}•当x和y两个对彖具有x.equals(y)==true,你必须要确保x.hashCode()==y.hashCodc()e•根据逆反命题,如果x.hashCode()!=y.hashCode(),那么x.equals(y)==false必定成立。

6、•你不需要保证,当x.equals(y)==false时,x.hashCode()!=y.hashCode()o但是,如果伤〈可以尽可能地使它成立的话,这会提高哈希表的性能。•hashCode()最简单的合法实现就是简单地return0;虽然这个实现是正确的,但是这会导致HashMap这些数据结构运行得很慢。•参考:java.lang.Object.hashCode()。实现compareTo()classPersonimplcmentsComparablc{StringfirstNam

7、e;StringlastName;intbirthdate;//ComparebyfirstNamc,breakticsbylastNamc,finallybreakticsbybirthdatepublicintcompareTo(Personother){if(firstName.compareTo(other.firstName)!二0)returnfirstName.compareTo(other.firstName);elseif(lastName.compareTo(other.lastNa

8、me)!=0)returnlastName.compareTo(other,lastName);elseif(birthdateother,birthdate)return1;elsereturn0;•总是实现泛型版本Comparableiflj不是实现原始类型Comparable。因为这样对以节省代码量和减少不必要的麻烦。•只关心返回结果的正负号(负/零/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。