Java基础
1_Object类中常用方法
equals,getClass,notify,notifyAll,wait,toString,hashCode
线程执行wait方法 会释放锁 让出CPU,进入等待状态,只有当notify 或 notifyAll被执行时,才会被唤醒,notifyAll会唤醒所有等待的线程。
2_String类中常用方法
indexOf,charAt,trim,split,length,subString,equals,toLowerCase,toUpperCase,replace
3_= = 和equals的区别
==基本类型比较值相同,引用类型比较内存地址
Object中equals底层采用==,String中重写equals 比较的是值相同
4_String、StringBuffer、StringBuilder的区别及使用场景
String使用final修饰,每次变化产生新的对象。StringBuffer线程安全。
应用场景:首先使用性能较高的StringBuilder,如果是在多线程共享变量的情况下则使用线程安全的StringBuffer。
5_重载和重写的区别
重载 发生在同一个类中 方法名相同参数列表不同;重写发生在父子类中,方法名和参数列表必须相同。
6_基本类型 和 包装类型的区别
包装类是对象,拥有方法和属性,是引用的传递;基本类型是值传递。
Java中的数据结构
List:有序列表,允许重复和null,先进先出。
Set:无序列表,不允许重复一个null
Map:散列表,允许任意个null值,但最多允许一个key为null
使用场景
- 如果需要容器中的元素按照插入顺序存储,需要List;
- 如果想要保证插入元素的唯一性,则可以选择Set;
- 如果想以键值对的形式存储,则使用Map
- 常用的ArrayList、LinkedList、HashMap基本数据结构
1_ArrayList底层是动态数组(初始长度10,每次扩容为原来的1.5倍),连续的内存存储适合查询操作;
//迭代器
Iterator iterator = arrayList.iterator();
while(iterator.hasNext()){
iterator.next();
}
//增强for循环
for(String str:arrayList){
str;
}
//普通for循环
for(int i=0;i<arrayList.size();i++){
list.get(i);
}
2_LinkedList底层是双向链表,分散存储,适合做插入删除操作;
3_HashMap底层是数组+链表 或 红黑树(初始长度为16,负载因子0.75也就是数组长度达到75%就会进行扩容,每次扩容为原来的2倍),数组长度