Java 没有内置的字符串类型, 而是在标准 Java类库中提供了 一个预定义类,叫做 String。
获得子串
String类的 substring方法可以从一个较大的字符串提取出一个子串。
- substring(int begin, int end);
begin 为开始索引的位置(包括)
end 为结束索引的位置(不包括)String str = "Hello world"; String s = str.substring(0, 3); //s="Hel"
- substring(int begin)
begin 为开始索引的位置,一直到字符串结束的位置String str = "Hello world"; String s = str.substring(3); //s="lo world"
字符串拼接
- Java语言允许使用 + 号连接(拼接)两个字符串
例:
String s1="ABC";
String s2="abc";
String s=s1+s2; //s="ABCabc"
- 也可以一个字符串与一个非字符串的值进行拼接(任意一个Java对象都可以转换成字符串)
例:
String s1 = "ABC";
int a = 13;
String s = s1+a; //s="ABC13"
- 这种特性通常用在输出语句中。
例:
System.out.println("The answer is " + answer);
- 如果需要把多个字符串放在一起,用一个定界符分隔,可以使用静态join方法。
有时候我们在输出的时候,需要用逗号隔开输出什么的可以用这种方法。
例:
String all = String.join(",","1","2","3");
输入为:1,2,3
括号中,第一个为分隔符号,其余的为要连接的字符串。
字符串不可变
- 熟练C/C++语言要注意,常常会将字符串认为是字符数组,这种认识是错误的,Java字符串大致类似于 char* 指针
对于不可变字符串的详细内容了解,可以通过下面这篇博文了解:
聊一聊Java字符串的不可变 —— 闻人的技术博客
判断字符串是否相等
-
区分大小写 equals 方法:
s.equals(t)
如果字符串 s 与字符串 t 相等,则返回true;否则,返回false需要注意的是,s 和 t 可以是字符串变量,也可以是字符串字面量。
例如:
“Hello”.equals(t); -
不区分大小写 equalsIgnoreCase 方法:
s.equalsIgnoreCase(t)
“Hello”.equalsIgnoreCase(“hello”)
-
一定不能使用 == 运算符来检测两个字符串是否相等!这个运算符只能够确定两个字符串是否放置在同一个位置上。
如果虚拟机始终将相同的字符串共享, 就可以使用 == 运算符检测是否相等。但实际上只有字符串常量是共享的,而+ 或 substring 等操作产生的结果并不是共享的。因此,千万不要使用== 运算符测试字符串的相等性, 以免在程序中出现糟糕的 bug。从表面上看, 这种 bug 很像随机产生的间歇性错误。
字母大小写转换
字符串的 toLowerCase() 方法可将字符串中的所有字符从大写字母改写为小写字母,而 tuUpperCase() 方法可将字符串中的小写字母改写为大写字母。
String s="AbcdEF";
s.toLowerCase(); //s="abcdef"
s.toUpperCase(); //s="ABCDEF"
获取字符串长度
利用 String 类中的 length() 方法
String s="abc";
int len=s.length(); //len=3
检查字符串是否为空串:
if (s.length()==0)
或
if (s.equals(""))
去除字符串中的空格
字符串中存在的首尾空格一般情况下都没有任何意义,如字符串“ Hello ”,但是这些空格会影响到字符串的操作,如连接字符串或比较字符串等,所以应该去掉字符串中的首尾空格,这需要使用 String 类提供的 trim() 方法。
例如:
String str = " hello ";
System.out.println(str.length()); // 输出 7
System.out.println(str.trim().length()); // 输出 5
注意:trim() 只能去掉字符串中前后的半角空格(英文空格),而无法去掉全角空格(中文空格)。
字符串的替换
-
replace() 方法
replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串)格式:
字符串.replace(String oldChar, String newChar)其中,oldChar表示被替换的字符串;newChar表示用于替换的字符串。replace()方法会将字符串中所有oldChar替换成newChar。
例如:
String s="hello"; s.replace("l","D"); //s="heDDo"
-
replaceFirst() 方法
replaceFirst() 方法用于将目标字符串中匹配某正则表达式的第一个子字符串替换成新的字符串格式:
字符串.replaceFirst(String regex, String replacement)
其中,regex 表示正则表达式;replacement 表示用于替换的字符串。例如:
String words = "hello java,hello php"; String newStr = words.replaceFirst("hello","你好 "); System.out.println(newStr); // 输出:你好 java,hello php
-
replaceAll() 方法
replaceAll() 方法用于将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串格式:
字符串.replaceAll(String regex, String replacement)
其中,regex 表示正则表达式,replacement 表示用于替换的字符串。例如:
String words = "hello java,hello php"; String newStr = words.replaceAll("hello","你好 "); System.out.println(newStr); // 输出:你好 java,你好 php