软件技术专区Java@IT·互联网

Java常见面试之中级进阶

2024-10-26  本文已影响0人  李老头探索

前言

本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!java反射的作用于原理?说说List,Set,Map三者的区别?Object 有哪些常用方法?大致说一下每个方法的含义?Java 创建对象有几种方式?似乎有点模糊了,那就大概看一下Java基础面试题吧。好记性不如烂键盘

*** 12万字的java面试整理 ***

java反射的作用于原理

1、定义:
反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。
这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
2、哪里会用到反射机制?
jdbc就是典型
Class.forName('com.mysql.jdbc.Driver.class');//加载MySQL的驱动类
这就是反射。如hibernate,struts等框架使用反射实现的。
3、反射的实现方式:
第一步:获取Class对象,有4中方法:

   1)Class.forName(“类的路径”);
   2)类名.class 
   3)对象名.getClass() 
   4)基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象

4、实现Java反射的类:

   1)Class:表示正在运行的Java应用程序中的类和接口 注意: 所有获取对象的信息都需要Class类来实现。 
   2)Field:提供有关类和接口的属性信息,以及对它的动态访问权限。 
   3)Constructor:提供关于类的单个构造方法的信息以及它的访问权限 
   4)Method:提供类或接口中某个方法的信息

5、反射机制的优缺点:
优点:

1)能够运行时动态获取类的实例,提高灵活性;
 2)与动态编译结合 

缺点:

1)使用反射性能较低,需要解析字节码,将内存中的对象进行解析。
2)相对不安全,破坏了封装性(因为通过反射可以获得私有方法和属性)

解决方案:
1、通过setAccessible(true)关闭JDK的安全检查来提升反射速度;
2、多次创建一个类的实例时,有缓存会快很多
3、ReflectASM工具类,通过字节码生成的方式加快反射速度

说说List,Set,Map三者的区别?

Object 有哪些常用方法?大致说一下每个方法的含义

java.lang.Object


556fdc07-6e0a-443b-f519-a6d84863ac58.png

下面是对应方法的含义。

总结
只要把上面几个方法熟悉就可以了,toString 和 getClass 方法可以不用去讨论它们。该题目考察的是对 Object 的熟悉程度,平时用的很多方法并没看其定义但是也在用,比如说:wait() 方法,equals() 方法等。

Java 创建对象有几种方式?

这题目看似简单,要好好回答起来还是有点小复杂的,我们来看看,到底有哪些方式可以创建对象?

  1. 使用 new 关键字,这也是我们平时使用的最多的创建对象的方式,示例:
User user=new User();
  1. 使用反射方式创建对象,使用 newInstance(),但是得处理两个异常 InstantiationException、IllegalAccessException:
User user=User.class.newInstance();
Object object=(Object)Class.forName("java.lang.Object").newInstance()
  1. 使用 clone 方法,前面题目中 clone 是 Object 的方法,所以所有对象都有这个方法。

  2. 使用反序列化创建对象,调用 ObjectInputStream 类的 readObject() 方法。

    我们反序列化一个对象,JVM 会给我们创建一个单独的对象。JVM 创建对象并不会调用任何构造函数。一个对象实现了 Serializable 接口,就可以把对象写入到文件中,并通过读取文件来创建对象。

总结
创建对象的方式关键字:new、反射、clone 拷贝、反序列化。

上一篇 下一篇

猜你喜欢

热点阅读