effective java笔记

1、Java中创建(实例化)对象的五种方式:

a、new一个对象。b、反射,Object a=Class.forName("java.lang.Object").newInstance(); c、通过I/O流(包括反序列化)。d、对象的clone()。e、通过工厂方法返回对象。

2、抽象类,要想对其实例化,只能用getInstance().(单例模式)。

3、内存泄漏:用数组、集合、缓存、监听器等时要注意释放回收不用的内存

4、重写equals,需要满足:一致性、对称、传递

5、每一个类都不应该直接暴露自己的属性,要多用get,set。

6、extends用于(单)继承一个类(class),而implements用于实现一个(多个)接口(interface);其中一个interface可以extends多个其他interface。

7、抽象类(abastract)易于扩展,可以加方法等,接口加方法,继承接口的类也要实现。

8、List用于声明泛型;List用于使用定义好的泛型(一般在泛型起一个限制作用,例如:(消费者)List;(生产者)List)

9、数组泛型不兼容

10、for-each循环不适用于过滤、转换、平行迭代;需要用iterable迭代器或者for

11、Arrays.asList()把数组转化list,只能查询,不能新增、修改、删除,不能用基本类,要用包装类(不然会看作一个整体)

12、基本类型和引用类型区别:引用类型可以值相等,引用地址不等,允许null值,性能不好,集合中只能用基本类型,引用包装类可以和其他类进行转换(toString()等)

13、stringbuilder和string区别:stringbuilder用于字符拼接append()

14、java命名规则:

15、单例模式:5种,饿汉(一开始就new)、懒汉(调用时new)、双次判断null+锁、内部静态类、枚举

你可能感兴趣的:(effective java笔记)