备战金三银四!一线互联网公司java岗面试题整理:Java基础+多线程+集合+JVM合集! (4)

备战金三银四!一线互联网公司java岗面试题整理:Java基础+多线程+集合+JVM合集!

在 Java 中,所有的异常都有⼀个共同的祖先 java.lang 包中的 Throwable 类。Throwable: 有两个重要的⼦类:Exception(异常) 和 Error(错误) ,⼆者都是 Java 异常处理的重要⼦类,各⾃都包含⼤量⼦类。

Error(错误):是程序⽆法处理的错误,表示运⾏应⽤程序中᫾严重问题。⼤多数错误与代码编写者执⾏的操作⽆关,⽽表示代码运⾏时 JVM(Java 虚拟机)出现的问题。例如,Java 虚拟机运⾏错误(Virtual MachineError),当 JVM 不再有继续执⾏操作所需的内存资源时,将出现

OutOfMemoryError。这些异常发⽣时,Java 虚拟机(JVM)⼀般会选择线程终⽌。这些错误表示故障发⽣于虚拟机⾃身、或者发⽣在虚拟机试图执⾏应⽤时,如 Java 虚拟机运⾏错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应⽤程序的控制和处理能⼒之 外,⽽且绝⼤多数是程序运⾏时不允许出现的状况。对于设计合理的应⽤程序来说,即使确实发⽣了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过 Error 的⼦类描述。

Exception(异常):是程序本身可以处理的异常。Exception 类有⼀个重要的⼦类RuntimeExceptionRuntimeException 异常由 Java 虚拟机抛出。NullPointerException(要访问的变量没有引⽤任何对象时,抛出该异常)、ArithmeticException(算术运算异常,⼀个整数除以 0时,抛出该异常)和 ArrayIndexOutOfBoundsException (下标越界异常)。

注意:异常和错误的区别:异常能被程序本身处理,错误是⽆法处理。

Throwable 类常⽤⽅法

public string getMessage():返回异常发⽣时的简要描述

public string toString():返回异常发⽣时的详细信息

public string getLocalizedMessage():返回异常对象的本地化信息。使⽤ Throwable 的⼦类覆盖这个⽅法,可以⽣成本地化信息。如果⼦类没有覆盖该⽅法,则该⽅法返回的信息与getMessage()返回的结果相同

public void printStackTrace():在控制台上打印 Throwable 对象封装的异常信息

异常处理总结

try 块: ⽤于捕获异常。其后可接零个或多个 catch 块,如果没有 catch 块,则必须跟⼀个finally 块。

catch 块: ⽤于处理 try 捕获到的异常。

finally 块: ⽆论是否捕获或处理异常,finally 块⾥的语句都会被执⾏。当在 try 块或catch 块中遇到 return 语句时,finally 语句块将在⽅法返回之前被执⾏。

在以下 4 种特殊情况下,finally 块不会被执⾏:

在 finally 语句块第⼀⾏发⽣了异常。 因为在其他⾏,finally 块还是会得到执⾏

在前⾯的代码中⽤了 System.exit(int)已退出程序。 exit 是带参函数 ;若该语句在异常语句之后,finally 会执⾏

程序所在的线程死亡。

关闭 CPU。

Java 序列化中如果有些字段不想进⾏序列化,怎么办?

对于不想进⾏序列化的变量,使⽤ transient 关键字修饰。transient 关键字的作⽤是:阻⽌实例中那些⽤此关键字修饰的的变量序列化;当对象被反序列化时,被 transient 修饰的变量值不会被持久化和恢复。transient 只能修饰变量,不能修饰类和⽅法。

获取⽤键盘输⼊常⽤的两种⽅法 ⽅法 1:通过 Scanner

⽅法 2:通过 BufferedReader

讲一下Java 中 IO 流 Java 中 IO 流分为⼏种?

按照流的流向分,可以分为输⼊流和输出流;

按照操作单元划分,可以划分为字节流和字符流;

按照流的⻆⾊划分为节点流和处理流。
Java Io 流共涉及 40 多个类,这些类看上去很杂乱,但实际上很有规则,⽽且彼此之间存在⾮常紧密的联系, Java I0 流的 40 多个类都是从如下 4 个抽象类基类中派⽣出来的。

InputStream/Reader: 所有的输⼊流的基类,前者是字节输⼊流,后者是字符输⼊流。

OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。

按操作⽅式分类结构图:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgwjd.html