刷java面试题第二天

1、 面向对象的三大基本特性
封装、继承、多态
封装:隐藏对象的属性和实现细节,仅对外公开接口,可以通过设置对象属性的访问级别。目的是增强安全性和简化代码,使得我们不需要考虑具体的实现细节,只需要使用对外提供的接口就行。
继承:子类继承父类的属性和方法,目的是对父类的属性和方法进行复用。
注意事项:
子类必须继承父类的一个构造方法(有参或者无参构造)
子类访问顺序为:子类 -》 父类 -》父类的父类等等
子类不能继承父类的私有属性和方法
子类的方法访问权限不能比父类的权限低
Java中只支持单继承
多态:同一个行为表现为不同的表现形式。
必要条件:继承、重写、父类引用指向子类对象
重写(Override):运行时的多态,运行的时候来判断是否是否执行子类的方法,还是执行父类的方法(方法为重写方法)
重载(Overload):编译时的多态,发生在同一个类中,通过方法名、参数名、参数顺序来判断
2、 java中有了基本数据类型为何还要包装类型
装箱与拆箱基本概念:将值类型与包装类型相互转化
装箱:值类型-》引用类型,通过调用包装类型的valueOf()方法实现
拆箱:引用类型-》值类型,通过调用xxxValue方法实现
原因:java是一门面向对象的语言,基本数据类型不具备面向对象的特点,因此需要把他包装成包装类型,这样就具备面向对象的特点,可以给他加属性和方法等一系列的操作。
3、“”与equals的区别
栈内存:主要存放基本数据类型与引用变量
堆内存:主要存放对象以及数组
栈中的变量指向的是堆中变量的首地址
在这里插入图片描述
”:如果是比较基本数据类型,就可以直接比较,但是如果比较引用类型(如对象),比较的是引用类型所在的首地址。
“equals”:比较的是具体的值,首先会比较是否是指向同一个地址,然后会比较内容。
4、 String StringBuilder StringBuffer的区别
String: 类中采用一个不可变的字符数组来存放字符串,一旦创建就不可变。
StringBuilder:采用的是可变的字符数组,可变字符串。
StringBuffer:采用的是可变的字符数组,可变字符串。
运行速度:StringBuilder > StringBuffer > String
安全性:StringBuffer是安全的,因为对StringBuffer的操作加了同步锁,但是StringBuilder没有加锁,是不安全的,因为如果涉及到多线程同时操作一个字符串,不加锁容易造成错误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值