抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

12 java字符串

Java用StringStringBuffer类来处理字符串,在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 字符串比较

  1. ==只检查两个串引用是否相同,不比较串值;

    注意:

    一般说来,编译器每碰到一个字符串的字面值,就会创建一个新的对象
    所以在如下代码中:

    第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); //true
    }

    }
  2. equals()equalsIgnoreCase()方法:比较串值是否相同

    equalsIgnoreCase()表示忽略大小写的影响

  3. compareTo()方法:串大小比较(字典序)

1
2
3
4
5
6
7
string  str1 = "abc";    
string str2 = "a";

str2 += "bc";
if(str1 == str2){ }; //false
if(str1.equals(str2)){ }; //true

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]);
}

}
}

/*输出:
The
cat
sat
on
the
mat.
*/
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);

}
}

//输出:613

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); //判断当前字符串和s串相等

int indexOf(String str); //返回str在串中首次出现位置

String concat(String str); //把str连接在当前串之后。

String substring(int begin ,int end); //截取子串[begin,end-1]

String toLowerCase(); //将串转换成小写并返回

String toUpperCase(); //将串转换成大写并返回

String trim(); //将串开始和结尾的空串去掉。

char[] toCharArray(); //返回对应的字符数组

String replace(char old, char new); //新字符替代旧字符

String replaceAll(String old, String new) // 用 `new`串替代字符串中【所有的】 `old`串

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();

评论