为了账号安全,请及时绑定邮箱和手机立即绑定

JAVA优化(5)

标签:
Java

1.让工具类不可实例化
私有构造函数

2.getClass()和instance of 区别
用getClass()判断一个类是不是属于该类,是严格的判断,不存在继承关系
instance of 如果该判断的类属于该类的子类,也认为是相当的。

3.replanceAll(),中第一个表达是正则

String str = "好是好";
String  str1 = "|是|";
System.out.println(str.replaceAll("好",""));
System.out.println(str1.replaceAll("|",""));

打印结果:是 |是|
所以对特殊字符进行替换要注意

4.String,StringBuffer,StringBuilder使用场景
1)String 使用场景
在字符串不经常变化的场景可以使用,例如常量的声明,少量的变量运算等
2)StringBuffer使用场景
在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程的环境中,则可以考虑使用StringBuffer,例如xml解析,HTTP参数解析和封装等。
3)StringBuilder类的场景
在频繁进行字符串运算(如拼接、替换、删除等),并且运行在单线程的环境中,则可以考虑使用StringBuilder例如SQL语句的拼装,JSON封装等。

5.中文排序(复杂的字不能)

String[] strs={"张三","李四","王五"};
Comparator c = Collator.getInstance(Locale.CHINA);
Arrays.sort(strs,c);
for (int i = 0; i <strs.length ; i++) {
   System.out.println(strs[i]);
}

打印:李四 王五 张三

6.谨防浅拷贝带来不必要的问题
1)map
直接赋值为浅拷贝

 HashMap  hm1 =new HashMap();
 hm1.put("name","张三");
 hm1.put("idNo","1454341541534");
 HashMap hm2 = hm1;
 hm2.put("name","zhang");
 hm2.put("idNo","4asdfasdf5");
 System.out.println("hm1  "+hm1.get("name")+"  "+hm1.get("idNo"));
 System.out.println("hm2  "+hm2.get("name")+"  "+hm2.get("idNo"));

打印结果如下:
hm1 zhang 4asdfasdf5
hm2 zhang 4asdfasdf5

利用putAll为深拷贝

HashMap  hm1 =new HashMap();
hm1.put("name","张三");
hm1.put("idNo","1454341541534");
HashMap hm3 = new HashMap();
hm3.putAll(hm1);
hm3.put("name","zhang");
hm3.put("idNo","4asdfasdf5");
System.out.println("hm1  "+hm1.get("name")+"  "+hm1.get("idNo"));
System.out.println("hm3  "+hm3.get("name")+"  "+hm3.get("idNo"));

打印结果如下:
hm1 张三 1454341541534
hm3 zhang 4asdfasdf5

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
0
获赞与收藏
3

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消