1.谈谈对抽象 继承 多态的理解
(1)封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式
封装的好处:隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便的加入控制语句,限制不合理操作.
最代表性的就是定义一个类
属性全部声明为private
对外提供属性的set和get方法
(2)继承:是Java中实现代码重用的重要手段之一.java中支持单继承,即每个类只有一个父类,继承是is a的关系,或者说是一种特殊和一般的关系
(3)多态:
多态的三个条件
1.存在继承关系(继承是多态的基础,没有继承就没有多态).
2.子类重写父类的方法(多态下调用子类重写的方法)
3.父类引用指向子类对象
2.谈谈泛型的作用及使用场景
泛型是java1.5提供的新特性;主要是为了解决数据类型的安全性问题,是在类声明的时候通过一个标示表示类中某个属性的类型或者是某个方法的返回值以及参数类型.这样在类声明或者实例化的时候只要指定好需要的类型即可.
3.枚举的特点和使用场景
那么什么时候应该使用枚举呢?每当需要一组固定的常量的时候,如一周的天数、一年四季等。或者是在我们编译前就知道其包含的所有值的集合。Java 1.5的枚举能满足绝大部分程序员的要求的,它的简明,易用的特点是很突出的。
4.线程sleep和wait的区别
(1)这两个方法来自不同的类分别是Thread和Object
(2)最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法.
(3)wait,notify和notifyall只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
(4)sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
Java 线程中的sleep和wait有一个共同作用,停止当前线程任务运行
5.谈谈Java的反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
强调一点:动态调用对象的方法的功能称为java语言的反射机制
6.weak,sorft,strong引用的区别
StrongReference 是 Java 的默认引用实现, 它会尽可能长时间的存活于 JVM 内, 当没有任何对象指向它时 GC 执行后将会被回收
WeakReference, 顾名思义, 是一个弱引用, 当所引用的对象在 JVM 内不再有强引用时, GC 后 weak reference 将会被自动回收
SoftReference 于 WeakReference 的特性基本一致, 最大的区别在于 SoftReference 会尽可能长的保留引用直到 JVM 内存不足时才会被回收(虚拟机保证), 这一特性使得 SoftReference 非常适合缓存应用
7.Object的hashCode()和equals()的区别以及String创建对象时候的理解
因此有人会说,可以直接根据hashcode值判断两个对象是否相等吗?肯定是不可以的,因为不同的对象可能会生成相同的hashcode值。虽然不 能根据hashcode值判断两个对象是否相等,但是可以直接根据hashcode值判断两个对象不等,如果两个对象的hashcode值不等,则必定是两 个不同的对象。如果要判断两个对象是否真正相等,必须通过equals方法。
也就是说对于两个对象,如果调用equals方法得到的结果为true,则两个对象的hashcode值必定相等;
如果equals方法得到的结果为false,则两个对象的hashcode值不一定不同;
如果两个对象的hashcode值不等,则equals方法得到的结果必定为false;
如果两个对象的hashcode值相等,则equals方法得到的结果未知。
8.Java的常用集合类功能,区别,性能
Set无序,元素唯一 常用实现类有HashSet,TreeSet
List有序的,可以重复 常用实现类有ArrayList,LinkedList
Map是以键值出现的 常用实现类有HashMap,TreeMap