Java面试总结——字符串与数组

1.“==”、equals和hashCode有什么区别

(1) “==”运算符来比较两个变量的值是否相等。该运算符用于比较变量对应的内存中所存储的数值是否相同,要比较两个基本类型或两个引用变量是否相等,只能使用该运算符。
(2)equals是Object类提供的方法之一。在没有覆盖“equals(Object)”的情况下,与 ==没有区别。
(3)hashCode()方法是从Object类中继承出来的,用来鉴定两个对象是否相等。Object类中的hashCode()方法返回对象在内存中 地址转换为一个int值,如果没有重写hashCode(),任何对象的hashCode()方法是不相等的。
hashCode()和equals的联系与区别?
equals()是用户调用的,hashCode()一般用户不调用。
在覆盖equals()的同时覆盖hashCode()

2.String、StringBuffer、StringBuilder的区别

在Java中,有String,StringBuilder,StringBuffer三者。三者的区别主要是两个方面,即运行速度和线程安全这两个方面。
(1)运行速度:
StringBuilder>StringBuffer>String
String为字符串常量,而StringBuilder和StringBuffer均为字符串变量。即String一旦创建之后不可更改,但后两者的对象是变量,是可以更改的。因此String适合在需要被共享的场合中使用。
(2)线程安全:
StringBuilder(单线程)是线程不安全的,StringBuffer(多线程)是线程安全。如果一个Stringbuffer对象在字符串缓冲区中被多个线程使用,StringBuffer中很多方法带有同步关键字,所以保证线程是安全的。只是在单线程中使用字符串缓冲区,那么StringBuilder的效率会更高些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值