知识点一:可变参数(简化代码书写)
J2SE 1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参
技术的实现底层; 可变参数转换成数组参数
Public static int max(int min , int ... a){};
max(int min,int[] a) --> max(2,new > int[]{2,4});
知识点二:Overload(重载)与Override(重写)
- Overload(重载)
- 使用规则:方法名相同,参数列表不同
- 主要应用场景父子类,同类方法的重载
- Override(重写)
注意:
1.子类要比父类访问权限大
2.子类不能抛出比父类更多的异常 且定义final不能被重写
3..主要应用场景:接口,父子类中
相同点:都是实现多态的方式编译时多态运行时多态
知识点三:单例模式
概念:一个类只能有一个实例,共用一个实例(比方你只有一个爸爸,兄弟姐妹共用老爸)
1.饿汉式
private static Singleton s=new Singleton;
public static Singleton getInstance(){
return s;
}
优点:类加载实例化,避免线程同步问题
缺点:如没使用该对象,造成内存浪费
2.懒汉式
private static Singleton s;
public static Singleton getInstance(){
if(s==null){
s=new Singleton();
return s;
}
}
优点:没有造成内存浪费
缺点:当运行多线程时,则可以产生多个实例不可用【同步锁】
知识点四:equals与hashCode
Equals用于判断当前对象和传入参数是否相同
Object类默认实现是比较地址值(==类似)
一般用equals都重写了该方法,底层代码会比较其数字HashCode
哈希值(int值)由对象一般不变的值映射出来的,用于快速区分对象(解释对象重写equals方式时,为何要重写hashCode方法。提高对比效率)比如HashSet插入元素 运用就是hashCode方法获取散列码,然后比较插入(而不是逐一比较)
1、如果两个对象相等,那么它们的hashCode()值一定要相同;
2、如果两个对象hashCode()相等,它们并不一定相等。