java的字符串相关问题

1、String 和Stringbuffer 、StringBuilder  的区别

String:字符串常量,   一旦String对象被创建就不可以被修改,而例如 String str = "aaa"; str = str +"abc";  后面的str时新创建的对象,原来的str对象用完就会被GC回收,这样修改字符串使用的时间会很长。

StringBuffer:字符串变量,线程安全,   在新建StringBuffer对象的时候 系统会分配一个字符缓冲区,我们可以利用append方法对字符串进行追加,还有很多支持修改字符串的方法。

StringBuilder:字符串变量,线程不安全,同上。

StringBuilder运行速度最快,但是线程不安全,建议单线程使用

StringBuffer运行速度次之,但是线程安全,多线程使用

String  操作少量数据的时候使用。

2、String 的replace()   和replaceAll()  的区别

replace 支持单个字符以及字符串的替换,但是不会解析正则表达式

          当 仅仅想要替换出现的第一个是可以使用replaceFirst()  而且他支持正则表达式

replaceAll  不仅支持replace的功能,还会支持正则表达式,

3、 ==  与equqls的区别

因为equqls是object根类的方法,适用于引用类型的,

基本类型的比较  用 == 进行,比较的是数值,当字符进行比较是,比较的是ASSIC码

(基本类型存放在栈中)

  对于引用类型    == 与equqls   比较的都是栈中的内容   所以比较的都是引用地址  而String  Data 包装类  等类对于equqls 进行了重写 ,所以比较的是内容。

猜你喜欢

转载自blog.csdn.net/m0_38114016/article/details/81479502
今日推荐