Java面试题目 基础篇(一)

1、面向对象的特征

(1)封装。把对象的属性和数据结合为一个独立的整体,并且尽可能隐藏对象的内部实现细节,把不想告诉或者不该告诉别人的东西隐藏起来。别人只能使用我所提供功能实现自身需求,但是不能看到代码细节,增强了代码的安全性

(2)继承。子类继承父类的数据属性和行为,并且根据自身的需求拓展出新的行为,提高代码的复用性

(3)多态。指的是允许不同的对象对同一消息做出相同的操作,即同意消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)。封装和继承基本都是为了多态而准备,再执行期间判断引用对象的实际类型,根据实际的类型调用相应的方法。

(4)抽象。表示对问题领域进行分析、设计中得出的抽象的概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。再Java中抽象用abstract关键字来修饰,用abstract修饰类时,此类就不能被实例化。抽象类(接口)就是为了继承而存在。

注意:抽象类不能实例化!!

2、重载和重写的区别

重载: 发生在同一个类中,方法名必须相同参数类型不同。个数不同,顺序不同,方法返回值和访问修饰符可以不同,发生在编译时

重写: 发生在父子类中,方法名.参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为 private 则子类就不能重写该方法。

3、Java中 == 和 equals ()的区别

(1)== 的作用:

基本类型:比较的就是值是否相同;

引用类型:比较的就是地址值是否相同;

(2)equals()的作用:

引用类型:默认情况下,比较的是地址值。

【特殊情况】String、Integer、Date这些类库中的equals()被重写,比较的是内容而不是地址!

  • 在字符串比较中 == 和 equals()的区别?

(1)==:比较的是两个字符串内存地址(堆内存)的数值是否相等,属于是数值比较;

(2)equals():比较的是两个字符串的内容,属于内容比较。

4、String、StringBuffer、StringBuilder 三者之间的区别

(1)String 字符串常量。【String类中使用 final 关键字修饰字符数组,String对象是不可变化的,所以就可以理解为常量,线程安全

(2)StringBuffer 字符串变量(线程安全)。【对方法加上同步锁或者对调用的方法加上同步锁,所以是线程安全的】

(3)StringBuilder 字符串变量 (非线程安全)。【没有对方法进行加同步锁,所以是非线程安全的】

AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共父类,定义了一些字符串的基本操作,如append、insert、indexOf等公共方法。

5、接口和抽象类的区别是什么?

(1)实现:抽象类的子类使用 extends来继承;接口必须使用 implements 来实现接口。

(2)构造函数:抽象类可以有构造函数,而接口不能有。

(3)main方法:抽象类中可以有main方法,并且可以运行;接口不呢个有main方法。

(4)实现数量:类可以实现多个接口,但是只能继承一个抽象类。

(5)访问修饰符:接口中的方法默认使用 public 修饰,抽象类中的方法可以任意访问修饰符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值