java.lang.String类的学习及使用
一、概述
String:字符串,使用一对""引起来的字符串。
String特点:
1.为不可变字符串
2.底层表示为:private final char value[]; String 声明fianl的,不可以被继承,并且实现了,Seializable和Comparable接口,可以被序列号和比较
3. 通过字面量的方式(区别于new给一个字符串赋值,此时的字符串值声明在字符串常量池中)。
4.字符串常量池中是不会存储相同内容(使用String类的equals()比较,返回true)的字符串的。
常见方法示例
1. int length():返回字符串的长度: return value.length
public class TestString {
public static void main(String[] args) {
String str = "abc";
System.out.println(str.length());
}
}
2. char charAt(int index): 返回某索引处的字符return value[index]
public class TestString {
public static void main(String[] args) {
String str = "abc";
//下标从0开始
System.out.println(str.charAt(1));
}
}
3. boolean isEmpty():判断是否是空字符串:return value.length == 0
public class TestString {
public static void main(String[] args) {
String str = "abc";
//是否为空
System.out.println(str.isEmpty());
}
}
4. String toLowerCase():使用默认语言环境,将 String 中的所字符转换为小写
public class TestString {
public static void main(String[] args) {
String str = "abC";
//全部转换成小写的
System.out.println(str.toLowerCase());
}
}
5. String toUpperCase():使用默认语言环境,将 String 中的所字符转换为大写
public class TestString {
public static void main(String[] args) {
String str = "abC";
//全部转换成大写的
System.out.println(str.toLowerCase());
}
}
6. String trim():返回字符串的副本,忽略前导空白和尾部空白字符
public class TestString {
public static void main(String[] args) {
String str = " \n,abC \t ";
//忽略前导空白和尾部空白字符
System.out.println(str.trim());
}
}
7. boolean equals(Object obj):比较字符串的内容是否相同
public class TestString {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
String str3 = "aBc";
//String方法重写了equals()方法
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
}
}
8. boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写
public class TestString {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
String str3 = "aBc";
//String方法重写了equals()方法
System.out.println(str1.equals(str2));
System.out.println(str1.equalsIgnoreCase(str3));
}
}
9. String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+”
public class TestString {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
String str3 = "aBc";
//concat(str2)类似+
System.out.println(str1.concat(str2));
}
}
10. int compareTo(String anotherString):比较两个字符串的大小
```java
public class TestString {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
String str3 = "aBc";
//compareTo比较大小,小于返回负数,等于0 大于返回正数
System.out.println(str3.compareTo(str1));
//compareToIgnoreCase类似compareTo比较大小,小于返回负数,等于0 大于返回正数,但是忽略大小写
System.out.println(str3.compareToIgnoreCase(str1));
}
}
```
11. String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。
```java
public class TestString {
public static void main(String[] args) {
String str1 = "abcdefghijklmnopqrs";
//下标从0开始
String str2=str1.substring(3);
System.out.println(str2);
}
}
```
12. String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
13. boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
public class TestString {
public static void main(String[] args) {
String str1 = "abcdefghijklmnopqrs";
System.out.println(str1.endsWith("rs"));
System.out.println(str1.startsWith("ab"));
}
}
14. boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
15. boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始
16. boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列时,返回 true
public class TestString {
public static void main(String[] args) {
String str1 = "abcdefghijklmnopqrs";
System.out.println(str1.contains("cde"));
}
}
17. int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
18. int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
19. int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
20. int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
=注:indexOf和lastIndexOf方法如果未找到都是返回-1=
替换:
1. String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所 oldChar 得到的。
public class TestString {
public static void main(String[] args) {
String str1 = "abcdefaijklmnoaqrs";
String str2 = "123456789";
System.out.println(str1.replace("a","123242"));
}
}
2. String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所匹配字面值目标序列的子字符串。
3. String replaceAll(String regex, String replacement):使用给定的 replacement 替换此字符串所匹配给定的正则表达式的子字符串。
4. String replaceFirst(String regex, String replacement):使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
匹配:
5. boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
切片:
6. String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
public class TestString {
public static void main(String[] args) {
String str1 = "bcdefaijklamnoaqrs";
String str2 = "123456789";
String[] as = str1.split("a");
for (String s:as
) {
System.out.println(s);
}
System.out.println(as.toString());
}
}
7. String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
String与其它结构的转换
1. 与基本数据类型的转换
public class TestString {
public static void main(String[] args) {
String str="134";
//字符串转继承数据类型,用包装类的静态方法:parseXxx(str)
int n=Integer.valueOf(str);
}
}
2. 与字符数组的转换
public class TestString {
public static void main(String[] args) {
String str1 = "134343";
//字符串转换为字符数组
char[] charArray = str1.toCharArray();
for (int i = 0; i < charArray.length; i++) {
System.out.println(charArray[i]);
}
//字符数组转换为字符串
char[] a = {'a', 'd', 't'};
String str2 = new String(a);
System.out.println(str2);
}
}
3. 与字节数组的转换
String str1 = "abc12哈哈";
byte[] bytes = str1.getBytes();//使用默认的字符集,进行编码。
System.out.println(Arrays.toString(bytes));
byte[] gbks = str1.getBytes("gbk");//使用gbk字符集进行编码。
System.out.println(Arrays.toString(gbks));
System.out.println("******************");
String str2 = new String(bytes);//使用默认的字符集,进行解码。
System.out.println(str2);
String str3 = new String(gbks);
System.out.println(str3);//出现乱码。原因:编码集和解码集不一致!
String str4 = new String(gbks, "gbk");
System.out.println(str4);//没出现乱码。原因:编码集和解码集一致!
4. 与StringBuffer、StringBuilder之间的转换
String 转换成StringBuffer
StringBuilder:调用StringBuffer
StringBuilder构造器
StringBuffer
StringBuilder转换成String:
①调用String构造器;
②StringBuffer、StringBuilder的toString()