Java String类的常用方法

一、compareTo

compareTo()方法用于按字典顺序比较两个字符串。该比较基于字符串中各个字符的 Unicode 值。按字典顺序将此 String 对象表示的字符序列与参数字符串所表示的字符序列进行比较。

如果按字典顺序此 String 对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此 String 对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为 0。
compareTo 只在方法 equals(Object) 返回 true 时才返回 0

比较逻辑:

  • 首先取出两个字符串的长度,比较较小的长度内,两者是否相等。
  • 若不相等,则直接返回该位置字符的ASCII码相减后的值。
  • 若各位置都相等,则将两个字符串长度的差值返回。
public class Test {
    public static void main(String[] args) {
        String str1 = "cat";
        String str2 = "Cow";
        String str3 = "";
        System.out.println(str1.compareTo("cat"));  //0
        System.out.println(str1.compareTo(str2));  //32
        System.out.println(str1.compareTo(str3));  //3
    }
}

注意:
1、将字符串与空字符串进行比较,则该方法将返回非空字符串的长度(第三行输出)。
2、compareTo()方法区分大小写(第二行输出结果为'c'与'C'的差值)。不区分大小写的比较方法为compareToIgnoreCase方法。

二、concat

concat()方法可以连接多个字符串。此方法将指定的字符串添加到给定字符串的末尾,并返回组合后的字符串。

public class Test {
    public static void main(String[] args) {
        String str1 = "This";
        str1 = str1.concat(" is").concat(" just a").concat(" String");
        String str2 = "world";
        str2 = "hello,".concat(str2);
        System.out.println(str1);  //This is just a String
        System.out.println(str2); //hello,world
    }
}

三、equals

1、equals()与equalsIgnoreCase() 的区别

equals:区分大小写
equalsIgnoreCase():不区分大小写

public class Test {
    public static void main(String[] args) {
        String str1 = "world";
        System.out.println(str1.equals("World")); //false
        System.out.println(str1.equalsIgnoreCase("World")); //true
    }
}

2、equals()和contentEquals()的区别

equals()不仅比较这个字符串的内容还检查另一个被比较的对象是否是String类型;contentEquals()只比较两者的内容是否相同,不检查被比较对象的类型。

String s = "hello world";
StringBuilder sb = new StringBuilder("hello world");

System.out.println(s.equals(sb)); //false
System.out.println(s.contentEquals(sb)); //true

比较String类型与String,StringBuilder, StringBuffer, CharBuffer等类型内容的相等性使用contentEquals()。

四、join

经常需要将一个数组或者List的各项通过分隔符连接成字符串。String.Join方法可以实现这一功能。

public class Test {
    public static void main(String[] args) {
        String[] str = new String[] { "a", "b", "c" };
        String myStr = String.join(",", str);
        System.out.println(myStr); //a,b,c
    }
}

五、split

split方法用于根据给定的分隔符将字符串拆分为其子字符串数组。

  • String[] split(String regex):根据分隔符拆分输入字符串后返回一个字符串数组。
  • String[] split(String regex, int limit):此方法与上述方法的区别是它限制了拆分后返回的字符串数。例如split("anydelimiter", 3),即使字符串中的分隔符超过3次,也会返回仅3个字符串的数组。
  • 如果limit为负,则返回的数组将具有尽可能多的子字符串,但是当limit为零时,将返回去掉尾部空字符串的字符串数组。
public class Test {
    public static void main(String[] args) {
        String s = new String("bbaaccaa");
        String arr1[]= s.split("a", -1);
        System.out.println(arr1.length); //5
        String arr2[]= s.split("a", 0);
        System.out.println(arr2.length); //3,去掉了尾部的两个空字符串
    }

使用split()方法时传递多个分隔符

public class Test{
   public static void main(String args[]){
    String s = " ,ab;gh,bc;pq#kk$bb";
    String[] str = s.split("[,;#$]");
    System.out.println(str.length); //7 
    for (int i=0; i < str.length; i++) {
        System.out.print("Str["+i+"]:"+str[i]+",");
    }
    //输出结果:Str[0]: ,Str[1]:ab,Str[2]:gh,Str[3]:bc,Str[4]:pq,Str[5]:kk,Str[6]:bb,
   }
}

六、trim

trim():从输入字符串中删除前导和尾随空格后返回一个字符串。

public class Test{
   public static void main(String args[]){
       String str = new String("    How are you   ");
       System.out.println("String before trim: "+str+"?");
       System.out.println("String after trim: "+str.trim()+"?");
   }
}

输出结果:

String before trim:     How are you   ?
String after trim: How are you?

七、isEmpty

检查字符串是否为空。如果给定的字符串为空,则此方法返回true,否则返回false。也就是说当字符串长度为0时返回true。

public class Test{  
   public static void main(String args[]){  
    String str1="";  
    String str2="hello";  

    System.out.println(str1.isEmpty());  //true
    System.out.println(str2.isEmpty());  //false
   }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容