Effective Java学习笔记】的更多相关文章

避免使用终结方法(finalizer) 终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的. 不要把finalizer当成C++中析构函数的对应物.java中,当对象不可达时(即没有引用指向这个对象时),会由垃圾回收器来回收与该对象相关联的内存资源:而其他的内存资源,则一般由try-finally代码块来完成类似的工作. 一.finalizer的缺点: 1. 终结方法的缺点在于不能保证会被及时地执行. 及时执行finalizer方法是JVM垃圾回收方法的一个主要功…
创建和销毁对象 第一条:考虑用静态工厂方法替代构造器 For example: public static Boolean valueOf(boolean b){ return b ? Boolean.TRUE : Boolean.FALSE; } 优势: 有名称 不必在每次调用它们的时候都创建一个新对象 它们可以返回原返回类型的任何子类型的对象 在创建参数化类型实例的时候,他们使代码变得更加简洁 缺点: 类如果不含公有的或者受保护的构造器,就不能被子类化 它们与其他的静态方法实际上没有任何区别…
一.覆盖equals时请遵守通用约定 1.满足下列任何一个条件时,不需要覆盖equals方法 a.类的每个实例本质上都是唯一的.此时就是Object中equals方法所表达的含义. b.不关心类是否提供了“逻辑相等”的测试功能 c.超类中覆盖的equals方法,使用于子类,不需要自己再覆盖了. d.类是私有或者包级私有,并确定equals方法永远不会被调用,可以不覆盖.或者覆盖equals方法,内容为抛出异常. 2.高质量equals方法的诀窍: a.使用==操作符检测“参数是否为这个对象的引用…
一.考虑用静态工厂方法代替构造器 1.此处的静态工厂方法是指返回指为类的对象的静态方法,而不是设计模式中的静态工厂方法. 2.静态工厂方法的优势有: a.使用不同的方法名称可显著地表明两个静态工厂方法的不同,而不像构造器,名字只能是类名. b.并不是每次调用静态工厂方法,都会重新构造一个新的对象. c.可以返回类型的子类型的对象. d.创建参数化类型的实例时,代码变得简洁了. 3.静态工厂方法的缺点有: a.类如果不含有公有的或者受保护的构造器,就不能被子类化(静态工厂方法的存在导致构造器存在的…
第7章 通用程序设计 第29条 将局部变量的作用域最小化     使一个局部变量的作用域最小化,最有力的技术室在第一次使用它的地方声明.   第30条 了解和使用库      效率提高.如果你不知道库中的函数,可以去查看相应的文档   第31条 如果要求精确的答案,请避免使用float和double 第32条 吐过其他类型更合适,则尽量避免使用字符串     字符串不适合代替其它的值类型(如Int,Boolean等)     字符串不适合代替枚举类型     字符串不适合代替聚集类型     字…
在没有显式声明一个类的构造方法时,编译器会生成默认的无参构造方法,在设计工具类时,我们通常将方法设置成静态方法,以类名.方法名的形式调用,此时这个类就没有必要创建实例,我们知道抽象类不可以被实例化,但是它可以被子类继承,子类可以被实例化,要想一个类不能被实例化,只需要显式地将类的构造方法设为私有域,这样就不可以被外部类的方法进行实例化了,而且子类也无法继承构造方法为私有的父类 package com.test; public class NoChildClass { private NoChil…
创建和销毁对象 一.静态工厂方法代替构造器 静态工厂方法的优缺点 优点: 1.可以自定义名称(可以将功能表述的更加清晰) 2.不必每次调用都创建新的对象(同一对象重复使用) 3.返回的类型可以是原返回类型的任何子类型对象 4.简化创建对象时的代码 缺点: 1.如果不含有公开的构造器,就不能被子类化 2.和普通的静态方法没有区别 二.遇到多个构造器参数时考虑用构建器 如果我们现在需要编写一个描述客户信息的类,在客户的信息中名字是一定有的,其他的信息都是可能用,我们使用三种方法去完成: 1.重叠构造…
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条线程访问,一条线程在执行一个循环的过程中被中断,下一个线程则出现错误 因此,线程任务中可能引起错误的地方应当被一次执行完毕 同步代码块 用同步代码块改写上面的代码 package testpack; public class Test1 { public static void main(Strin…
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annotation Processing Tool)一起使用,APT会对含有注解进行一些处理 比如API文档里面,有些方法下边的"@Deprecated",就是一个注解,它表示这个方法已经过时,使用的时候会收到警告 注解完全不影响程序的功能 元注解 元注解有6个,位于java.lang.annot…
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于对象 1.类和对象的关系 :            类是对同一类事物(对象)的抽象,对象是实际存在的该类的各种实体 创建的对象内存分析: 创建的对象存在栈区,开辟的内存空间存在于堆区,在堆区保存值  …