`
ipple100200
  • 浏览: 15969 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

《Practical Java》学习笔记(一)

阅读更多

 

一、 General Techniques

1、  引数以 by value 方式而非 by reference 方式传递

2、  对于不变的 data object reference 使用 final ,final 仅仅令 object reference 自身成为不变量,但并不限制它所指向对象的改变

3、  缺省情况下,所有 non-static 都可以被覆写,不然 , 则用 final 防止覆写

4、  vector 容器包含的是对象,与 arrays 要区别,但我认为 Vector 的功能实际上有些像跟 Array List 差不多,只是 vector 现在不经常使用

5、  多态优于 instanceof ,只有在不得已的情况下使用

“如果你根据对象的型别来触发行为,那就改给自己一个耳光”

例如,当你必须从一个 base type 做向下转型为 derived type 的时候,必须使用它

….

Vector shapeVector = new Vector(10);<!----><o:p></o:p>

shapeVector.add(new Triangle());<o:p></o:p>

shapeVector.add(new Triangle());<o:p></o:p>

shapeVector.add(new Circle());<o:p></o:p>

    //...<o:p></o:p>

    //Assume many Triangles and Circles are added and removed<o:p></o:p>

    //...<o:p></o:p>

    int size = shapeVector.size();<o:p></o:p>

    for (int i=0; i<size; i++)<o:p></o:p>

    {<o:p></o:p>

      Object o = shapeVector.get(i);<o:p></o:p>

      if (o instanceof Triangle)<o:p></o:p>

      {<o:p></o:p>

        if (((Triangle)o).isRightTriangle())<o:p></o:p>

        {<o:p></o:p>

          //...<o:p></o:p>

        }<o:p></o:p>

      }<o:p></o:p>

      else if (o instanceof Circle)<o:p></o:p>

      {<o:p></o:p>

        double rad = ((Circle)o).radius();<o:p></o:p>

        //...<o:p></o:p>

      }<o:p></o:p>

}<o:p></o:p>

         6 、一旦不需要对象的引用,就将它设为 null <o:p> </o:p>

       尽管有 GC, 你还是要关注的你的代码如何运用内存; <o:p> </o:p>

         <o:p> </o:p>

<o:p> </o:p>

二、  对象与相等性 <o:p> </o:p>

7 、区分 reference type primitive type ,理解他们的差异,你会在运用他们时候做出明智的 <o:p> </o:p>

选择; <o:p> </o:p>

         Boolean(boolean)<o:p></o:p>

         Character(char)<o:p></o:p>

Byte(byte)<o:p></o:p>

Integer(int)<o:p></o:p>

Float(float) <o:p></o:p>

Long(long)<o:p></o:p>

Short(short)<o:p></o:p>

Double(double)<o:p></o:p>

基本型别相等,只要是值相等就可以拉,不管是不是同一类型;而引用类型必须则按照引用的比较方式来比较,譬如 equals();<o:p></o:p>

<o:p> </o:p>

8 java.lang.object 提供的 equals() 方法很多时候不是你想要的,你需要自己写一些比较的方法 <o:p> </o:p>

public boolean equals(Object obj)<o:p></o:p>

  {<o:p></o:p>

<o:p> </o:p>

    if (this == obj)<o:p></o:p>

      return true;<o:p></o:p>

<o:p> </o:p>

    if (obj != null && getClass() == obj.getClass())<o:p></o:p>

    {<o:p></o:p>

      Golfball gb = (Golfball)obj;  //Classes are equal, downcast.<o:p></o:p>

      if (brand.equals(gb.brand()) &&  //Compare attributes.<o:p></o:p>

          make.equals(gb.make()) &&<o:p></o:p>

          compression == gb.compression())<o:p></o:p>

      {<o:p></o:p>

        return true;<o:p></o:p>

      }<o:p></o:p>

    }<o:p></o:p>

    return false;<o:p></o:p>

  }<o:p></o:p>

<o:p> </o:p>

三、  java 异常 <o:p> </o:p>

1、   try,cacth,finally<o:p></o:p>

<o:p> </o:p>

不要将 catch 的异常覆盖掉,在这样的情况下,我们要专门把异常保存下来,如用一个 vector 保存; <o:p> </o:p>

不要忽略任何一个异常,因为异常一旦出现,抛出异常的那个线程将会终止; <o:p> </o:p>

将一个异常加入到 throw 子句,会影响到调用它的所有函数 <o:p> </o:p>

使用 finally 防止资源泄露,譬如在连接数据库的时候在 finally 中关闭连接; <o:p> </o:p>

不要从 try 字段中返回; <o:p> </o:p>

不要用 try catch 用于流程控制 ;<o:p></o:p>

不要每逢出错的使用 try catch;<o:p></o:p>

不要在构造函数中抛出异常; <o:p> </o:p>

抛出异常前,请将对象置为有效状态; <o:p> </o:p>

四、  性能 <o:p> </o:p>

1、   先把焦点放在设计,数据机构和算法方面 <o:p> </o:p>

2、   如果进行字符串的拼接,用 String Buffer String 快许多倍 <o:p> </o:p>

3、   在面向对象中,对象的创建是昂贵的,因此需要将对象的创建成本降到最低,减少一些没有必要的对象,在非必要的时候,别产生你的对象 <o:p> </o:p>

4、   将同步减少到最低,增加 stack 的使用 <o:p> </o:p>

5、   使用基本型别代码会更快 <o:p> </o:p>

6、   在使用 vector 时候,用 get() 来获取对象,而不是 Interator<o:p></o:p>

7、   优先使用 array, 再考虑 ArrayList Vector ,如果不需要 vector 的同步特性,考虑使用 ArrayList<o:p></o:p>

8、   尽可能的重复使用对象,这比重新创建对象更有效 <o:p> </o:p>

9、   使用缓式评估,延迟计算,不必要的计算永远都不要计算 <o:p> </o:p>

10、 手动优化你的代码,特别是执行的顺序 <o:p> </o:p>

分享到:
评论

相关推荐

    Practical Java一书及代码

    《Practical Java》是侯捷老师的一本关于Java编程实践的书籍,旨在帮助读者深入理解Java语言,并通过实际代码示例提升编程技能。这本书涵盖了Java的基础到进阶内容,是学习和提升Java技术的重要资源。 1. **Java...

    Practical Java全书源码.rar

    《Practical Java全书源码》是一份宝贵的资源,它涵盖了J2ME(Java 2 Micro Edition)平台上的手机游戏开发。J2ME是Oracle公司为小型设备和嵌入式系统设计的一种Java平台,广泛应用于早期的移动设备,如功能手机和...

    Practical Java(含源码)

    《实用Java编程(含源码)》是一本专注于解决Java编程实际问题的书籍,它针对的是Java程序员在日常开发过程中可能会遇到的各种困扰和难题。这本书的目的是为了解答那些经常出现但又容易让人迷惑的问题,从而提升Java...

    practical java(中文版)

    《实用Java(中文版)》是一本由资深Java编程专家撰写的指南,旨在提供实际、高效且具有针对性的Java编程实践经验。这本书经过侯捷的翻译,确保了内容的准确性和可读性,对于中文读者来说,是学习和提升Java技能的...

    《Practical Java》中文版随书源码

    《Practical Java》中文版随书源码是一个包含与J2ME手机游戏开发相关的实践教程资源。这本书通过实例深入浅出地介绍了Java编程语言在移动平台上的应用,特别是针对Java Micro Edition (J2ME)环境。J2ME是Java的一个...

    practical_java.zip_practical java

    它可能提供了与《Practical Java》一书相关的在线资源,帮助读者扩展学习或解决问题。 "PracticalJavaCode"文件名暗示这是一份包含实际Java代码的文件夹或压缩文件。在学习Java编程时,实际的代码示例是至关重要的...

    Practical.Java简体中文版

    《Practical Java》是一本由资深Java专家编写的实践性指南,旨在帮助读者深入理解Java编程语言,并提供改进代码质量的实用策略。这本书的核心在于68个关键主题,每个主题都针对一个特定的编程问题或最佳实践,旨在...

    Practical Java

    ### 实践1:Java中的参数传递机制 #### 参数传递方式:值传递 vs 引用传递 在Java中,参数是以**值传递**(by value)的方式传递给方法的,而不是很多人误解的**引用传递**(by reference)。这种误解往往来源于Java...

    Practical Java(中文版(繁体+简体))

    Practical Java viii 2 對象與相等性(Objects and Equality) 25 實踐8:區分reference type 和primitive type 25 實踐9:區分== 和 equals() 29 實踐10:不要倚賴equals()的缺省實現33 實踐11:實現equals()時必須...

    Practical Java(海格尔经典之作)

    《Practical Java》是Java编程领域的一部经典之作,作者为(美)海格尔,它与《Effective Java》齐名,都是程序员提升编程技能的重要参考资料。本书深入浅出地介绍了如何编写高质量、高效的Java程序,旨在帮助开发者...

    Deep Learning: Practical Neural Networks with Java 完整高清英文azw3版

    Deep Learning: Practical Neural Networks with Java by Yusuke Sugomori English | 8 Jun. 2017 | ASIN: B071GC77N9 | 1057 Pages | AZW3 | 20.28 MB Build and run intelligent applications by leveraging key ...

    Practical Java Game Programming

    Practical Java Game Programming Chapter 1 - Java as a Game Platform Chapter 2 - Fundamentals of Game Programming Chapter 3 - 2D Graphics Programming Chapter 4 - Creating Game Audio Using Java...

    Practical Java[含源码][PDF]

    《Practical Java》是Java编程领域的一本经典教程,由著名技术翻译家侯捷先生翻译。这本书深入浅出地介绍了Java编程语言的核心概念和技术,旨在帮助读者从实践角度理解和掌握Java编程。书中涵盖的内容广泛,从基本...

    Practical Java Source Code

    本资源“Practical Java Source Code”旨在提供一系列实际应用中的Java代码示例,帮助开发者深入理解Java编程的实践操作。 Java的核心特性包括面向对象、平台独立性(通过Java虚拟机JVM实现)、丰富的类库、强大的...

    practical java

    《实用Java》是一本备受推崇的Java编程教材,它的核心理念是通过实践来教授Java编程,使得学习者能够深入理解语言的本质和应用。书中涵盖了Java的基础语法、面向对象编程概念、异常处理、集合框架、多线程、网络编程...

    Practical database programming with Java

    标题《Practical database programming with Java》和描述《Practical database programming with Java》提到了关于Java数据库编程的实际应用,但给出的内容部分并非直接相关的知识说明,而是涉及书籍信息、版权声明...

Global site tag (gtag.js) - Google Analytics