作者:公众号JavaWeb学习笔记
转载链接:原文
1.面向对象有哪些特性?
封装,继承,多态,抽象。
默认情况是前面三种,如果面试官问4大特性就把抽象加上。
抽象:将一类对象的共同特征总结出来的构造类的过程。
2、访问修饰符public、private、protected、default的区别?
public:当前类,同包,子类,其他包
protected:当前类,同包,子类
default:当前类,同包
private:当前类
3、Java有没有goto语句 ?
没有,但是goto是保留字
4、运算符&和&&的区别?
&:按位与和逻辑与
&&:短路与。
二者都要求运算符两端都为true,整个表达式才为true。但是&&如果左边为false,就不用判断右边了。
5、String,StringBuffer,StringBuilder的区别?
String是只读字符串,引用的字符串内容是不能被改变的。
StringBuffer和StringBuilder的字符串对象可以直接进行修改。StringBuilder是线程安全的,理论上效率比StringBuffer高。
6、short s1 = 1; s1=s1+1;有错吗?short s1=1;s1+=1;有错吗?
前者不正确,后者正确。
因为1为int类型,所以s1+1也是int类型,需要强制类型转换才能赋值给short。而s1+=1;就可以编译通过,相当于s1=(short)s1+1;隐含了类型转换。
7、抽象类与接口有什么异同?
相同点:1)不能被实例化 2) 一个类继承了抽象类或实现了接口,需要实现其中全部的抽象方法。
不同点:
抽象类里的方法可以是抽象发方法和具体方法,接口里的方法只有抽象方法
抽象类的方法可以是public/private/protected等,接口的方法只能是public
抽象类可以有静态方法,接口不能有静态方法
抽象类可以定义变量,接口中的变量实际上都是常量
一个类只能继承一个抽象类,一个类可以实现多个接口
8、final 、finally 、finalize 的区别?
final :用于声明属性,方法和类分别表示不可变覆盖被其修饰的继承。
finally:异常处理语句结构的一部分,表示总是执行。
finalize :Object类的一个方法 ,在垃圾回收器执行时候会调用被对象此可以覆盖类的一个方法,例如关闭文件等。
9、Math.round(11.5) 等于多少? Math.round( - 11.5)又等于多少?
Math.round(11.5)的返回值是12,
Math.round( - 11.5) 的返回值是-11 。
四舍五入的原理是在参数上加0.5然后取整。
10、error和exception的区别?
Error类和Exception类的父类都是Throwable类.
Error类一般指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存不足,方法调用溢出等。对于这类错误导致的程序中断,仅靠程序员本身无法恢复和预防,遇到这样的错误,建议让程序终止。
Exception类表示程序可以处理的一城,可以捕获且可以恢复。