1.== 和 equals的区别
- 面试题: == 和 equals() 区别
- 一、回顾 == 的使用:
- == :运算符
-
- 可以使用在基本数据类型变量和引用数据类型变量中
-
- 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
- 如果比较的是引用数据类型变量:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
- 补充: == 符号使用时,必须保证符号左右两边的变量类型一致。
- 二、equals()方法的使用:
-
- 是一个方法,而非运算符
-
- 只能适用于引用数据类型
-
- Object类中equals()的定义:
- public boolean equals(Object obj) {
return (this == obj);
} - 说明:Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体
- 4.像String、Date、File、包装类等都重写了Object类中的equals()方法。重写以后,比较的不是
- 两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同。
- 5.通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,我们
- 就需要对Object类中的equals()进行重写.
- 重写的原则:比较两个对象的实体内容是否相同.
2 什么是面向对象编程思想
3 重写和覆盖的区别
4 final final finalize的区别
5 如何理解多态性,编译时行为运行时行为
6 抽象类与接口有哪些异同?
7 面试题:创建多线程有几种方式?四种!
8 面试题:如何解决线程安全问题?有几种方式
9 面试题:sleep() 和 wait()的异同?
- 1.相同点:一旦执行方法,都可以使得当前的线程进入阻塞状态。
- 2.不同点:
- 1)两个方法声明的位置不同:Thread类中声明sleep() , Object类中声明wait()
- 2)调用的要求不同:sleep()可以在任何需要的场景下调用。 wait()必须使用在同步代码块或同步方法中
- 3)关于是否释放同步监视器:如果两个方法都使用在同步代码块或同步方法中,sleep()不会释放锁,wait()会释放锁。
10 面试题:ArrayList、LinkedList、Vector三者的异同?
- 同:三个类都是实现了List接口,存储数据的特点相同:存储有序的、可重复的数据
- 不同:见上
11面试题:
HashMap map = new HashMap():
* 在实例化以后,底层创建了长度是16的一维数组Entry[] table。
* ...可能已经执行过多次put...
* map.put(key1,value1):
* 首先,调用key1所在类的hashCode()计算key1哈希值,此哈希值经过某种算法计算以后,得到在Entry数组中的存放位置。
* 如果此位置上的数据为空,此时的key1-value1添加成功。 ----情况1
* 如果此位置上的数据不为空,(意味着此位置上存在一个或多个数据(以链表形式存在)),比较key1和已经存在的一个或多个数据的哈希值:
* 如果key1的哈希值与已经存在的数据的哈希值都不相同,此时key1-value1添加成功。----情况2
* 如果key1的哈希值和已经存在的某一个数据(key2-value2)的哈希值相同,继续比较:调用key1所在类的equals(key2)方法,比较:
* 如果equals()返回false:此时key1-value1添加成功。----情况3
* 如果equals()返回true:使用value1替换value2。
*
* 补充:关于情况2和情况3:此时key1-value1和原来的数据以链表的方式存储。
*
* 在不断的添加过程中,会涉及到扩容问题,当超出临界值(且要存放的位置非空)时,扩容。默认的扩容方式:扩容为原来容量的2倍,并将原有的数据复制过来。
*
- 2.HashMap 和 Hashtable的异同?
- 3.CurrentHashMap 与 Hashtable的异同?(暂时不讲)
12面试题:Collection 和 Collections的区别?