String,StringBuilder和StringBuffer
转义字符
所有的转义字符和所对应的意义:
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\ | 代表一个反斜线字符’‘’ | 092 |
’ | 代表一个单引号(撇号)字符 | 039 |
" | 代表一个双引号字符 | 034 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\uhhhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
String的值是不可以改变的,每次对String进行操作时都会产生新的String对象,不仅效率低下,而且浪费存储空间。
StringBuilder和StringBuffer属于长度可变字符串。
StringBuilder和StringBuffer。任何指向它的字符串操作都不会产生新的对象。每个对象都有一定的缓冲去容量,当字符串的大小没有超过容量时,不会分配新的内容,当字符串大小超过容量时,会自动增加容量。
StringBuilder是单线程操作字符串。
SrtingBuffer是多线程操作时使用的字符串。
在单线程使用StringBuilder时速度更快,但是不能用于多线程。
判断字符串是否为空白
" ".isBlank(); // true
去除首尾空格 .trim()
" Javastack ".strip(); // “Javastack”
去除尾部空格
" Javastack “.stripTrailing(); // " Javastack”
去除首部空格
" Javastack ".stripLeading(); // "Javastack "
复制字符串
“Java”.repeat(3); // “JavaJavaJava”
行数统计
“A\nB\nC”.lines().count(); // 3
序号 | 方法描述 |
---|---|
1 | public StringBuffer append(String s) 将指定的字符串追加到此字符序列。 |
2 | public StringBuffer reverse() 将此字符序列用其反转形式取代。 |
3 | public StringBuilder delete(int start, int end) 移除此序列的子字符串中的字符。 |
4 | public insert(int offset, int i) 将 int 参数的字符串表示形式插入此序列中。 |
5 | insert(int offset, String str) 将 str 参数的字符串插入此序列中。 |
6 | replace(int start, int end, String str) 使用给定 String 中的字符替换此序列的子字符串中的字符。 |
1 | int capacity() 返回当前容量。 |
---|---|
2 | char charAt(int index) 返回此序列中指定索引处的 char 值。 |
3 | void ensureCapacity(int minimumCapacity) 确保容量至少等于指定的最小值。 |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组 dst 。 |
5 | int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。 |
6 | int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。 |
7 | int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。 |
8 | int lastIndexOf(String str, int fromIndex) 返回 String 对象中子字符串最后出现的位置。 |
9 | int length() 返回长度(字符数)。 |
10 | void setCharAt(int index, char ch) 将给定索引处的字符设置为 ch 。 |
11 | void setLength(int newLength) 设置字符序列的长度。 |
12 | CharSequence subSequence(int start, int end) 返回一个新的字符序列,该字符序列是此序列的子序列。 |
13 | String substring(int start) 返回一个新的 String ,它包含此字符序列当前所包含的字符子序列。 |
14 | String substring(int start, int end) 返回一个新的 String ,它包含此序列当前所包含的字符子序列。 |
15 | String toString() 返回此序列中数据的字符串表示形式。 |
随机生成123456789和“”,“-”,"+"连接到一起并计算结果输出
public static void main(String[] args) {
StrA1Fb saf1 = new StrA1Fb();
long cishu = 0;
int jishi = 0;
int chenggong = 0;
while (true) {
jishi++;
String s1 = saf1.formula();
int sum = saf1.addition1(s1);
if (sum == 100) {
System.out.printf("%s=100(循环了%d)\n", s1, jishi);
chenggong++;
cishu += jishi;
jishi = 0;
}
if (chenggong >= 11) {
break;
}
}
System.out.println(cishu);
}
public String formula() {
Random rand = new Random();
String[] s1 = {
"", "+", "-"};
StringBuilder sb1 = new StringBuilder();
for (int i = 1; i < 9; i++) {
sb1.append(String.format("%d%s", i, s1[rand.nextInt(s1.length)]));
}
sb1.append("9");
return sb1.toString();
}
public int addition1(String str) {
int sum = 0;
Pattern p = Pattern.compile("-?\\d+");
Matcher m = p.matcher(str);
while (m.find()) {
String t = m.group();
sum += Integer.parseInt(t);
}
return sum;
}
- length() 字符个数
- equals equalsIgnoreCase方法
- trim方法
- substring方法
- concat()方法用于将指定的字符串参数连接到字符串上。
- contains() 判断是否包括某字符串,返回的是true false
- indexOf()返回子串的位置索引,没有返回-1
- lastIndexOf() 返回子串的位置索引,没有返回-1
- replace()替换返回
- split()拆分为String[]
- toLowerCase() toUpperCase()转换小写大写