java 有很多修饰类的属性的关键字:常用的static,final

说说final和static吧,平时在编程的时候,这两个关键字很多时候都觉得可有可无,最多的时候就是他们俩同时出现----定义常量的时候,其他时候:1.感觉没有对程序正常运行有任何影响 2.不使用这两个关键字看起来也没什么毛病.

这就是程序员和工程师的区别吧,迈出这一步,写出精品代码:

1.定义一个类的属性的时候,认真考虑这个属性是可变的还是所有对象通用的。将所有对象通用的属性添加static关键字。

下面来看一个实例:

判断一个字符串是否为一个有效的罗马数字:

static boolean isRomanNumeral(String s) {
return s.matches("^(?=.)M*(C[MD]|D?C{0,3})"
+ "(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$");
}

程序看起来很简洁,但是每次调用这个方法都会创建一个新的Pattern实例,并且只使用一次。

修改为以下版本:

public class RomanNumerals {
private Pattern roman= Pattern.compile(
"^(?=.)M*(C[MD]|D?C{0,3})"
+ "(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$"); static boolean isRomanNumeral(String s) {
return roman.matcher(s).matches();
}
}

Effective Java 中提到,在作者电脑上,最开始的方案 输入一个8个字符的字符串需要1.1微妙,但是给roman属性加上static final字段后,输入8个字符字需要0.17微秒,速度提高了6.5倍。

2.优先使用基本类型而不是装箱的基本的类型,装箱的基本的类型是一个对象,每次使用可能都会新建一个对象。

总之,当程序能够重用一个现有的对象的时候,不要创建一个新的对象,但是, 不能过分的追求不创建新的对象,因为创建一个对象和独享的垃圾回收是非常廉价的,相反,如果自己维护自己的对象池,将会使得程序非常麻烦。

考虑一个度:就好Effective Java 中提到:当你应该重用一个现有的对象的时候,不要创建一个对象,当你应该创建一个新的对象的时候,不要重复使用现有的对象。

最新文章

  1. Excel 实用技巧之一
  2. Hbase之使用回调函数进行批处理操作
  3. 省常中模拟 Test2 Day2
  4. Servlet+Tomcat制作出第一个运行在Tomcat上的Java应用程序
  5. 国内BI工具/报表工具厂商简介
  6. BZOJ 1854: [Scoi2010]游戏 [连通分量 | 并查集 | 二分图匹配]
  7. Aras简单报表
  8. Linux下用户和raid练习题
  9. Git 记不住命令
  10. Tomcat配置域名/IP访问及其中遇到的问题注意事项
  11. 4:list 列表
  12. 为什么使用Reazor
  13. Mevan(转)
  14. 知识记录——Session与Cookie
  15. jdk 配置
  16. bzoj 2115 线性基
  17. NIO 01 (转)
  18. oracle insert两个关联表
  19. vue的事件
  20. 微信小程序,搜索结果关键词高亮 wxml不能动态识别html标签

热门文章

  1. Event Hub小白入门指南
  2. dede tag标签静态化
  3. redis 漏洞造成服务器被入侵-CPU飙升
  4. 服务网关Spring Cloud Zuul
  5. e课表项目第二次冲刺周期第六天
  6. BZOJ 4392 卡牌游戏
  7. IT爱心求助站
  8. VBS定时关闭软件
  9. Vue3都使用Proxy了,你更应该了解Proxy
  10. 零基础转行web前端,要学习多久?需要掌握些什么?