Java基础面试题(一)

1.  == 和 equals的区别?

        ==用于判断两个对象的内存地址是否相等,即判断两个对象是否是同一个对象(基本数据类型:比较的是内容  引用数据类型:比较的是地址)。

        equals用于判断两个对象的是否相等。equals底层是用==来实现的,所以也是判断内存地址是否相等,但是equals使用时绝大部分情况都是被重写后再使用,使equals用于判断对象内容相等而非地址。

2.final关键字修饰(类,方法,变量)有什么作用

        final关键字主要用于类,方法,变量

        修饰类:表示这个类无法被继承,这个类中的所有方法都将被隐式的指定为final方法。

        修饰方法:使方法不能被重写,但可以被重载。

        修饰变量:表示常量,在被初始化后不能被修改。

3.基本数据类型及占用的字节数

        Java中的数据类型可以分为四大类八种

        整型:   byte         字节数 1

                      short         字节数 2

                      int        字节数 4

                      long        字节数 8

        浮点型:float        字节数 4

                       double        字节数 8

        布尔型:boolean        理论上占用1/8个字节(1bit)

4.重写和重载的区别

        重载(Overload):
        在同一个类中,允许存在多个同名方法,但这些方法的参数列表(参数类型、个数、顺序)必须不同。
        目的是为了让类可以用统一的名称处理不同类型或数量的输入参数。
        重写(Override):
        子类重新实现父类中已有的方法,方法名、参数列表和返回值类型必须完全相同。
目的是为了让子类根据自身需求,修改父类方法的实现逻辑。

5.接口和抽象类的区别

        抽象类是一个"是什么"(IS-A)的关系。它定义了一个对象的核心身份基本结构。例如,Dog(狗)抽象类表示它就是一种狗,具有狗的核心属性和行为。

        接口是一个"能做什么"(CAN-DO)的关系。它定义了一组能力契约。例如,Runnable(可奔跑)接口表示任何实现它的东西都“能奔跑”,但它本身是什么并不关心(可以是狗、汽车、机器人)。

        演变:以前,接口中都是隐式的抽象方法,从Java 8开始,接口通过引入defaultstatic方法,变得比以前更强大。现在,接口也能提供方法实现了。这减少了对“抽象类仅用于共享代码”的依赖。

6.面向对象的三大特性,以及自己的理解

        三大特性分别是封装、继承和多态 

        封装是基础,隐藏内部实现细节,只暴露必要的操作接口,构建出一个个独立的、高内聚的类。

        继承是纽带,基于已有类创建新类,新类继承父类的特性和行为,并可以扩展新的功能。它建立了类之间的层次关系,实现了代码的复用和扩展。

        多态是目的,同一操作作用于不同的对象,可以产生不同的执行结果。它基于继承和重写,实现了程序的最终灵活性、可扩展性和可替换性。

用一个具体的汽车例子:

        封装:设计并制造汽车的各个部件(发动机、变速箱),并把它们用外壳包起来,只留下方向盘、油门、刹车等接口给你。

        继承:基于一款基础车型,衍生出SUV版、高性能版、豪华版。它们都具备基础车型的特性,但又各有特色。

        多态:你作为驾驶员,只需要学会“踩油门”这个统一操作。至于踩不同车的油门(跑车、卡车、SUV),车子的加速表现(实现)各不相同,但你不需要关心底层是怎么办到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值