一、字符串
- 创建字符串可以直接使用字符串常量,也可以使用关键字new和构造方法来创建String对象。
- String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。 - String类表示字符串类型,属于引用数据类型,不属于基本数据类型。
- String类是final类,不可以被继承。
二、连接字符串
- 使用concat()方法
- 使用‘+’操作符
三、格式化字符串
输出格式化字符串可以使用 printf() 和 format() 方法。
String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。
以下是格式说明符:
说明符 | 输出 |
---|---|
%a | 浮点数的十六进制输出 |
%b | 非空为true,为空flase |
%c | Unicode字符 |
%d | 十进制整数 |
%e | 将浮点数输出为科学计数的十进制数 |
%f | 将浮点数输出为十进制数 |
%g | 将浮点数输出为十进制数,根据值和精度可能以科学计数法显示 |
%h | 通过hashCode()方法输出的16进制数 |
%n | 换行符 |
%o | 八进制数 |
%s | 字符串 |
%t | %t是日期/时间转换的前缀。后面还需要跟其他的标识 |
%x | 整数的十六进制字符串 |
四、String类的常用方法
方法 | 描述 |
---|---|
char charAt(int index) | 返回指定索引index处的 char 值 |
int compareTo(Object o) | 将此字符串和另一个对象比较大小 |
String concat(String str) | 将指定字符串连接到此字符串的结尾 |
boolean startsWith(String prefix) | 测试此字符串是否以指定的前缀开始 |
boolean endsWith(String suffix) | 测试此字符串是否以指定的后缀结束 |
boolean equals(Object o) | 比较是否相等 |
boolean equalsIgnoreCase(String anotherString) | 忽略大小写判断两串是否相等 |
byte[] getBytes() | 变成字节数组返回 |
int hashCode() | 返回字符串的哈希码 |
int indexOf(char ch) | 返回指定字符在此字符串中第一次出现处的索引 |
int lastIndexOf(char ch) | 返回指定字符在此字符串中最后一次出现处的索引 |
int length() | 返回字符串长度,空格也算一个字符 |
boolean matches(String regex) | 此字符串是否匹配给定的正则表达式 |
String replace(char oldChar, char newChar) | newChar 替换此字符串中出现的所有 oldChar,并且返回新的字符串 |
String replaceAll(String regex, String replacement) | 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串 |
String[] split(String regex) | String[] split(String regex) |
String substring(int beginIndex, int endIndex) | 从位置beginIndex到endIndex截取字符串,返回新的子字符串 |
char[] toCharArray() | char[] toCharArray() |
String toLowerCase() | 此字符串中的所有字符都转换为小写 |
String toUpperCase() | 此字符串中的所有字符都转换为大写 |
String trim() | 返回字符串的副本,忽略前导空白和尾部空白 |
static String valueOf(primitive data type x) | 返回给定data type类型x参数的字符串表示形式 |
contains(CharSequence chars) | 判断是否包含指定的字符 |
isEmpty() | 判断字符串是否为空,空格也算为空 |
五、StringBuffer 和 StringBuilder 类
1. String和StringBuffer、StringBuilder 类的区别
String是只读字符串,引用的字符串内容是不可更改的,当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 的方法完全相同。区别是StringBuilder 是在单线程环境下使用,它的方法没有被synchronized修饰,不是线程安全的(不能同步访问)。
由于 StringBuilder 不需要加锁,相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
2.StringBuffer 方法
方法 | 描述 |
---|---|
append() | 将指定的字符串追加到此字符序列 |
reverse() | 将此字符序列用其反转形式取代 |
delete(int start, int end) | 移除此序列的子字符串中的字符 |
insert(int offset, int i) | 将 int 参数的字符串表示形式插入此序列中 |
insert(int offset, String str) | 将 str 参数的字符串插入此序列中 |
replace(int start, int end, String str) | 使用给定 String 中的字符替换此序列的子字符串中的字符 |
setCharAt(int index, char ch) | 将给定索引处的字符设置为 ch |
setLength(int newLength) | 设置字符序列的长度 |
substring(int start, int end) | 返回一个新的 String,它包含此序列当前所包含的字符子序列 |
charAt(int index) | 返回此序列中指定索引处的 char 值 |
indexOf(String str) | 返回第一次出现的指定子字符串在该字符串中的索引 |
length() | 返回长度(字符数) |