1.接口和抽象类的异同点
-
相同:
-
- 都不能创建对象
-
- 都可以定义抽象方法,并且一定要在子类中重写
-
不同:
-
- 关键字不同abstract-interface
-
- 抽象方法中既可以有抽象的方法也可以有普通的方法
-
- 接口中中所有的方法都是抽象方法
-
- 抽象类的方法可以任意权限,接口中方法只能是public
-
- 抽象类只能单继承,接口可以多实现
2.重载(overload)和重写(overwrite)区别
- 重写的规则
子类和父类,子类重写了父类的方法
方法名、参数列表必须和父类完全一致
返回值类型要么相同,要么子类方法的返回值类型是父类方法返回值类型的子类!
访问修饰符要么相同,要么子类访问修饰符范围大于父类!
方法中抛出的异常,要么相同。要么子类方法抛出的异常比父类被重写方法抛出的异常更小或相同!
重载的规则(两同一不同)
1)同一个类中
2)方法名相同
3)参数列表不同(个数,列表,类型)
4)和返回值无关
3.StringBufferStringBuilderString区别
String字符串常量不可变使用字符串拼接时会开辟新空间
StringBuffer字符串变量可变线程安全字符串拼接直接在字符串后追加
StringBuilder字符串变量可变非线程安全字符串拼接直接在字符串后追加
1.StringBuilder执行效率高StringBuffer,高于String.
2.String是一个常量,是不可变的,所以对于每一次+=赋值都会创建一个新的对象,
StringBuffer和StringBuilder都是可变的,当进行字符串拼接时采用append方法,在原来的基础上进行追加,所以性能比String要高,
StringBuffer 是线程安全的而StringBuilder是线程非安全的,所以 StringBuilder 的效率高于 StringBuffer.
3.对于大数据量的字符串的拼接,采用 StringBuilder.
4.冒泡排序
工具类版本:
5.选择排序
6.单例设计模式
单例就是该类只能返回一个实例。单例所具备的特点:
-
1.私有化的构造函数
-
2.私有的静态的全局变量
-
3.公有的静态的方法
懒汉式:
线程安全懒汉式:
饿汉式:
7.常见的异常类型
-
NullPointerException空指针异常
-
ClassCastException类型强制转换异常
-
IllegalArgumentException传递非法参数异常
-
ArithmeticException算数运算异常
-
IndexOutOfBoundsException下标越界异常
-
NumberFormatException数字格式异常
-
ClassNotFindException加载请求异常 ……
8.Throws和Throw的区别
-
位置:Throw方法内部,Throws方法名之后
-
作用:Throw抛出异常,Throws声明异常
-
个数:Throw一次抛出一个异常,Throws可以声明多个异常
9.Final,Finally,finalize关键字的作用
-
final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
-
finally是异常处理语句结构的一部分,表示总是执行。不管是否有异常总是被执行,除非虚拟机停止才不执行。System.exit(1);
-
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法可以实现资源回收,释放资源,例如关闭文件等。JVM不保证此方法总被调用.
10.Final关键字的作用
- 修饰类:(最终类)不能被子类继承
- 修饰方法:(最终方法)不能被子类重写
- 修饰变量:(常量)一旦声明之后,不能再次修改其中的值