31、阻塞队列了解吗?怎么使用
阻塞队列,当队列为空时,取元素会被阻塞,当队列满时,放入元素会被阻塞。
32、关于Java的内部类的解释?匿名内部类是什么?如何访问在其外面定义的变量?
一个类当中包含了另一个类,那么这个类就叫做内部类。
匿名内部类:它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象,如果接口的实现类(或者是父类的子类)只需要使用唯一的一次,那么这种情况下就可以省略掉该类的定义,而改为使用【匿名内部类】
public class InnerClass {
private void test(final int i){
new Server(){
public void method(){
System.out.println("匿名内部类...");
}
}.method();
}
}
interface Server{
void method();
}
如何访问在外面定义的变量,需要给变量添加final属性才可以。
public class InnerClass {
public static final String name = "aaa";
public static void main(String[] args) {
test(name);
}
private static void test(final String i){
new Server(){
public void method(){
System.out.println("匿名内部类..." + name);
}
}.method();
}
}
interface Server{
void method();
}
33、java8的新特性有哪些
lambda表达式、接口有了一个默认方法、Stream API和Date Time 的API等等。
34、error和exception有什么区别?
java.lang.Error和java.lang.Exception。
Error一般是系统级别的错误,比如内存泄漏、系统崩溃等问题,这种问题程序本身没办法修复和预防。
Exception表示程序可以处理的异常,可以捕获到而且可以恢复回去。遇到这类问题可以通过抛异常和处理的方式将问题解决。
35、Java异常处理机制
抛出异常和解决异常。
抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。
捕捉异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exception handler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。
36、类和实例初始化顺序
public class Son extends Parent{
public static void main(String[] args) {
new Son();
}
static{
System.out.println("子类第一个静态代码块");
}
public static String sonName = "子类静态变量";
public String sonName2 = "子类成员变量";
{
System.out.println("子类初始化块");
}
static{
System.out.println("子类第二个静态代码块");
}
public Son() {
System.out.println("子类无参构造");
}
}
class Parent{
static{
System.out.println("父类第一个静态代码块");
}
public static String parentName = "父类静态变量";
public String parentName2 = "父类成员变量";
{
System.out.println("父类初始化块");
}
static{
System.out.println("父类第二个静态代码块");
}
public Parent(){
System.out.println("父类无参构造");
}
}
----------------------------------------------------------
父类第一个静态代码块
父类第二个静态代码块
子类第一个静态代码块
子类第二个静态代码块
父类初始化块
父类无参构造
子类初始化块
子类无参构造
37、方法的参数传递机制
当参数是基本数据类型传递的是值,当参数是引用数据类型的时候传递的是内存地址。String和其余包装类的值也是传递的值。