您所在位置: 网站首页 / java习惯用法总结.docx / 文档详情
java习惯用法总结.docx 立即下载
2025-08-25
约2.1万字
约32页
0
26KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

java习惯用法总结.docx

java习惯用法总结.docx

预览

免费试读已结束,剩余 27 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

java习惯用法总结

第一篇:java习惯用法总结在Java编程中,有些知识并不能仅通过语言规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(JoshuaBloch的《EffectiveJava》对这个话题给出了更详尽的论述,可以从这本书里学习更多的用法。)我把本文的所有代码都放在公共场所里。你可以根据自己的喜好去复制和修改任意的代码片段,不需要任何的凭证。目录实现:oequals()ohashCode()ocompareTo()oclone()应用:oStringBuilder/StringBufferoRandom.nextInt(int)oIterator.remove()oStringBuilder.reverse()oThread/Runnableotry-finally输入/输出:o从输入流里读取字节数据o从输入流里读取块数据o从文件里读取文本o向文件里写文本预防性检测:o数值o对象o数组索引o数组区间数组:o填充元素o复制一个范围内的数组元素o调整数组大小包装o个字节包装成一个into分解成4个字节实现equals()classPerson{Stringname;intbirthYear;byte[]raw;publicbooleanequals(Objectobj){if(!objinstanceofPerson)returnfalse;Personother=(Person)obj;returnname.equals(other.name)&&birthYear==other.birthYear&&Arrays.equals(raw,other.raw);}publicinthashCode(){...}}参数必须是Object类型,不能是外围类。foo.equals(null)必须返回false,不能抛NullPointerException。(注意,nullinstanceof任意类总是返回false,因此上面的代码可以运行。)基本类型域(比如,int)的比较使用==,基本类型数组域的比较使用Arrays.equals()。覆盖equals()时,记得要相应地覆盖hashCode(),与equals()保持一致。参考:java.lang.Object.equals(Object)。实现hashCode()classPerson{Stringa;Objectb;bytec;int[]d;publicinthashCode(){returna.hashCode()+b.hashCode()+c+Arrays.hashCode(d);}publicbooleanequals(Objecto){...}}当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()。但是,如果你可以尽可能地使它成立的话,这会提高哈希表的性能。hashCode()最简单的合法实现就是简单地return0;虽然这个实现是正确的,但是这会导致HashMap这些数据结构运行得很慢。参考:java.lang.Object.hashCode()。实现compareTo()classPersonimplementsComparable{StringfirstName;StringlastName;intbirthdate;//ComparebyfirstName,breaktiesbylastName,finallybreaktiesbybirthdatepublicintcompareTo(Personother){if(firstName.compareTo(other.firstName)!=0)returnfirstName.compareTo(other.firstName);elseif(lastName.compareTo(other.lastName)!=0)returnlastName.compareTo(other.lastName);elseif(birthdateother.birthdate)return1;elsereturn0;}}总是实现泛型版本Comparable而不是实现原始类型Comparable。因为这样可以节省代码量和减少不必要的麻烦。只关心返回结果的正负号(负/零/正),它们的大小不重要。Comparator.compar
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

java习惯用法总结

文档大小:26KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用