重载和重写的区别?
重载:两同一异,同类同名不同参(参数顺序、个数、类型等不同),有重载构造器
重写:两异一同,子父类同名同参,重写方法门槛要低于父类方法(权限修饰符范围大,返回值为引用类型时 相同或是其子类,异常范围同上),构造器不可重写
除了空指针、数组越界等异常,还有哪些常见错误和异常?
Error:如OOM、StackOverflowError等
Exception:包装类.parseXxx()转换类型错误时:NumberFormatException
valueOf(name)返回指定name名称的枚举类对象,当name不存在时:IllegalArgumentException非法参数错误
线程安全问题或是在迭代器/foreach循环中增删元素:ConcurrentModificationException并发修改错误
向下转型异常:ClassCastException
编译异常通常是意外情况,如找不到文件,需要提供try-catch等方法做备用;运行异常通常是因为逻辑不够健壮,修改后能够避免
什么时候会空指针异常?
1.调用一个为null的对象的成员方法或成员属性
2.null的拆箱操作(也是第一条的情况)
final、finally、finalize三者的区别?
final:修饰变量、方法、类,变量是常量,方法不能被重写,类不能被继承
finally:try-catch结构中必须执行的部分,不论异常是否捕获成功都执行,并且在其他return前执行
finalize:Object类的方法,手动计划回收资源,可能存在回收失败问题
抽象类和接口区别:
抽象类不一定都是抽象方法,接口一定是;
一个类只能继承一个抽象类,一个类可以实现多个接口
如何理解面向对象三大特征(如何理解面向对象编程思想)?
封装性:属性、方法、类用不同的权限修饰符包装成一个整体,增强安全性和简洁性,也就是可见性的大小
继承性:减少冗余、方便扩展,多态的前提
多态性:增强接口方法的灵活性,类的多态。如果没有多态性,抽象类和接口的声明就没意义了
如何理解Java万事万物皆对象?
数据库的一行数据、文件File、前端页面的各种数据等,在Java中都可以被看做一个对象
并行和并发的区别?
并行:多个CPU同时执行
并发:一个CPU交替执行
进程和线程的区别