第078层:Java核心知识点核心面试题(异常IO反射)

第078层:Java核心知识点核心面试题(异常IO反射),第1张

Java异常处理

1、Java中异常分为哪两种?

编译时异常
运行时异常


2、异常的处理机制有几种?

异常捕捉:try…catch…finally,
异常抛出:throws。 


3、如何自定义一个异常

继承一个异常类,
通常是RumtimeException
或者Exception


4、try catch fifinally,try里有return,finally还执行么?

执行,并且finally的执行早于try里面的return
结论:
不管有木有出现异常,finally块中代码都会执行;
当try和catch中有return时,finally仍然会执行;


5、 
Java可抛出(Throwable)的结构分为三种类型:

被检查的异常(CheckedException),
运行时异常(RuntimeException),
错误(Error)。 


附加题001:
常见的五种运行时异常:
ClassCastException(类转换异常)
IndexOutOfBoundsException(数组越界)
NullPointerException(空指针异常)
ArrayStoreException(数据存储异常, *** 作数组是类型不一致)


附加题002:被检查异常
IOException
FileNotFoundException
SQLException


6、Throw与thorws区别

位置不同
1. throws 用在函数上,后面跟的是异常类,可以跟多个;
而 throw 用在函数内,后面跟的是异常对象。

功能不同:
2. throws 用来声明异常;
throw 抛出具体的问题对象,执行到 throw,
并将具体的问题对象抛给调用者。


7、Error与Exception区别?

Error和Exception都是java错误处理机制的一部分,都继承了Throwable类。
Exception表示的异常。
Error表示的是系统错误。


8、error和exception有什么区别

 error 比如说内存溢出。





Java中的IO与NIO面试题



1、Java 中 IO 流?
Java 中 IO 流分为几种? 

1. 按照流的流向分,
可以分为输入流和输出流;

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

3. 按照流的角色划分
为节点流和处理流。


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

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


3、字节流与字符流的区别
以字节为单位输入输出数据,字节流按照8位传输
以字符为单位输入输出数据,字符流按照16位传输




Java反射
1、除了使用new创建对象之外,还可以用什么方法创建对象?

使用Java反射可以创建对象! 


2、Java反射创建对象效率高还是通过new创建对象的效率高?
通过new创建对象的效率比较高。

通过反射时,先找查找类资源,
使用类加载器创建,过程比较繁琐,所以效率较低.


3、java反射的作用

反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意个对象,都能够调用它的任意一个方法。

在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。

这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。


4、哪里会用到反射机制?

jdbc就是典型的反射
这就是反射。
如hibernate,struts等框架使用反射实现的。



5、反射的实现方式:

第一步:获取Class对象,有4中方法:

1)Class.forName(“类的路径”); 

2)类名.class

3)对象名.getClass()

4)基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象


6、实现Java反射的类:

1)Class:
表示正在运行的Java应用程序中的类和接口
注意: 所有获取对象的信息都需要Class类来实现。

2)Field:
提供有关类和接口的属性信息,以及对它的动态访问权限。

3)Constructor:
提供关于类的单个构造方法的信息以及它的访问权限

4)Method:
提供类或接口中某个方法的信息



7、反射机制的优缺点:
优点:
1)能够运行时动态获取类的实例,提高灵活性;
2)与动态编译结合

缺点:
1)使用反射性能较低,需要解析字节码,将内存中的对象进行解析。

解决方案:

1、通过setAccessible(true)关闭JDK的安全检查来提升反射速度;

2、多次创建一个类的实例时,有缓存会快很多

3、ReflflectASM工具类,通过字节码生成的方式加快反射速度

2)相对不安全,破坏了封装性(因为通过反射可以获得私有方法和属性)

8、Java 反射 API

反射 API 用来生成 JVM 中的类、接口或则对象的信息。

1. Class 类:
反射的核心类,可以获取类的属性,方法等信息。

2. Field 类:
Java.lang.reflec 包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。

3. Method 类: 
Java.lang.reflec 包中的类,表示类的方法,
它可以用来获取类中的方法信息或者执行方法。

4. Constructor 类: 
Java.lang.reflec 包中的类,表示类的构造方法。



9、反射使用步骤(获取 Class 对象、调用对象方法)

1. 获取想要 *** 作的类的 Class 对象,他是反射的核心,
通过 Class 对象我们可以任意调用类的方法。

2. 调用 Class 类中的方法,既就是反射的使用阶段。

3. 使用反射 API 来 *** 作这些信息。


10、获取 Class 对象有几种方法

调用某个对象的 getClass()方法

调用某个类的 class 属性来获取该类对应的 Class 对象

使用 Class 类中的 forName()静态方法(最安全/性能最好)

当我们获得了想要 *** 作的类的 Class 对象后,
可以通过 Class 类中的方法获取并查看该类中的方法和属性。





Java序列化

1、什么是java序列化,如何实现java序列化?

序列化就是一种用来处理对象流的机制,
所谓对象流也就是将对象的内容进行流化。
可以对流化后的对象进行读写 *** 作,
也可将流化后的对象传输于网络之间。

序列化是为了解决在对对象流进行读写 *** 作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口.

 

2、Serializable 实现序列化

在 Java中,只要一个类实现了 java.io.Serializable 接口,那么它就可以被序列化。ObjectOutputStream 和 
ObjectInputStream 对
对象进行序列化及反序列化.


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/797651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存