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<T>用于声明泛型;List<?>用于使用定义好的泛型(一般在泛型起一个限制作用,例如:(消费者)List<? super T>;(生产者)List<? extends Class>)
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+锁、内部静态类、枚举
、