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 进行了重写 ,所以比较的是内容。