一、Java基础
1.final 在 java 中有什么作用?
在final修饰类时,该类不能被继承
在final修饰方法时,该方法不能被重写
final修饰的变量叫常量,常量必须初始化,初始化后值不能被改变
2.反射中,Class.forName和classloader的区别
class.forName在执行.class时会将.class文件加载到jvm中还会执行static代码块
classloader只会将.class文件加载到jvm并不会执行static代码块
3.说说你知道的几个Java集合类
collection接口
list接口
ArrayList实现类
底层是数组,查询快增删慢
LinkedList实现类
底层是链条,增删快查询慢
Vector实现类(不常用,工作至今未曾用过也不了解)
set接口
HashSet实现类
没有重复的元素
没有索引,也没有带索引的方法,不能使用普通for循环遍历
是一个无序的集合,存储和去出的顺序可能不一致
底层是哈希表,查询快
LinkedHashSet实现类
是有序的
底层是由哈希表+单链条组成的
没有重复元素
Treeset实现类
可以自然排序
可以比较排序
map接口
hashMap实现类
底层是哈希表,是由键(key)值(value)对组成 key与value是可以为null但key不能重复值是可以重复的,hashMap实现了cloneable接口和Serializable接口可进行对象克隆和序列化操作
hashTbale实现类(不常用)
treeMap(不常用)
4.String、StringBuilder、StringBuffer区别
String是用final修饰的是不可变字符串
StringBuilder和StringBuffer都是可变字符串但Stringbuilder的线程是不安全的,StringBuffer中有很多带synchronized关键字可以保证线程的安全
5.HashMap 和 Hashtable的区别
相同点
都是Map的实现类
不同点
HashMap是不同步的而HashTable是同步的
HashMap的线程是不安全的而HaTable线程是安全的
6.String 类的常用方法都有那些
length:返回字符串长度
charAt:返回指定位置的字符串长度
indexOf:返回指定字符的索引
split:切割字符串
equals:比较字符串
。。。
7.Java 的引用类型有哪几种
强引用类型:
是指创建一个对象并把对象赋给一个引用变量
当有引用变量指向是永远不会被垃圾回收机制回收
弱引用类型:
如果一个对象具有软引用,在内存足够时,不会被垃圾回收
如果内存不足时,会回收,在没有被回收时,可以被程序使用
软引用类型:
用来描述非必须对象的,在内存是否充足时都会被jvm回收掉
虚引用类型
在任何时候都会被垃圾回收掉
8.抽象类和接口的区别
从实现来说:抽象类是用extends继承的,而接口是用implements实现的
从构造函数来说:抽象类可以有构造函数,而接口没有
从main方法上来说:抽象类可以有main方法并且可以运行,而接口没有
从实现数量来看:类时多实现,单继承的
从修饰符来说:接口默认为public,抽象类可以使用任意的修饰符