Java基础面经个人随意记录

1.final关键字?

1.final修饰的类不能被继承,
其中所有的方法都不能被重写但是可以重载
2.final修饰的方法不能被重写,
但是子类可以用父类中final修饰的方法
3.final修饰的成员变量不可变

2.static关键字?

1.static修饰的成员方法叫静态方法,
在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为需要依赖对象
2.static修饰的变量叫静态变量,静态变量被所有对象共享,在内存只有一个副本
一个成员变量被static和final同时修饰就是常量
3.static形成静态代码块优化程序性能

3.finally,finalize?

finally:一般作用于tyr-catch代码块中,在处理异常时,将一定要执行的代码放在finally代码块中
finalize:Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器调用

4.String,StringBuffer,StringBuilder?

String:底层使用一个不可变的字符数组private final char value[];
StringBuffer:线程安全,效率较低
StringBuilder:线程不安全,效率较高
因为他们的append()方法中是否有同步锁

5.接口和抽象类?

抽象类:
1.被abstract关键字修饰的类/方法叫抽象类/方法
2.抽象方法只有方法的声明,没有方法体
3.抽象类不能被实例化只能被继承
4.包含抽象方法的一定是抽象类,反之不一定
5.抽象类中的抽象方法的修饰符只能为public或protected,默认为public
6.一个子类继承一个抽象类,则子类必须实现父类的抽象方法,否则子类也必须定义为抽象类
7.抽象类可以包含属性,方法,构造方法,但是构造方法不能用于实例化,主要是被子类调用
接口:
1.被interface关键字修饰
2.接口可以包含变量,方法
3.接口支持多实现:一个接口/类可以extends多个接口

6.面向对象三大特性?

1.封装:
将类的信息隐藏在类内部
不允许外部程序直接访问
而是通过该类提供的方法来实现访问
2.继承:
3.多态

7.ArrayList和LinkedList

1.ArrayList的实现是基于数组(可以动态扩容的数组),LinkedList的实现是基于双向链表。
2.对于随机访问,ArrayList优于LinkedList
3.对于插入和删除操作,LinkedList优于ArrayList
4.LinkedList比ArrayList更占内存
上一篇:IdWorker工具类


下一篇:Windows dll注入