Java String中的方法非常多也非常实用,而且是经常要用到的,写得多了就能记住了哈(记不住也是正常的,翻一下api文档,翻一下笔记)
int length()
:返回字符串的长度: return value.length
char charAt(int index)
: 返回某索引处的字符return value[index]
boolean isEmpty()
:判断是否是空字符串:return value.length == 0
String toLowerCase()
:使用默认语言环境,将 String 中的所字符转换为小写
String toUpperCase()
:使用默认语言环境,将 String 中的所字符转换为大写
String trim()
:返回忽略前导空白和尾部空白的字符串
boolean equals(Object obj)
:比较字符串的内容是否相同
boolean equalsIgnoreCase(String anotherString)
:与equals方法类似,忽略大小写
String concat(String str)
:将指定字符串连接到此字符串的结尾。 等价于用“ ”
int compareTo(String anotherString)
:比较两个字符串的大小
String substring(int beginIndex)
:返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。
String substring(int beginIndex, int endIndex)
:返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
boolean endsWith(String suffix)
:测试此字符串是否以指定的后缀结束
boolean startsWith(String prefix)
:测试此字符串是否以指定的前缀开始
boolean startsWith(String prefix, int toffset)
:测试此字符串从指定索引开始的子字符串是否以指定前缀开始
boolean contains(CharSequence s)
:当且仅当此字符串包含指定的 char 值序列时,返回 true
int indexOf(String str)
:返回指定子字符串在此字符串中第一次出现处的索引
int indexOf(String str, int fromIndex)
:返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
int lastIndexOf(String str)
:返回指定子字符串在此字符串中最右边出现处的索引
int lastIndexOf(String str, int fromIndex)
:返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
String replace(char oldChar, char newChar)
:返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所 oldChar 得到的。
String str1 = "北京你好,你好北京";
String str2 = str1.replace('北', '南');
System.out.println(str1);//北京你好,你好北京
System.out.println(str2);//南京你好,你好南京
String str3 = str1.replace("北京", "上海");
System.out.println(str3);//上海你好,你好上海
boolean matches(String regex)
:告知此字符串是否匹配给定的正则表达式。
String[] split(String regex)
:根据给定正则表达式的匹配拆分此字符串。
String[] split(String regex, int limit)
:根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
String与基本数据类型、包装类之间的转换
String --> 基本数据类型、包装类 -> 调用包装类的静态方法:parseXxx(str)
基本数据类型、包装类 --> String -> 调用String重载的valueOf(xxx)
代码语言:javascript复制public void StringToBasic() {
String str1 = "123";
int i = Integer.parseInt(str1);
System.out.println(i);
System.out.println(i == 123);//true
int j = 456;
String s = String.valueOf(j);
System.out.println(s);
System.out.println(s.equals("456"));//true
}
String --> char[] -> 调用String的toCharArray()
char[] --> String -> 调用String的构造器
代码语言:javascript复制public void BasicToString() {
String s1 = "helloword";
char[] chars = s1.toCharArray();
for (int i = 0; i < chars.length; i ) {
System.out.println(chars[i]);
}
char[] charArray = new char[]{'h', 'e', 'l', 'l', 'o'};
String s2 = new String(charArray);
System.out.println(s2);
}
编码:String --> byte[] -> 调用String的getBytes()
解码:byte[] --> String -> 调用String的构造器
编码:字符串 --> 字节 (看得懂 --->看不懂的二进制数据)
解码:编码的逆过程,字节 --> 字符串 (看不懂的二进制数据 ---> 看得懂)
说明:解码时,要求解码使用的字符集必须与编码时使用的字符集一致,否则会出现乱码。
代码语言:javascript复制@Test
public void StringToByteTest() throws UnsupportedEncodingException {
String s1 ="你好java世界";
byte[] bytesArray = s1.getBytes();//使用默认字符集编码
System.out.println(Arrays.toString(bytesArray));//[-28, -67, -96, -27, -91, -67, 106, 97, 118, 97, -28, -72, -106, -25, -107, -116]
byte[] gbks = s1.getBytes("gbk");//使用gbk编码集合
System.out.println(Arrays.toString(gbks));//[-60, -29, -70, -61, 106, 97, 118, 97, -54, -64, -67, -25]
System.out.println("--------------------------------");
String str1=new String(bytesArray);//使用默认字符进行解码
System.out.println(str1);//你好java世界
String str2 = new String(gbks);//使用默认字符对gbk编码进行解码
System.out.println(str2);//���java����解码错误,出现中文乱码,原因:编码和解码不一致
String str3 = new String(gbks,"gbk");//使用gbk格式进行解码
System.out.println(str3);//你好java世界,解码正确,原因:编码和解码一致
}
与StringBuffer、StringBuilder之间的转换
String -->StringBuffer、StringBuilder -> 调用StringBuffer、StringBuilder构造器
代码语言:javascript复制@Test
public void StringToStringBufferTest(){
String str1 ="helloword";
StringBuffer stringBuffer = new StringBuffer(str1);
System.out.println(stringBuffer);//helloword
StringBuilder stringBuilder = new StringBuilder(str1);
System.out.println(stringBuilder);//helloword
stringBuffer.append(" is StringBuffer");
System.out.println(stringBuffer);//helloword is StringBuffer
stringBuilder.append(" is StringBuider");
System.out.println(stringBuilder);//helloword is StringBuider
}
StringBuffer、StringBuilder --> String -> 调用String构造器 / StringBuffer、StringBuilder的toString()
代码语言:javascript复制public void StringBuiderOrStringBufferToStringTest() {
StringBuffer sb1 = new StringBuffer("hello StringBuffer");
System.out.println(sb1);
StringBuilder sb2 = new StringBuilder("hello StringBuider");
System.out.println(sb2);
System.out.println("----------------------");
String str1 = new String(sb1);
System.out.println(str1);
String str2 = new String(sb2);
System.out.println(str2);
System.out.println("----------------------");
System.out.println(sb1.toString());
System.out.println(sb2.toString());
}