`

effective java学习笔记--4

阅读更多
  8.3 方法实现的小建议
       
         1. 把某个非0常数,比如17.保存在一个较results的变量中
         2. 对于对象的每一个域做一下操作 计算散列码 c
               2.1 boolean  ---> c = f?0:1
               2.2 byte char short int  -- > (int)f;
               2.3 long 类型  --> (int)(f^f >>> 32);
               2.4 float 类型  -- > Float.floatToIntBits()转化为int
             2.5 double 类型 -- > Double.doubleToLongBits() 转化为int
             2.6 对象的引用,那么直接调用对象的hashCode()方法,具体在对象中自己实现。如果对象为null 那么就设置为0
               2.7 数组,把数组中的每一个值作为单独的域来处理。递归的引用上面的规则。
         3. 按照下面的公式来套用2中计算得到的 c
                result = result*37 +c ;          //选择37是因为37是一个素数

         下列就是按照上面的规则进行的计算
          @Override
    public int hashCode()
    {
        int result = 17;                //设置常量
        result = result*37 + area;      //转为int 计算
        result = result*37 + exchange;
        result = result*37 +extention;
        return result;                  //返回自己需要的值
    }
        4.若是计算的hashCode非常复制,计算代价太大,那么可以将它放到系统缓存中。
               
    private volatile static int hashCode = 0;        //这样是作为一个缓存,并做lazy-initialized
        @Override
    public int hashCode()
    {
        if ( 0 == hashCode)
        {
            int result = 17;
            result   = result*37 + area;
            result   = result*37 + exchange;
            result   = result*37 + extention;
            hashCode = result;
        }
        return hashCode;
    }
 
  第九条:总是要改写toString()
       
        建议一定要改写该方法。
        最好是指定一种格式来来覆盖该方法,可以的话提供一个公开静态的方法来解析toString后的方法。

  第十条:谨慎的改写clone()方法
       
        首先需要实现cloneanle接口,标示该类是允许clone的
分享到:
评论

相关推荐

    effective java 读书笔记

    《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...

    effectiveJava的笔记

    以下是对《Effective Java》笔记中可能涉及的关键知识点的详细解读: 1. **单例模式**:书中强调了如何正确实现单例模式,推荐使用`enum`来创建线程安全且唯一的实例,避免传统双重检查锁定的潜在问题。 2. **构造...

    Effective-Java读书笔记

    《Effective Java》是Java...以上仅是《Effective Java》一书中部分核心知识点的概述,实际的读书笔记中会更详细地解释这些概念,并给出具体的示例代码。通过深入学习和实践,开发者可以极大地提升其Java编程的水平。

    java入门级学习笔记

    【Java入门级学习笔记】 ...总之,Java学习笔记旨在为初学者提供全面的学习路径,从基础知识到核心概念,再到实际应用,逐步构建扎实的Java编程基础。通过持续学习和实践,你可以逐渐掌握这门强大且多用途的语言。

    Effective Java.zip

    《Effective Java》是一本经典Java编程指南,作者是Joshua Bloch,这本书深入探讨了...以上内容仅是《Effective Java》各章节的部分知识点概述,书中还有更多关于Java编程的最佳实践和深入理解等待读者去发掘和学习。

    读书笔记:Effective Java中文版学习项目.zip

    读书笔记:Effective Java中文版学习项目

    java-note:Java学习笔记

    Structure /src/main/java ... ├ effective_java Effective Java 中文第二版 ├ jvm 深入理解Java虚拟机:JVM高级特性与最佳实践 ├ lambda JAVA 8实战 ├ netty Netty权威指南 ├ oop ├ recursion

    java7hashmap源码-for-java:java学习笔记

    Java学习笔记 Effective Java Topic2:插件销毁对象 2. 多参数情况 使用重叠构造器; 使用Build模式【构建器】: new A.Build().set.set.build(); Build模式也适用于类层次结构 递归类型参数 /* * 递归类型参数: ...

    java学习书籍

    以下是一些关于Java学习书籍的知识点,这些书籍可以帮助你从入门到精通,全面提升你的Java编程技能。 1. **《Java核心技术卷》**:这套书籍通常分为两卷,卷I主要涵盖基础知识,如语法、数据类型、控制结构、类和...

    5本java学习用书

    让我们逐一探讨这些书籍及其在Java学习中的价值。 1. **《21天学通JAVA》**:这本书通常被推荐为初学者入门的读物,它以简洁易懂的方式介绍了Java的基础知识,包括语法、数据类型、流程控制、面向对象编程概念等。...

    java学习PDF下载地址全 百度云盘下载

    本资源集合提供了一份完整的“Java学习PDF”,旨在帮助学习者系统地理解和掌握Java编程。 这份PDF教程可能涵盖以下关键知识点: 1. **Java简介**:介绍Java的历史、特点、应用领域以及与其它编程语言的对比,使...

    高级java笔试题-Lookoop:学习笔记

    高级java笔试题 个人博客 c++ c++primer - c++primer顺序容器与关联容器的一些用法 effective c++ - effective c++笔记归纳 Data Structures and Algorithm Analysis 数据结构与一些算法,来自算法导论,数据结构与...

    Java开源项目汇总.pdf

    * CS-Notes:Java学习笔记,涵盖了Java的基础知识、数据结构、算法、设计模式等。 * advanced-java:Java高级教程,涵盖了Java的高级知识、Java设计模式、Java框架和工具等。 Java实战 * miaosha:Java电商项目,...

    JAVA学习百度云资料

    2. **2018年黑马程序员最新Java学习笔记**:这份笔记是由专业教师精心整理的,包含济南校区的精华教学内容,不仅覆盖了基础理论,还有实践案例,是学习过程中的重要参考资料。链接:...

    这些年学习JAVA的资源,包括工具和资源包

    比如Awesome Java集合了各种Java资源,Java-Interview提供了面试准备资料,JDK源码阅读笔记帮助理解Java内部机制,Java设计模式实现则涵盖了各种设计原则,而Java学习笔记提供了从JavaSE到JavaWeb的逐步学习路径。...

    drools学习笔记

    对于学习 drools 的初学者,理解这些基础概念至关重要,它们将帮助你构建复杂的规则系统,实现业务逻辑的自动化和智能化。在实际应用中,根据需求灵活运用这些特性,可以极大地提升软件系统的可维护性和扩展性。

    Maven 2 学习笔记.txt

    ### Maven 2 学习笔记 #### 一、Maven 项目的基本结构及创建 Maven使用特定的目录结构来组织项目文件,通过`mvn archetype:create`命令可以快速创建项目模板。例如: ```shell mvn archetype:create -DgroupId=...

    个人实用java、js个人资料

    - 对于Java初学者,可以从《Head First Java》开始,进阶可学习《Effective Java》。 - JavaScript入门推荐《JavaScript高级程序设计》,深入理解可阅读《You Don't Know JS》系列。 - 实践项目方面,Java可以...

    java书籍

    1. **《核心Java笔记》(core-java-notes)**:这本书可能包含了Java语言的核心概念,如变量、数据类型、控制流(条件语句、循环)、类与对象(封装、继承、多态)、异常处理、文件I/O、集合框架(ArrayList、...

    java8源码-esmusssein777.github.io:我的学习记录

    同时,`effectiveJava学习笔记`可能包含了对《Effective Java》这本书中最佳实践的学习心得,这本书对于提升Java编程技巧非常有帮助。Java 8的实战学习笔记则可能涵盖了将新特性应用到实际项目中的经验分享。通过...

Global site tag (gtag.js) - Google Analytics