面试准备一: Java基础

学习每日三题(转载):Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day1】 —— 基础篇1_陈哈哈的菜园子-CSDN博客​​​​​​​

 今日学习了java核心技术-基础卷,第5-6章,看的比较潦草,反射和内部类不是很细看,代理也是,等后面再抽空细看,然后就是看了每日三题,以此记录,不做他用。

记录:

1.Java中操作字符串有哪些类,他们有什么区别?

        StringBuffer(线程安全),单线程中StringBuilder性能优于StringBuffer,因为StringBuffer需要获取同步锁Sycronize,在这个过程中会导致性能低于StringBuilder。

        参考答案:String StringBuffer StringBuilder

String是final不可变类,每次操作都是在常量池中生成新的对象,然后指针指向新的对象,而StringBuffer和StringBuilder是在原有对象的基础上进行操作。StringBuffer和StringBuilder在缓冲区有一定容量,只有字符串大小没有超过容量时,自动扩容。所以在对字符串进行可变操作时,StringBuffer和StringBuilder性能高于String。而StringBuffer和StringBuilder的区别在于,StringBuffer是线程安全的,因为它的大多数方法都是有Sycronized修饰,这样就会在执行时必须先获得锁,抢占资源,只有操作结束后,释放资源,释放锁,才能进行下一步操作,所以是线程安全的,反之StringBuilder没有锁是非线程安全的。

2. error和exception的区别

        回答:error是错误,exception是异常,两个都继承自Throwable类。

参考:error和exception都是Throwable的子类。其中Error是正常情况不大可能出现的错误,不需要捕获,例如内存溢出、虚拟机错误、线程死锁。Exception是程序中可能捕获的异常,分可检查,和不可检查异常。如运行时异常为不可检查,如空指针、数组下标越界、类转换异常。可检查异常如IOException。

3. ==和equals的区别

        回答:都是比较,一个是比较地址,一个是比较对象。基础数值类型用==,字符串、引用类型、对象比较用equals。

        参考:==用于比较两个对象的地址,基础类型比较值,引用类型比较内存地址。equals在类中没有重写时,被调用的是超类Object的equals方法,比较的还是内存地址,被重写后,比较的是对象的值。一般重写equals方法都需要重写hashCode,因为如果不重写,可能会出现equals相等,但hashCode不等的情况,如hashMap就会认为是两个不同对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值