12 java字符串
Java用String
和 StringBuffer
类来处理字符串,在Java中,每个字符串都是一个对象。
- String:主要用于内容不可改变的字符串对象,即字符串一旦创建就不能再改变了(只读)
- StringBuffer:用于串内容可以改变的字符串对象(可读、可写)
12.1字符串初始化
以下用3种方法创建并初始化字符串对象
1 2 3 4 5 6 7
| String s1 = new String( "hello");
String s2 = "hello";
char[] ch = {'h', 'e', 'l', 'l', 'o'}; String s3 = new String(ch);
|
12.2 字符串连接
字符串连接用 +
号
1 2 3 4
| String str1 = "abc"; String str2 = "123";
String str3 = str1 + str2;
|
12.3 字符串比较
-
==
只检查两个串引用是否相同,不比较串值;
注意:
一般说来,编译器每碰到一个字符串的字面值,就会创建一个新的对象
所以在如下代码中:
第6行会创建了一个新的字符串"the light",
但是在第7行,编译器发现已经存在现成的"the light",那么就直接拿来使用,而没有进行重复创建
1 2 3 4 5 6 7 8 9 10 11
| package character; public class TestString { public static void main(String[] args) { String str1 = "the light"; String str3 = "the light"; System.out.println( str1 == str3); } }
|
-
equals()
或equalsIgnoreCase()
方法:比较串值是否相同
equalsIgnoreCase()
表示忽略大小写的影响
-
compareTo()
方法:串大小比较(字典序)
1 2 3 4 5 6 7
| string str1 = "abc"; string str2 = "a";
str2 += "bc"; if(str1 == str2){ }; if(str1.equals(str2)){ };
|
12.4 字符串拆分
split(regex)
方法根据匹配确定的分隔符 regex
将串分解成子串,所有子串存储在字符串数组(每个成员是一个子串)中;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class HelloWorld { public static void main(String[] args){
String s = "The-cat-sat-on-the-mat."; String[] words = s.split("-"); for(int i=0; i<words.length; i++) { System.out.println(words[i]); }
} }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class HelloWorld { public static void main(String[] args){
String s = "12+34+567"; String[] ss = s.split("[+]"); int sum = 0; for(int i=0;i<ss.length;i++) { sum += Integer.parseInt(ss[i]); } System.out.println(sum);
} }
|
12.5操作字符串常用函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| int length();
char charAt(int index);
boolean equals(String s);
int indexOf(String str);
String concat(String str);
String substring(int begin ,int end);
String toLowerCase();
String toUpperCase();
String trim();
char[] toCharArray();
String replace(char old, char new);
String replaceAll(String old, String new)
String replaceFirst(String old, String new)
|
12.6 StringBuffer类
StringBuffer类创建的串其内容是可以修改的,其占用的空间能自动增长:
1
| String s = "a" + 4 + "b123" + false;
|
为提高效率被编译成下列等价代码:
1 2
| StringBuffer s = new StringBuffer(); s.append("a").append(4).append("b123").append(false).toString();
|