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开始,接口通过引入default和static方法,变得比以前更强大。现在,接口也能提供方法实现了。这减少了对“抽象类仅用于共享代码”的依赖。
6.面向对象的三大特性,以及自己的理解
三大特性分别是封装、继承和多态
封装是基础,隐藏内部实现细节,只暴露必要的操作接口,构建出一个个独立的、高内聚的类。
继承是纽带,基于已有类创建新类,新类继承父类的特性和行为,并可以扩展新的功能。它建立了类之间的层次关系,实现了代码的复用和扩展。
多态是目的,同一操作作用于不同的对象,可以产生不同的执行结果。它基于继承和重写,实现了程序的最终灵活性、可扩展性和可替换性。
用一个具体的汽车例子:
封装:设计并制造汽车的各个部件(发动机、变速箱),并把它们用外壳包起来,只留下方向盘、油门、刹车等接口给你。
继承:基于一款基础车型,衍生出SUV版、高性能版、豪华版。它们都具备基础车型的特性,但又各有特色。
多态:你作为驾驶员,只需要学会“踩油门”这个统一操作。至于踩不同车的油门(跑车、卡车、SUV),车子的加速表现(实现)各不相同,但你不需要关心底层是怎么办到的。
&spm=1001.2101.3001.5002&articleId=150613952&d=1&t=3&u=8f82218d954542fe8d7b8f5cbad02e2e)
3220

被折叠的 条评论
为什么被折叠?



