JAVA基础面试题

---问题---:

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

---答案---:

会执行,在return前执行。

---问题---:

运行时异常与一般异常有何异同?

---答案---:

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常

---问题---:

char型变量中能不能存贮一个中文汉字?为什么?

---答案---:

能够定义成为一个中文的,因为java中以unicode编码,一个char占2个字节,所以放一个中文是没问题的

---问题---:

关于异常处理机制的叙述哪些正确

a. catch部分捕捉到异常情况时,才会执行finally部分

b. 当try区段的程序发生异常时,才会执行catch区段的程序

c. 不论程序是否发生错误及捕捉到异常情况,都会执行finally部分

d. 以上都是

---答案---:

BC

---问题---:

抽象类和接口的区别?

---答案---:

(1)接口可以被多重implements,抽象类只能被单一extends

(2)接口只有定义,抽象类可以有定义和实现

(3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)

当功能需要累积时用抽象类,不需要累积时用接口。

---问题---:

super()与this()的区别?

---答案---:

This():当前类的对象,super父类对象。

Super():在子类访问父类的成员和行为,必须受类继承规则的约束

而this他代表当前对象,当然所有的资源都可以访问.

在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造.

而在方法中super和this使用的方法就差不多了.只不过super 要考虑是否能访问其父类的资源.

---问题---:

class Something {

   final int i;

   public void doSomething() {

       System.out.println("i = " + i);

   }

}

---答案---:

和上面一题只有一个地方不同,就是多了一个final。这难道就错了吗?

答案: 错。final int i是个final的instant variable (实例变量,或叫成员变量)。final的instant variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为"final int i = 0;"。

---问题---:

线程的基本概念、线程的基本状态以及状态之间的关系

---答案---:

线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。

Java中的线程有四种状态分别是:运行、就绪、挂起、结束。

---问题---:

构造器Constructor是否可被override?

---答案---:

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。



你可能感兴趣的:(JAVA基础面试题)