java面试题学习1

题目来源:

锐明技术 Java开发 10.25 一面 二面 凉经_牛客网 (nowcoder.com)

1.面相对象三大特征

封装:将数据和方法结合在一起,保护内部状态,提供公共接口

继承:允许一个类继承另一个类的属性和方法,促进代码复用和层次化结构

多态:同一操作可以针对不同对象表现出不同的行为,提高灵活性和可扩展性

2.重载与重写的区别,接口与抽象类的区别

重载是在用一个类中,方法名相同,但参数不同(类型、数量或顺序,返回值不行)

重写是发生在子类中,子类重新定义父亲的方法,方法名、参数列表和返回类型都相同

重载发生在编译时(静态多态),而重写发生在运行时(动态多态)

接口仅定义方法签名,不包含实现,用于定义功能规范(java8以后有默认方法和静态方法)

抽象类可以包含方法的声明和具体实现,运行包含成员变量,主要用于为子类提供基本功能和共享状态,强调类的层次结构

接口支持多重继承,一个类可以实现多个接口,抽象类只支持单一继承,一个类只能继承一个抽象类。

接口只能包含public static final常量,不能有实例变量,所有字段默认为public static final

抽象类可以有各种访问修饰符的实例变量(如private,protected,public),也可以有非静态变量,以保存对象的状态。

接口所有的方法默认是public,方法不能有private或protected,可以有默认方法和静态方法(java8之后),抽象类可以定义public、protected、和private方法,即可以有抽象方法,也可以有具体方法。

接口不能有构造函数,因此不能被实例化,抽象类可以有构造函数,供子类调用以初始化状态。

两者都不能被实例化,接口必须通过实现接口的类来创建对象,抽象类必须通过子类来实现。

类实现接口时必须提供所有接口方法的具体实现,抽象类可以选择重写抽象类中的部分或全部抽象方法,也可以使用抽象类提供的具体实现。

3.String、StringBuidler、StringBuffer的区别

1.可变性

String是不可变的,创建后,内容无法更改。每次对String的操作都会产生一个新的对象

StringBuilder和StringBuffer都是可变得,无需创建新的对象

2.线程安全性

String是安全的,由于不可变,不涉及线程安全问题;StringBuilder在单线程环境中性能优越,但在多线程中可能导致数据不一致;StringBuffer他的方法被同步,确保了多线程下的安全,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值