Skip to content

Java基础 ​

什么是面向对象? ​

面向对象是一种思想,将具体事务抽象成一个对象,这样的代码具有耦合性低,可复用性高,可读性好。

面向对象的特征 ​

  • 封装

给对象看作一个整体,隐藏内部细节,保护了数据,给外部提供一些方式去对对象内部做一些操作。

  • 继承

给对象获得了从基类获取属性和方法的能力,提高了代码的复用性,可以在不修改基类类的情况下加强功能。本质是is-a的关系

  • 多态

封装和继承最终归结于多态,两个类的继承关系,存在方法的重写,故可以在调用时有父类的引用指向子类的实现。多态的三要素:继承、重写、父类引用指向子类。

  • 抽象

是把具体的实例抽离出核心特征的能力,要的是它所能实现的功能而不是具体细节。

面向对象和面向过程的区别? ​

面向过程的性能高于面向对象,面向对象需要实例化和加载一些运行资源,开销比较大。

面向过程不易维护和扩展,复用性也差。

面向对象的代码易复用、易扩展、易维护,并且面向对象的封装继承多态的特征,可以设计出低耦合的代码,使系统更加灵活。

面向对象的性能低于面向过程。

重载和重写的区别 ​

重载要求方法名一致,参数类型、个数、顺序,至少要有一个不同。

重写要求方法名,参数列表,返回值,完全一致。

构造方法是什么?什么是构造方法的重载?什么是拷贝构造方法? ​

一、构造方法是什么

当实例化一个对象时,就会调用该对象的构造方法。如果没有指名构造方法,就会调用默认的无参构造,即使没有提供构造方法,Java编译器也会为这个类创建一个默认的构造方法。

二、构造方法的重载

构造方法重载和方法重载很相似。可以为一个类提供多个构造方法,每一个构造方法必须有他自己的唯一参数列表。

三、拷贝构造方法??

Java不支持像C++那样的拷贝构造方法,如果不自己写构造方法的化,Java不会默认创建拷贝构造方法。

JDK、JRE、JVM分别是什么关系 ​

什么是字节码?采用字节码的好处是什么? ​

Java中的集中基本数据类型是什么?各自占用多少字节? ​

String、StringBuffer、StringBuilder的区别? ​

String为什么要被设计成不可变final类型? ​

Java对象创建的方式有哪些? ​

什么是自动拆装箱? ​

int和Integer有什么区别? ​

equals和==的区别? ​

final、finally、finalize的区别? ​

抽象类和接口有什么区别? ​

讲讲类的实例化顺序? ​

什么是内部类? ​

什么是Java IO? ​

什么是Java序列化? ​

如何实现对象克隆? ​

浅克隆和深克隆 ​

error和exception有什么区别?编译时异常和运行时异常有什么区别? ​

用 Markdown 记录,用时间沉淀