MENU

String类常用方法(重要)

• June 15, 2020 • Read: 56 • Note,JavaCore

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)

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的构造器

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的构造器

编码:字符串 --> 字节 (看得懂 --->看不懂的二进制数据)

解码:编码的逆过程,字节 --> 字符串 (看不懂的二进制数据 ---> 看得懂)

说明:解码时,要求解码使用的字符集必须与编码时使用的字符集一致,否则会出现乱码。

@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构造器

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

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

本站所有未注明转载的文章均为原创,并采用CC BY-NV-SA 4.0 授权协议,转载请注明来源。

Archives QR Code
QR Code for this page
Tipping QR Code