Java面试题小记

什么是面向对象?谈谈你对面向对象的理解

对比面向过程,是两种不同的处理问题角度

面向过程更注重解决事情的每一个步骤及顺序(直接高效),面向对象更注重解决事情的参与者有哪些,各自负责什么内容(易于复用、扩展和维护)

面向对象的三大特性

封装

​ 隐藏类的属性及部分实现细节,调用者不需要关心内部实现

继承

​ 类似于“狗 是 动物” 可以理解为“狗类”继承了“动物类”,继承又涉及到方法的重写(返回值类型、方法名、参数类型与个数需要与父类完全一致),子类重写父类中的方法,子类中的方法权限要大于等于父类中的方法,抛出的异常范围和返回值范围要小于等于父类中的方法。

重写与重载的区别

​ 重写发生在继承时,子类对父类中已经存在的方法进行区别化(个性化)的修改

​ 重载发生在同一个类中,在同一个类中处理不同数据的多个相同方法名的多态手段

多态

​ 多态就是对象的多种形态。继承是多态的基础

  1. 引用多态
  2. 方法多态

JDK、JRE、JVM区别与联系

JDK包含JRE,JRE包含JVM,如果只是为了运行java程序的话安装JRE就够了,但是如果是为了开发java程序则需要安装jdk(java development kit),

String、StringBuffer、StringBuilder

String 是final 修饰的,不可变,每次操作都会产生一个新的对象

StringBuffer和StringBuilder是在原对象上操作

StringBuffer是线程安全的,方法是synchronized修饰的

StringBuilder是线程不安全的

性能:StringBuilder>StringBuffer>String

接口和抽象类的区别

抽象类
被sbstract修饰的类为抽象类:
  1. 抽象类不能被实例化只能被继承
  2. 包含抽象方法的类一定是抽象类,但是抽象类不一定含有抽象方法
  3. 抽象类中的抽象方法的修饰符只能为public或者protected,默认为public
  4. 一个子类继承一个父类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类
  5. 抽象类可以包含属性、方法、构造方法,但是构造方法不能用来实例化,主要用途是被子类调用
接口
Java中接口使用Interface关键字修饰
  1. 接口可以包含变量、方法;变量被隐式指定为public static final,方法被隐式指定为public abstract(JDK1.8之前)
  2. 接口支持多继承,即一个接口可以extends多个接口,间接的解决了Java中类的单继承问题(这个问题也可用匿名内部类的方式解决);
  3. 一个类可以实现多个接口
  4. JDK1.8接口新特性
    1. 允许给接口添加非抽象的方法实现,但唏嘘使用default修饰;定义了default的方法可以不被实现子类所实现,担只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法
    2. 允许使用static关键字修饰一个方法,并提供实现,成为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)

List和Set

List:

有序,按照对象进入的顺序保存对象,可重复,允许多个Null元素对象,可以使用iterator取出所有元素,再逐一遍历,还可以通过get(int index)获取指定下标的元素

Set:

无序,不可重复,最多允许有一个Null元素对象,取元素时只能用iterator接口取得所有元素,再逐一遍历各个元素

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值