String
String类:数据+加相关的操作,即char[] +操作
1)char 数组只是数据,没有操作
2)一串字符就是字符串:char[]、String、StringBuilder
3)字符串的"字面量"(也叫直接量),都是String类型实例
4)"字符串常量":static final 修饰的变量
Public static final String TYPE = "car" //TYPE被称为常量,"car"是字面量
5)String 内部就是一个char[]
String API 有一个实现原则:对象内容永远不变,也就是说String对象永远不变
这样的规定使字符串使用起来和基本类型相同
String字面量相同时,会替换为同一个String对象的引用,常量连接的结果页被优化为一个字符串
String的比较,使用equals
str1.equals(str2);
StringAPI 的常用方法
这些方法如果字符串有变化就返回新的String对象,不变化就返回原字符串,如trim()
API方法:
charAt()返回指定索引处的 char 值
length() 返回此字符串的长度
trim() 返回字符串的副本,忽略前导空白和尾部空白
toLowerCase()所有字符都转换为小写
toUpperCase() 所有字符都转换为大写
indexOf() 返回指定字符在此字符串中第一次出现处的索引
lastIndexOf() 返回指定字符在此字符串中最后一次出现处的索引
endsWith() 测试此字符串是否以指定的后缀结束
startsWith() 测试此字符串是否以指定的前缀开始。
Substring(int start,int end) 返回一个新的字符串,它是此字符串的一个子字符串
Substring(int start)
toCharArray()将此字符串转换为一个新的字符数组
String 对正则表达式的支持
.matches() 匹配正则表达式
.split("[,\s|]") 切分字符串为字符串数组
.replaceAll()
StringBuilder和StringBuffer
String = char[] + 操作(复制创建新对象)
StringBuilder = char[] + 对char[]操作(处理当前数组内容)
StringBuilder 内部的char[]数组内容可变,如果长度不够,利用变长算法维护,自动扩容长度
StringBuilder
-
StringBuilder是变长字符序列
-
StringBuilder方法:append,insert...都返回当前StringBuilder对象本身的引用
-
如果软件需要大量字符串处理时候建议使用StringBuilder
-
String s = s1+s2;java实际上是如下代码运行:
String s = new StringBuilder(s1).append(s2).toString();
5) s+="a";会产生两个新对象(StringBuilder,String)
StringBuilder buf = new StringBuilder();
Buf.append("a");
6) StringBuffer 和StringBuilder API几乎一样
StringBuffer是java jdk1.0提供的,速度稍慢,线程安全
StringBuilder是java5.0以后提供的,速度快,非线程安全