JAVA基础面试题(2)

1、== 与 equals 的区别

==在比较基本类型数据时,比较的是值;在比较内存中的对象地址,即是否指向同一个对象,相当于指针的操作

equals在没有重写方法时,在一定意义上相当于==,但我们一般都是自己重写

2、throwable有哪些子类,你遇到过哪些运行时的异常

Error与Exception

NullPointerException、SQLException、IndexOutOfBoundsException、ClassCastException、IllegalArgumentException 

3、创建线程的方法

(1)继承Thread类创建线程

(2)实现Runnable接口创建线程

(3)使用Callable和Future创建线程

4、关于i++多线程访问的问题

由于是多线程操作,我们需要采用线程安全,即synchornized来限制同一时间内对同一变量的访问,但由于i++不是原子操作,具有偶然性,会导致重复情况的出现,所以我们使用i.getAndIncrement()

5、对关于java中的垃圾回收机制的理解

首先我们将对象分为可达与不可达对象,其中可达是指对象中有值,而不可达是对象=null,系统的垃圾回收器将会负责回收所有不可达的对象空间。但我们需要注意的一点是在Java中,程序员是无权调用回收器的,可以通过system.gc(),通知GC运行回收。然而存在 finalize方法,它是Java提供给程序员用来释放对象或者资源的方法,建议少用获取不用。

猜你喜欢

转载自blog.csdn.net/m_S_L/article/details/81624119