Java 核心類-字符串

String

在Java中,String是一個引用類型,它本身也是一個class。但是,Java編譯器對String有特殊處理,即可以直接用"..."來表示一個字符串:

String s1 = "Hello!";

實際上字符串在String內部是通過一個char[]數組表示的,因此,按下面的寫法也是可以的:

String s2 = new String(new char[] {'H', 'e', 'l', 'l', 'o', '!'});

因爲String太常用了,所以Java提供了"..."這種字符串字面量表示方法。

Java字符串的一個重要特點就是字符串不可變。這種不可變性是通過內部的private final char[]字段,以及沒有任何修改char[]的方法實現的。

我們來看一個例子:

public class Main {
    public static void main(String[] args) {
        String s = "Hello";
        System.out.println(s);
        s = s.toUpperCase();
        System.out.println(s);
    }
}

結果:

Hello
HELLO

字符串比較

當我們想要比較兩個字符串是否相同時,要特別注意,我們實際上是想比較字符串的內容是否相同。必須使用equals()方法而不能用==

我們看下面的例子

public class Main {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "hello";
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));
    }
}

從表面上看,兩個字符串用==equals()比較都爲true,但實際上那只是Java編譯器在編譯期,會自動把所有相同的字符串當作一個對象放入常量池,自然s1s2的引用就是相同的。

所以,這種==比較返回true純屬巧合。換一種寫法,==比較就會失敗:

public class Main {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "HELLO".toLowerCase();
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));
    }
}

結果:

false
true

結論:兩個字符串比較,必須總是使用equals()方法。

要忽略大小寫比較,使用equalsIgnoreCase()方法。

參考:https://www.liaoxuefeng.com/wiki/1252599548343744/1260469698963456

更多點擊上方連接查看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章