试题一
问:Overload 和 Override 的区别。Overload的方法是否可以改变返回值的类型?
答:首先,Overload是方法的重载,而Override是方法的重写,其中两者的区别的是:
- 发生的位置:
重载——发生在子类中
重写——发生同一个类中
- 参数列表:
重载——与被重载的方法中的参数必须不同
重写——与被重载的方法中的参数必须一致
- 返回值类型:
重载——与返回值类型无关
重写——与被重写的方法返回值一致
- 访问权限:
重载——与访问权限无关
重写——子类在重写方法时的权限不能低于父类的权限
所以,Overload——重载方法的时候是跟返回值无关的,即可以改变返回值
试题二
问:String 和 StringBuilder、StringBuffer 的区别?
答:首先,三者都能用来接受字符串数据,而三者的区别在于:
- 在字符修改上:
String是不可修改字符序列,而StringBuilder和StringBuffer是可变字符序列
- 在使用效率上:
String和StringBuilder使用的效率要比StringBuffer要低一些
- 在线程安全上:
StringBuffer的线程相对String和StringBuilder两者来说要安全些
- 在初始化上:
String能够赋空值而StringBuilder与StringBuffer则不能
试题三
问:抽象类(abstractclass)和接口(interface)有什么异同?
答:
-
相同点:
- 两者均不能被实例化
- 两者的抽象方法均不能具体实现
-
不同点:
- 抽象类要子类去extends(继承)从而实现实例化,而接口则是靠子类去implements(实现接口)从而实现实例化
- 接口只能有抽象方法,而抽象类中不仅可以存在着抽象方法,还能有其他的非抽象方法,其中包括有其构造方法
- 接口中定义的是公共静态常量,而抽象类中定义的是普通变量
- 抽象类只能是被单继承,而接口是可以被多个类实现
试题四
问:final、finally 和 finalized 的区别?
答:
-
final:
- 可用于修饰属性、方法、类
- 用于修饰属性时表示:属性不可改变,即表示属性是一个固定的常量值
- 用来修饰方法时表示:方法不可覆盖,即表示方法不能被重载等
- 用来修饰类时表示:类不可继承,即成为了一个final了,不能被继承
- 可用于修饰属性、方法、类
-
finally:
- 用于对异常的处理,只能在try/catch语句中使用,表示,在非直接终止JVM(虚拟机)的情况下,总是在最后执行的语句
-
finalize:
- 用于对资源的回收、垃圾的清理等。是Object类中的一种方法
注意:final是Java中的关键字,一种修饰符,finally是Java中的一种异常处理机制,finalize是JavaScript中的一种方法名
试题五
问:throw 和 throws 的区别、及处理方式?
答:
-
相同点:
两者均为消极的处理异常方式,并未真正对异常进行相应的处理,而只是抛出异常 -
不同点:
- throw是语句抛出的异常,而throws则是方法抛出异常
- throw出现的位置在函数头,而throws则是出现在方法体中
- throws抛出异常的异常有方法体内部的try/catch语句进行处理,而throws是由方法的调用者去进行异常处理
-
处理方式:两者的异常抛出均由try/catch语句进行捕获与处理
试题六
问:&和&&的区别?
答:两者均可用来对两边的数据进行逻辑运算从而得出真假的结论
区别:
&在做运算时,会分别对两边的数据进行逻辑判断,最后在对两者的结果再进行一次运算而得出真假的结论,而&&在做运算时,只要左边运算出来的结果为flase,就不会再对右边的数据进行判断真假了,同时得出flase(假)的结果
例如:我需要先判断3-1的值会不会比6-1的值大,然后再通过这个等出来的结果和9-1的值会不会比8+1的值大的结果去做判断:(3-1>6-1)&(9-1>8+1)
和(3-1>6-1)&&(9-1>8+1)
,前者&的两端都要进行判断,而&&在判断到(3-1>6-1)
为false时就直接输出结果为false
试题七
问:this、super关键字的用法?
答:
- this关键字:
- 代表的是当前对象的引用,该用法只能在方法的内部使用
- this不能用于静态方法中
- this可以用来调用重载的构造方法
- super关键字:
- 在子类的成员中,可以用来访问父类的成员变量
- 在子类的成员方法中,可以用来访问父类的成员方法
- 在子类的构造方法中,可以用来访问父类中的成员方法
试题八
问:静态变量和实例变量区别?
答:
- 区别
- 静态变量是独立存在的变量,存放在类中,通过类名去调用,而是实例变量相当于类的属性,在初始化后若未被使用则会被视为垃圾回收
- 存储区域:
- 静态变量存储在静态存储区
- 普通变量存储在堆中
- 相关联系:
- 静态变量与类相关
- 实例变量与实例相关
- 内存分配上的不同
- 生命周期的不同
试题九
问:switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
答:
首先,Switch语句的内容为整数和枚举类型,即为int、byte、integer、short、char的类型,而String和Long类型不行
试题十
问:List、Map、Set三个接口存取元素时,各有什么特点?
答:
- List:
- 以特定的索引来存储元素,同时可以有重复的元素
- Map:
- 保存键值对(key-values) 映射,映射关系是一对一或者多对一的
- Set:
- 不能存放相同的元素
希望对大家有帮助,谢谢
- 不能存放相同的元素