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 对
对象进行序列化及反序列化.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)