网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java网络编程的学习笔记(一).
.分享关于j2me xmlReader的轻量级.
.Spring与WebLogicServer的集成.
.Tomcat 5.0-5.5连接池配置指南.
.创建通过 WDO访问数据的 JSF 应用.
.Java中使用XML创建EMAIL模板.
.Ant指南.
.J2ME移动2D图形开发快速入门.
.基于Java 2平台的引用类使用指南.
.Java程序设计基础入门之慨述.
.J2SE中的序列化之接受默认序列化.
..NET vs Java.
.手工创建的SOAP消息中命名空间的.
.J2SE5.0用Executor灵活处理事件下.
.JDBC连接RAC的配置源代码剖析.
.小心进行 J2EE Web Services 的测.
.Java新手入门需要掌握的30个基本.
.用 Apache JMeter 测试 WebSpher.
.给你的2D游戏添加3D效果.
.Spring WebFlow :3(WebFlow实现重.

Effective Java读书笔记之一

发表日期:2008-1-5


    终于翻开这本James都称赞的Java经典书籍了,发现比一般的英语书籍要难懂一些。但是里面的Item都是非常实用的,是java程序员应该理解的。

Creating and Destroying Object

Item 1:考虑用静态工厂方法替代构造器
例如:public static Boolean valueOf(boolean b)
     {
          return (b?Boolean.TRUE:Boolean.FALSE);
     }
这样的好处是方法有名字,并且它可以复用对象,不像构造器每次调用都产生新的对象。其次它还可以返回返回类型的子类。不好的地方是假如没有public or protected构造器的类将不能被继续。还有就是静态工厂方法的名字和其他的静态方法名字不轻易区分。

Item 2:通过添加私有构造器来加强单例属性(singletom property)
例如:public class Hello
            {
                  private static final Hello Instance = new Hell();

                  private Hello()
                  {}
                    
                    public static Hello getInstance()
                      {
                     return Instance;

                     }
            }
这个私有构造器只能在内部被使用,确保了单例模式!
Item 3:避免创建重复的对象
对不可修改的对象尽量进行复用,这样效率和性能都会提高。例如假如循环100次String s = new String("hello")将创建100个对象 循环100次String s = "hello";则只创建了一个对象。很好的进行了复用。

Item 4:用私有构造器来避免被实例化

例如public UtilityClass
{
   private UtilityClass()
   {}

///
}
通常那些工具类是这么设计的

Item 5:消除绝对的对象引用

     虽然java中使用gc来治理内存,但是假如不注重的话也会产生“内存泄漏”。例如下面的程序
public class Stack
{
 private Object[] elements;
 private int size = 0;
 
 public Stack(int i)
 {
  this.elements = new Object[i]; 
 } 
 
 public void push(Object e)
 {
  ensure();
  elements[size++] = e; 
 }
 
 public Object pop()
 {
  if(size == 0)
  {
   //// 
  } 
  
  return elements[size--];
 }
 
 private void ensure()
 {
  //// 
 }
}
标记的地方存在着内存泄漏的问题,因为当他被弹出栈的时候,它也没有成为可回收的垃圾对象,Stack维护着他们的绝对的引用。将不能更改。改进的方法是如下的写法
 public Object pop()
 {
  if(size == 0)
  {
   //// 
  } 
  Object obj = elements[--size];
  elements[size] = null;
  
  return obj;
 }
 但是切忌不要滥用null。


上一篇:使用Ant协助开发Java项目 人气:599
下一篇:Effective Java读书笔记之二 人气:777
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐