一、基础知识
1.字符串:字符串和牛肉串是一个道理,字符串是一个个字符拼接成的串,牛肉串是一块块牛肉连成的串。
2.字符串的定义:java中采用String类/StringBuffer类/StringBudder类来创建字符串,调用类中已有的方法,实现对字符串的相应操作。
二、应用举例
1.String类
创建方式:
String name="hello java";(存储在字符串常量池,没有则创建有则直接引用)
String name=new String("hello world");(常见的对象创建形式,每new一次重新创建一个对象)
常用方法:
2.StringBuffer类
创建方式
StringBuffer sb = newStringBuffer("happy everyday");
常用方法
3.StringBuder类
创建方式
StringBudder sb = newStringBudder("happy everyday");
常用方法同上,两者都继承了AbstractStringBuilder类。
4.String/StringBuffer和StringBudder的区别
从长度是否可变来看:
String 是长度不可变的,本质在于源码中由final修饰,所以在修改字符串内容时,实际上是生成了一个新的对象,而指针指向了新的String对象。
StringBuffert和StringBudder则是长度可变的,本质在于源码中为非final修饰的字符数组。
从线程是否安全来看:
String是常量,显然线程安全。
StringBuffer是线程安全的,原因在于对方法加了同步锁或者对调用的方法加了同步锁,即synchronized关键字。
StringBudder是非线程安全的,并没有对方法进行加同步锁,所以是非线程安全的。
从运行的效率上来看:
通常情况下:StringBudder > StringBuffer > String(每次修改都要执行创建回收机制)
补充说明:
以上三种字符串创建方法的适用场景:
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
领取专属 10元无门槛券
私享最新 技术干货