java基础知识点
Java中类及方法的加载顺序
- 父类的静态字段->父类静态代码块->子类静态字段->子类静态代码块-> 父类成员变量(非静态字段)->父类非静态代码块->父类构造器->子类成员变量->子类非静态代码块->子类构造器
接口和抽象类的区别
- 能够实现多个接口,但只能实现一个抽象类
- 接口中的变量是public static final类型的,而抽象类没有限定
- 抽象类能够编写构造方法,接口不能编写抽象方法
- 继承抽象类不用继承抽象类中的全部方法(但须要继承全部的抽象方法),而实现接口时需实现全部的方法(除默认方法外的方法)
- 抽象类可有main方法,接口没有
- 抽象类能够有默认的方法实现
String 、StringBuffer和StringBuilder的区别
- String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦建立以后该对象是不可更改的,但后二者的对象是变量,是能够更改的。
- 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的
- 使用场景:
- String:适用于少许的字符串操做的状况
- StringBuilder:适用于单线程下在字符缓冲区进行大量操做的状况
- StringBuffer:适用多线程下在字符缓冲区进行大量操做的状况
String.valueOf和Integer.toString的区别
- toString方法需保证对象不为空,不然会抛出空指针错误
- valueOf对空指针的状况已经进行了处理,若是为空的时候会变成“null”字符串
方法重载(overload)
- 方法名字相同,参数不同(参数类型不同,参数的个数同样,个数相同但所对应的类型不相同)
- 方法参数列表同样,方法返回值不同,不能构成方法重载,由于方法编译器没法区分这两个方法(主要根据名字和参数列表区分) 例如 int max(int a,int b) void(int a , int b)不能构成
- 方法修饰符能够不同
方法重写(override)
- 方法名,参数列表,返回值类型都必须相同
- 访问修饰符必须大于或等于被重写的方法
- 重写的方法中,不能抛出新的异常或者更大的异常
- 重写方法只存在于具备继承关系的子类中,父类中的private方法不会发生重写
- 非静态方法不能重写成静态方法
Linkedlist和Arraylist的区别(主要就区别Arraylist是底层实现是数组与链表之间的区别)
- ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
- 对于随机访问get和set,ArrayList以为优于LinkedList,由于LinkedList要移动指针
- 对于新增和删除操做add和remove,LinedList比较占优点,由于ArrayList要移动数据
- 对于遍历ArrayList适合使用fori循环进行遍历(实现了RandomAccess标志,空接口,只作标记使用),对于遍历Linkedlist使用迭代器访问比较合适。
欢迎关注本站公众号,获取更多信息