Java基础-面试题

322 阅读4分钟

讲一下面向对象三大特性:封装、继承、多态

java有哪些新建对象的方法

  • 使用new关键字:这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的构参函数(无参的和有参的)。
比如:
Student = new Student();
  • 使用Class类的newInstance方法:我们也可以使用Class类的newInstance方法创建对象,这个newInstance方法调用无参的构造器创建对象
如:
Student student2 = (Student)Class.forName("根路径.Student").newInstance();
或者:
Student stu = Student.class.newInstance();
  • 使用Constructor类的newInstance方法:本方法和Class类的newInstance方法很像,java.lang.relect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。
如:
Constructor<Student> constructor = Student.class.getInstance(); 
Student stu = constructor.newInstance()

这两种newInstance的方法就是大家所说的反射,事实上Class的newInstance方法内部调用Constructor的newInstance方法。这也是众多框架Spring、Hibernate、Struts等使用后者的原因。

  • 使用Clone的方法:无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去,用clone方法创建对象并不会调用任何构造函数。要使用clone方法,我们必须先实现Cloneable接口并实现其定义的clone方法。
如:
Student stu2 = <Student>stu.clone();
这也是原型模式的应用。
  • 使用反序列化:当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象,在反序列化时,JVM创建对象并不会调用任何构造函数。为了反序列化一个对象,我们需要让我们的类实现Serializable接口。
如:
ObjectInputStream in = new ObjectInputStream (new FileInputStream("data.obj")); 
Student stu3 = (Student)in.readObject();

Java中的8中基本数据类型是什么?

重写和重载的区别

  • 它们都是Java中多态的表现形式。
  • 重写(Override)是父类与子类之间多态性的一种表现。当子类中定义的某方法与其父类的某方法有相同的方法名和参数,我们就说该方法被重写 (Override),当我们调用子类的对象使用该方法时,将调用子类重写后的方法,父类中的方法则被覆盖。
  • 重载(Overload)是一个类中多态性的一种表现。如果在一个类中定义了多个相同方法名的方法,但它们的方法参数(参数个数或参数类型货参数顺序)不一致,则称为方法的重载。方法的重载与返回值的类型无关,与参数列表有关。

接口和抽象类的区别

  • 抽象类是单一继承,接口是多重实现,子类只能有一个父类,而子类可以实现多个接口。
  • 抽象类表示“从属”,是对种类的抽象,实现接口表示“组合”关系,是对行为的抽象。 接口中全是抽象方法,抽象类中可以有抽象方法,也可有方法体的方法。
  • 接口中无构造方法,抽象类可有构造方法。
  • 接口中的不可以有private方法和变量,接口中的变量只能为public static final,方法必须是 public abstract的(注意不能是static类型的),抽象类中可以有private方法和变量,因为抽象类中可以有具体的方法实现,在这些具体方法实现中可以用自己定义为private的变量和private方法。它不同于接口,因为接口中不能有方法的具体实现,其所有的方法都要求实现它的类来具体实现,所以,接口中的私有变量和私有方法就永远不会用到,所以接口中不会有private变量和private方法。

讲一下String、StringBuffer和StringBuilder

==和equals()

  • == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。
  • equals()比较的是真正意义上的指针操作。

hashCode()和equals()

什么是反射机制?反射机制的应用场景有哪些?

Java中IO流分为几种?BIO,NIO,AIO有什么区别