effective java 学习笔记(一)

           最近在豆瓣上看到一些书评,很有感想,其中有一本叫 effective java据说很好,下载了看看,果然大作,很多东西都读不懂,功力尚浅,还得继续努力。读的时候感觉很爽,比讲语法的书好看多了。

第一部分 对象的创建和销毁。

讲了5条原则

1.用静态的工厂方法代替构造函数。
好处:避免创建重复的对象,因为静态的方法不许要创建对象就可以使用,造成不必要的浪费。重复返回同一个对象。保证单态。
工厂方法可以取更加容易记的名字,而构造函数则不行。
工厂方法可以返回一个原返回类型的子类对象,适合于基于接口的框架结构。
缺点: 类如果不包含公有的或受保护的构造函数,就不能被子类化。对于公有的静态工厂所返回的非公有类,也同样如此。
命名习惯:valueOf(), getInstance()
2.使用私有的构造函数强化singleton。
singleton代表那些本质上具有惟一性的系统组件。
两种实现方法。一是定义公有的static final 的类对象。
二是用方法返回一个对象。还有就是序列化的时候应该注意以后在看这方面的内容。
3.通过私有构造函数强化不可实例化的能力。
对一些工具类,只包含静态的方法和静态的域,把构造函数定义为私有的,以提高系统的性能。
4.避免重复创建重复的对象。
在循环中创建对象的代价是非常昂贵的,所以应该尽量避免创建重复的对象,加入静态快 static{} 和定义一些final 的常量,这样可以减少重复对象的定义。提高性能。在对象池尤其是数据库的连接的时候应该注意重发对象的避免,高效的提高系统性能。
5.消除过期对象的引用。
讲了一个内存泄露的例子。很经典的栈,在栈的弹出时经常出现过期引用,因为栈自己管理内存。
一般而言,只要一个类自己管理内存,程序员就应该警惕内存泄露,一旦一个元素被释放掉,则该元素中所包含的任何的对象的引用应该被清空。
另一个来源是缓存。一旦一个对象的引用放在缓存里,就很容易被遗忘。

   水平有限,就把自己看懂的那点东西写了写。

时间: 2024-07-30 09:49:00

effective java 学习笔记(一)的相关文章

Java学习笔记

笔记 本笔记是在看浙大翁恺老师的视频教学时所做,希望对Java初学者有帮助! 一.Java基础1.正确认识Java(1)Java是一种有生产力的OOP语言,C++能做的Java都能做(2)Java与网络关系不大,更不是用来做网页的(3)Java是UNIX世界的产物,具有UNIX的思想(4)Java在国外广泛的被用来做各种应用2.Java历史(1)Brithday:May 23,1995(2)1991:Set-Top box:Jame Gosling(3)1994:OAK and FirstPer

java 学习笔记(入门篇)_java的安装与配置_java

  学习Java已经很长时间了,但是总感觉基础不是很好,有时候遇到一些平时不常见的问题就会无从下手,也从侧面显现了自己的一些问题.所以,打算写Java的随手笔记来巩固基础,加强学习.今天是第一篇,主要是java的安装,配置,也就是常说的Hello world.   一.下载   进入Oracle的官网,下载Java的jdk,   二.安装   安装就简单了,只需要下一步就可以,路径可以根据需要自己选择.   三.配置    安装完jdk后还不能来编译程序,因为还需要配置java 的jdk.进入的

java 学习笔记

笔记 JAVA的多线程 一.线程基本概念 将1个程序转换成多个独立运行的子任务.每个子任务都叫做一个线程. "进程"是指一种"自包容"的运行程序.有自己的地址空间.一个进程可以容纳多个同时执行的线程. 事实上,多线程最主要的一个用途就构建1个"反应灵敏"的用户界面. 二.线程的使用 1. 创建一个线程 最简单的方法就是从Thread类继承这个类,包含了创建和运行线程所需的一切东西. Thread最重要的是run方法,继承类必须对之进行重载,使其按

java学习笔记7--Polymorphism

笔记 Polymorphism 多态(polymorphism)也被称为动态绑定『dynamic binding』.后绑定『late binding』或运行时绑定『run-time bingding』.它的意思是要在程序运行的时候,根据对象的类型来决定该绑定哪个方法.多态性是继数据抽象和继承之后的,面向对象的编程语言的第三个基本特性. 绑定(binding): 将方法的调用连到方法本身前绑定(early binding): 当绑定发生在程序运行之前时(就是由编译器或连接器负责)后绑定(late

java学习笔记--Hiding implementation

笔记 hiding the implementation这句话讲得很好:In any relationship, it's important to have boundaries that are respected by all parties involved. 不管你们是什么关系,有一个彼此尊重的界限是很重要的. #----CLASSPATH(要大写,最好加上当前目录.):java 解释器会在以下两个地方查找.class文件: 1. jdk所在的标准目录 2. 路径 = 以CLASSPA

java学习笔记9--内部类总结

java内部类分为: 非静态内部类.静态内部类.局部内部类.匿名内部类 内部类的共性: (1)内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 . (2)内部类不能用普通的方式访问.内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 . (3)内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 . java 中的内部类和接口加在一起,可以的解决常被

Java学习笔记,适用于零基础的小伙伴

1. 成员变量与局部变量的区别     1.作用域:         成员变量的作用域是整个类中都可以访问:         局部变量是的作用域是定义它的{}内, {}中的语句执行完它就被回收:     2.初始值:         局部变量使用前必须手动赋值, 系统不会赋默认值:成员变量系统会赋默认初始值.     3.所在内存区域:         局部变量在方法运行的栈内存里,在栈里,会自动释放:         成员变量在对象里,对象在堆里,成员变量也在堆里,不使用的对象会被垃圾回收机制

java 学习笔记(入门篇)_java的基础语法_java

前言 学习完了第一个java程序,之后就来系统的学习java.先从基础语法开始,这个语法你也可以理解为英语或是汉语里面的语法,只不过大家各有各的特点和区别.学习编程其实也是一个编程语言的学习过程.我们在学习英语的时候都说,要想学习好英语一定要动口说,那么在学习编程的时候你一定要动手写.编程无非就是一个写代码的过程,首要就是你心中要有基础,没有基础怎么去写呢,就像一篇好文章,没有好文笔是写不出来的.好文笔不仅靠积累,更要靠创造,编程亦是如此.java是一个面向对象的语言,在写代码的过程中,接触最多

java 学习笔记(入门篇)_java程序helloWorld_java

安装配置完Java的jdk,下面就开始写第一个java程序--hello World.用来在控制台输出"Hello World".首先,我们用最原始的方法,即用文本编辑器来写代码.在任意一个盘符下,以D盘根目录为例,在这个目录下建立一个txt文本,命名为HelloWorld,然后把后缀改为java,即HelloWorld.java.    然后打开编辑代码,如下: 复制代码 代码如下: public class HelloWorld { public static void main(