JAVA-01-2023年210道面试题归纳之JAVA基础(一)(连载中)
- 1.面向对象
- 2.JDK、JRE、JVM之间的区别
- 3.== 和 equals方法之间的区别
- 4.hashCode()与equals()之间的关系
- 5.final关键字的作用是什么?
- 6.String;StringBuffer;StringBuilder的区别
- 7.重载和重写的区别
- 8.接口和抽象类的区别
- 9.List和Set的区别
- 10.ArrayList和LinkedList区别
- 11.HashMap和HashTable有什么区别?其底层是什么?
- 12.谈谈ConcurrentHashMap的扩容机制
- 13.JDK1.7到JDK1.8HashMap发生什么变化(底层)?
- 14.说一下HashMap的put方法
- 15.泛型中extends和supper的区别
- 16.深拷贝和浅拷贝
- 17.HashMap的扩容机制原理
- 18.CopyOnWriteArrayList的底层原理是怎么样的
- 19.什么是字节码?采用字节码的好处是什么?
1.面向对象
什么是面向对象?对比面向过程,是两种不同的处理问题的角度,面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象)、各自需要什么。
比如洗衣服:
- 面向过程:会将任务拆解成一系列的步骤:
- 打开洗衣机
- 放衣服
- 放洗衣粉
- 清洗
- 烘干
- 面向对象:会拆出人和洗衣机两个对象:
人:打开洗衣机|放洗衣服|放洗衣粉
洗衣机:清洗|烘干
封装: 封装的意义,在于明确标识出允许外部使用的所有成员函数和数据项,内部细节对外部调用透明,外部调用无需修改或者关心内部实现
继承: 继承基类的方法,并做出自己的改变和扩展,子类共性的方法或属性直接使用父类的,而不需要自己再定义,只需扩展自己个性化的
多态: 基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同
2.JDK、JRE、JVM之间的区别
JDK:Java Develpment Kit Java开发工具
JRE:Java Runtime Environment Java运行时环境
JVM:Java Virtual Machine Java虚拟机
3.== 和 equals方法之间的区别
- ==:对比到是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址
- equals:objet中默认也是采用==比较,通常会重写
Object
public boolean equals(Object obj){
return (this == obj);
}
String
public boolean equals(Object anObject){
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i =