String类、StringBuffer类、StringBuilder类
String类的创建
String s = "woshihaoren";
String ss = new String("woshihaoren");
注:String类 是 final 类,不能被其他的类继承。
方式二创建的String类,有属性 private final char value[]; 用于存放字符串内容。
value 是一个 final 类型, 不可以修改:即 value 不能指向新的地址,但是单个字符内容是可以变化。
String类的方法
equals(): 是Object类中的方法,只能判断引用类型,默认判断的是地址是否相等。子类中(String类、包类等)往往重写改方法,用于判断内容是否相等。(区分大小写,判断内容是否相等)
注:
即 Object 的 equals 方法默认就是比较对象地址是否相同,也就是判断两个对象是不是同一个对象。
源码中 String 类、包类(Integer)等子类重写了 Object 的 equals 方法,变成了比较两个字符串值是否相同。
(String类比较过程:判断类型==>向下转型==>如果长度相同==>然后一个一个的比较字符==>如果两个字符串的所有字符都相等,返回true)
equalslongreCase(): 不区分大小写,判断内容是否相等。
length: 获取字符的个数,字符串的长度。
indexOf(): 获取字符在字符串中第一次出现的索引,找不到,返回-1。
lastIndexOf():获取字符在字符串中最后一次出现的索引,找不到,返回-1。
subString(): 截取指定范围的字符。
trim(): 去除前后空格。
charAt(): 获取某处索引的字符。
intern(): 最终返回的是常量池的地址(对象)。
toUpperCase(): 转大写。
toLowerCase(): 转小写。
cacat(): 连接。
replace(): 替换字符串的字符。
split(): 分割字符串。
compareTo(): 比较两个字符串的大小。
toCharArray(): 转为字符数组。
format(): 格式化字符串。 %s字符串 %c字符 %d整型 %2.f浮点型。
StringBuffer类
StringBuffer stringBuffer = new StringBuffer("hello")
String 和 StringBuffer 相互转换
String str = "hello";
StringBuffer stringBuffer = new StringBuffer(str);
StringBuffer stringBuffer1 = new StringBuffer();
stringBuffer1 = stringBuffer1.append(str);
StringBuffer stringBuffer3 = new StringBuffer(str);
String s = stringBuffer3.toString();
String s1 = new String(stringBuffer3);
StringBuffer 类常见方法
StringBuffer s = new StringBuffer("hello")
s.append("赵敏").append(100).append(true).append(10.5);
System.out.println(s);
s.delete(11, 14);
System.out.println(s);
s.replace(6, 8, "周芷若");
System.out.println(s);
s.insert(6, "赵敏");
System.out.println(s);
StringBuilder类
StringBuilder stringBuilder = new StringBuilder("hello")
StringBuilder 类常见方法同[SringBuffer]
String、StringBuffer 和 StringBuilder 的比较
1、String: 不可变字符序列,效率低,但是复用率高。
2、StringBuffer: 可变字符序列、效率较高(增删)、线程安全。
3、StringBuilder: 可变字符序列、效率最高、线程不安全。
注意:
string s = "a";
s += "b"
结论:如果对字符串做大量修改,不要使用string类。
String Vs StringBuffer Vs StringBuilder 效率 : StringBuilder > StringBuffer > String
使用结论:
1、如果字符串存在大量的修改操作,一般使用StringBuffer和StringBuilder。
2、如果字符串存在大量的修改操作,并在单线程中的情况下,使用StringBuilder。
3、如果字符串存在大量的修改操作,并在多线程中的情况下,使用StringBuffer。
4、如果字符串很少修改,被多个对象引用,使用String,比如配置信息等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器