Java字符串
1. String方法概述
String 方法
下面是 String 类支持的方法,更多详细,参看 Java String API 文档:
方法名 | 方法描述 |
---|---|
1 char charAt(int index) | 返回指定索引处的 char 值。 |
2 int compareTo(Object o) | 把这个字符串和另一个对象比较。 |
3 int compareTo(String anotherString) | 按字典顺序比较两个字符串。 |
4 int compareToIgnoreCase(String str) | 按字典顺序比较两个字符串,不考虑大小写。 |
5 String concat(String str) | 将指定字符串连接到此字符串的结尾。 |
6 boolean contentEquals(StringBuffer sb) | 当且仅当字符串与指定的StringBuffer有相同顺序的字符时候返回真。 |
7 static String copyValueOf(char[] data) | 返回指定数组中表示该字符序列的 String。 |
8 static String copyValueOf(char[] data, int offset, int count) | 返回指定数组中表示该字符序列的 String。 |
9 boolean endsWith(String suffix) | 测试此字符串是否以指定的后缀结束。 |
10 boolean equals(Object anObject) | 将此字符串与指定的对象比较。 |
11 boolean equalsIgnoreCase(String anotherString) | 将此 String 与另一个 String 比较,不考虑大小写。 |
12 byte[] getBytes() | 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
13 byte[] getBytes(String charsetName) | 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
14 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 将字符从此字符串复制到目标字符数组。 |
15 int hashCode() | 返回此字符串的哈希码。 |
16 int indexOf(int ch) | 返回指定字符在此字符串中第一次出现处的索引。 |
17 int indexOf(int ch, int fromIndex) | 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 |
18 int indexOf(String str) | 返回指定子字符串在此字符串中第一次出现处的索引。 |
19 int indexOf(String str, int fromIndex) | 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 |
20 String intern() | 返回字符串对象的规范化表示形式。 |
21 int lastIndexOf(int ch) | 返回指定字符在此字符串中最后一次出现处的索引。 |
22 int lastIndexOf(int ch, int fromIndex) | 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 |
23 int lastIndexOf(String str) | 返回指定子字符串在此字符串中最右边出现处的索引。 |
24 int lastIndexOf(String str, int fromIndex) | 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 |
25 int length() | 返回此字符串的长度。 |
26 boolean matches(String regex) | 告知此字符串是否匹配给定的正则表达式。 |
27 boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) | 测试两个字符串区域是否相等。 |
28 boolean regionMatches(int toffset, String other, int ooffset, int len) | 测试两个字符串区域是否相等。 |
29 String replace(char oldChar, char newChar) | 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
30 String replaceAll(String regex, String replacement) | 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 |
31 String replaceFirst(String regex, String replacement) | 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 |
32 String[] split(String regex) | 根据给定正则表达式的匹配拆分此字符串。 |
33 String[] split(String regex, int limit) | 根据匹配给定的正则表达式来拆分此字符串。 |
34 boolean startsWith(String prefix) | 测试此字符串是否以指定的前缀开始。 |
35 boolean startsWith(String prefix, int toffset) | 测试此字符串从指定索引开始的子字符串是否以指定前缀开始。 |
36 CharSequence subSequence(int beginIndex, int endIndex) | 返回一个新的字符序列,它是此序列的一个子序列。 |
37 String substring(int beginIndex) | 返回一个新的字符串,它是此字符串的一个子字符串。 |
38 String substring(int beginIndex, int endIndex) | 返回一个新字符串,它是此字符串的一个子字符串。 |
39 char[] toCharArray() | 将此字符串转换为一个新的字符数组。 |
40 String toLowerCase() | 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
41 String toLowerCase(Locale locale) | 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。 |
42 String toString() | 返回此对象本身(它已经是一个字符串!)。 |
43 String toUpperCase() | 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
44 String toUpperCase(Locale locale) | 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。 |
45 String trim() | 返回字符串的副本,忽略前导空白和尾部空白。 |
46 static String valueOf(primitive data type x) | 返回给定data type类型x参数的字符串表示形式。 |
/**
* String是不变对象,即:字符串对象一旦创建,
* 内容不可改变,改变要创建信息对象
* 其中一个原因与常量池有关:
* 字符串常量池:JVM在堆里有一段内存缓冲所有
* 使用字面量形式创建的字符串对象,一旦我们使用
* 已有的字面量再次创建字符串对象时会直接重用
* 这样可以减少内存开销.
* @author QAIU
*
*/
public class StringDemo {
public static void main(String[] args) {
String s1 = "123abc";
String s2 = "123abc";
//s2重用了s1对象
System.out.println(s1==s2);
//s3也重用了
String s3 = "123abc";
System.out.println(s1==s3);
s1=s1+"!";
System.out.println("s1:"+s1);
System.out.println(s1==s2);
//使用new的形式创建一定会产生新对象
String s4=new String("123abc");
//因此虽然s2和s4的内容一样,但是地址不同
System.out.println("s4:"+s4);
/*
* 字符串在比较时应当用equals方法比较
* 而不是使用"=="
*/
System.out.println(s2.equals(s4));
/*
* 编译器有一个特性:在编译期间能确定一个表达式结果时
* 编译器会直接进行计算,并肩 结果编译到class文件里
* 例如下列代码会被编译器编译成
* String s5 = "123abc";
*/
String s5="123"+"abc";
System.out.println("s5:"+s5);
System.out.println(s5==s2); //true
String s="123";
String s6=s+"abc";
System.out.println("s6:"+s6);
System.out.println(s6==s2); //false
}
}
2. String valueOf() 数值转字符串
/**
* String提供了一组静态方法valueOf
* 可以将给定的内容转为字符串,
* 常用的是将基本类型转为字符串
* @author QAIU
*
*/
public class ValueOfDemo {
public static void main(String[] args) {
int a = 123;
String s = String.valueOf(a);
System.out.println(s);
double dou = 123.123;
s = String.valueOf(dou);
System.out.println(dou);
s = a + "";
System.out.println(s);
}
}
3. char charAt(int index) 返回指定索引处的 char 值。
/**
* char charAt(int index)
* 获取给定位置上的字符
* @author QAIU
*
*/
public class CharAtDemo {
public static void main(String[] args) {
String str = "thinking in java";
char c = str.charAt(9);
System.out.println(c);
for (int i = str.length()-1; i >= 0; i--) {
System.out.print(str.charAt(i));
}
}
}
4. int indexOf(String str) 子串位置
indexOf() 方法有以下四种形式:
-
public int indexOf(int ch):
返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 -
public int indexOf(int ch, int fromIndex):
返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 -
int indexOf(String str):
返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 -
int indexOf(String str, int fromIndex):
返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
/**
* int indexOf(String str)
* 检索给定字符串在当前字符串的位置
* 若当前字符串不包含给定内容时返回-1
* @author QAIU
*
*/
public class IndexOfDemo {
public static void main(String[] args) {
//
String str = "thinking in java";
int index = str.indexOf("in");
System.out.println(index);
//从指定位置开始查找第一次出现的位置
index = str.indexOf("in",3);
System.out.println(index);
//查找最后一次出现给定字符串的位置
index = str.lastIndexOf("in");
System.out.println(index);
}
}
5. int length() 字符串长度
/**
* int length()
* 返回当前字符串对的长度
* @author QAIU
*
*/
public class LengthDemo {
public static void main(String[] args) {
String str="我爱java!";
System.out.println(str.length());
}
}
6. boolean matches(String regex) 正则匹配
/**
* 字符串正则表达式方法一:
* boolean matches(String regex)
* 使用给定的正则表达式验证当前字符串是否符合格式要求
* 符合返回true
* 注:给定的正则表达式无论是否加了边界匹配
* 都是做全匹配验证的
* @author QAIU
*
*/
public class MathchesDemo {
public static void main(String[] args) {
String mail = "asad@qq.com";
String regex = "\\w+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
boolean match = mail.matches(regex);
if (match) {
System.out.println("这是邮箱");
} else {
System.out.println("这不是邮箱");
}
}
String ReplaceAll(String regex,String str) 正则替换
/**
* String ReplaceAll(String regex,String str)
* 将当前字符串中满足正则表达式的部分,替换成指定的内容
* @author QAIU
*
*/
public class ReplaceAllDemo {
public static void main(String[] args) {
String str = "abc123def456ghi";
/*
* 将字符串的数组部分替换成"#NUMBER#"
*/
str = str.replaceAll("\\d+", "#NUMBER#");
System.out.println(str);
}
}
7. String[] split(String regex) 字符串正则拆分
/**
* 字符串支持正则表达式方法二
* String[] split(String regex)
* 将当前字符串按照符合正则表达式内容拆分
* @author QAIU
*
*/
public class SplitDemo {
public static void main(String[] args) {
String s = "111AS324A43SA6a8980s89dfa00s8g3x111111111111";
//按照数字部分拆分,保留字母部分
String[] data = s.split("\\d");
System.out.println(data.length);
for (String string : data) {
System.out.println(string);
}
}
}
8.0 boolean startWith(String str) 判断字符串开始
8.1 boolean endWith(String str) 判断字符串结尾
/**
* boolean startWith(String str)
* boolean endWith(String str)
* 判断当前字符串是否是以给定的字符串开始或者结尾的
* @author QAIU
*
*/
public class StartWithDemo {
public static void main(String[] args) {
String str = "thinking in java";
boolean starts = str.startsWith("think");
System.out.println("starts:"+starts);
boolean ends = str.endsWith("ava");
System.out.println("ends:"+ends);
}
}
9. String substring(int Start,int end) 字符串截取
package stringdemo;
/**
* String substring(int Start,int end)
* 截取指定范围内的字符串
* 注:java API通常使用两个数字作为范围时
* 都是“含头不含尾”。
* @author QAIU
*
*/
public class SubstringDemo {
public static void main(String[] args) {
String hoString = "www.qaiu.top";
String sub = hoString.substring(4,8);
System.out.println(sub);//qaiu
sub = hoString.substring(4);
System.out.println(sub);//qaiu.top
}
}
10.0 String toUpperCase() 字母转大写
10.1 String toLowerCase() 字母转小写
/**
* String toUpperCase()
* String toLowerCase()
* 将字符串中的英文部分转换为全大写或者全小写
* @author QAIU
*
*/
public class ToUpperCaseDemo {
public static void main(String[] args) {
String str = "我爱Java";
System.out.println(str);
String upper = str.toUpperCase();
System.out.println(upper);
String lower = str.toLowerCase();
System.out.println(lower);
}
}
String trim() 去除空白字符串
package stringdemo;
/**
* String trim()
* 去除字符串两边的空白字符串
* @author QAIU
*
*/
public class TrimDemo {
public static void main(String[] args) {
String str = " hello ";
System.out.println(str);
String trim = str.trim();
System.out.println(trim);
}
}
评论区