一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java String類的性質與比較

Java String類的性質與比較

2022-02-23 13:09執梗 Java教程

字符串廣泛應用 在 Java 編程中,在 Java 中字符串屬于對象,Java 提供了 String 類來創建和操作字符串,本文將為你帶來詳細介紹,感興趣的朋友繼續往下看吧

 

1.什么是String?

Java String類的性質與比較

首先,初學者一定要知道String是一個類,它是字符串類型,但它不屬于基本數據類。 所謂字符串類型,意思就好比將字符(也就是char類型)像烤串一樣串起來,列如" a "和" b "拼接起來變成"ab"(注意字符串使用雙引號)。" a "和" b"是字符類型也就是char類型,而" ab"則是一個字符串類型。ps:字符串可以為中文

當然以上只是口頭描述,具體的解釋還是看jdk文檔

Java String類的性質與比較

 

2.String類的構造方法

學習一個類首先需要學習它的構造方法,掌握了它的所有實例化方式才能更好的使用它,以下是jdk文檔對String類構造方法的總結。(ps:jdk文檔對我們的學習具有很大幫助,里面記錄了java所有的包和接口,可以去網上下載一個中文版的)

Java String類的性質與比較

通過jdk文檔中我們可以看出String類的構造方法很多,但是我們只要掌握常用的二種即可

1.public String(char[] value)

public String(char[] value)
通過傳入一個char[]構建一個String對象,會將char[]內的數據挨個拼接成一個字符串。在寫代碼的過程中經常會涉及到char與String的轉換,所以該方法需要熟記

下面為代碼演示

public class myString {
    public static void main(String[] args) {
        char[] arr={"a","b","c","d"};
        String string = new String(arr);
        System.out.println(string);//abcd
 
    }
}

2.public String(char[] value, int offset, int count)

public String(char[] value,int offset,int count)
第二種構造方法是在第一種的基礎上多了兩個變量,其中offset是初始的偏移量,count是我們需要復制的長度,就是在數組value上選取一部分成為String對象。該方法在某些情況下會使用到,需要記住

下面為代碼演示

public class myString {
    public static void main(String[] args) {
        char[] arr={"a","b","c","d","e","f"};
        String string = new String(arr,1,4);
        System.out.println(string);//bcde
          //offect為開始復制的下標,count為復制的長度
    
    }
}

byte類型的數組轉化為String其實也同理與char,這里也不過多敘述,我們使用String時通常是像常用數據類型一樣直接使用給它賦值,學好String最主要還是學好它的性質。

Java String類的性質與比較

 

3.String類的性質

jdk文檔中可以很清楚的看見在String類的聲明中它被finaly修飾,所以它具有不可變性。

但是這個不可變性怎么理解呢?

public class myString {
    public static void main(String[] args) {
        int b=100;
        System.out.println(b);//100
        b=10;
        System.out.println(b);//10
 
        String a="aaaa";
        System.out.println(a);//aaaa
        a="bbbb";
        System.out.println(a);bbbb
 
    }
}

有人看到這段代碼打印結果就會發出疑問,a的值不一樣和b變化了嗎?

但這里我們要搞清楚一個誤區:a只是一個String對象的引用,它保存的是這個String對象的地址,并不是String本身,我們通過訪問a去訪問到String對象實際的內容

我們通過一個圖來了解

Java String類的性質與比較

修改后:

Java String類的性質與比較

對圖解析:我們可以發現我們將對a賦值"bbbb"時,原來的字符串常量池中的aaaa并未改變,而是在字符串常量池中重新產生了一個新的String對象"bbbb",并讓a指向它。所以我們說的不可變性是指String對象的內容一旦確定是無法更改的。這需要我們時刻記住

通過String類的不可變性,就產生了String的最大考點。

Java String類的性質與比較

 

4.String之間的相互比較

String類是非常重要且常見的類,我們使用的場景非常多,對String類之間是否相等的比較情況場景非常多見,掌握比較String比較的能力必不可少。

1.

 
    public class myString {
        public static void main(String[] args) {
             
            String a1=new String("AAAA");
            String a2=new String("BBBB");
            System.out.println(a1==a2);//false
            System.out.println(a2.equals(a2));//true
        }
    }

解析:雖然a1與a2指向的對象內容相同,但地址不同,兩者指向的不是同一個對象,==比較的是地址,而equals比較的是內容

2.

 public class myString {
        public static void main(String[] args) {
 
            String a1=new String("AAAA");
            String a2=a1;
            System.out.println(a1==a2);//true
            System.out.println(a2.equals(a2));//true
        }
    }
 
 
 
  public static void main(String[] args) {
    
                String a1=new String("AAAA");
                String a2=new String(a1);
                System.out.println(a1==a2);//false
                System.out.println(a2.equals(a2));//true
            }
    }

解析:這里將String當做基本類型使用,上面將a1賦值給a2的操作,可以理解為a1的地址賦值給a2,所以a1與a2存放的都是"AAAA"的地址。而下面的代碼將a1作為參數給a2,會重新開辟一片內存空間給a2,使其內容與a1一致,但地址不一樣。

3、

public class myString {
            public static void main(String[] args) {
 
                String a1="aaaa";
                String a2="aaaa";
                System.out.println(a1==a2);//true
                System.out.println(a2.equals(a2));//true
            }
    }

解析:當做基本數據類型使用的String對象會保留在字符串常量池中,每一次這樣使用時jvm會檢索常量池是否已經存在,如果已經存在將不會再創建,而是讓新的引用再次指向已經存在的String對象

Java String類的性質與比較

總結:對于String類的比較我們需要使用equals,因為equals單單只考慮字符串的內容,而==還需要考慮地址

到此這篇關于Java String類的性質與比較的文章就介紹到這了,更多相關Java String內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/m0_57487901/article/details/120818518

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产在线精品亚洲第一区香蕉 | 午夜久久免费视频 | 91香蕉小视频 | 国产盗摄wc女厕所 | 色综合久久中文字幕综合网 | 青青草影院在线观看 | 亚欧国产| 2020年精品国产午夜福利在线 | 四虎影视永久在线精品免费 | chinese男gay| 龟甲情感超市全文阅读 小说 | α片免费| 亚洲系列国产精品制服丝袜第 | 村上里沙40分钟在线观看 | 免费看片aⅴ免费大片 | 6080欧美一区二区三区四区 | 久久九九亚洲精品 | 日韩视频一 | 苍井空av | 国产精品久久一区 | 亚洲女bbwxxxx另类 | 亚洲欧美日韩国产综合专区 | 经典三级四虎在线观看 | 欧美精品一区二区三区久久 | 亚洲国产欧美在线人成aaaa20 | 亚洲美女人黄网成人女 | 亚洲天堂视频在线观看 | 我们日本在线观看免费动漫下载 | 果冻传媒91 | 色男人综合| 久久中文字幕乱码免费 | 国产精品反差婊在线观看 | 男人添女人 | 97色伦| 欧美一级乱妇老太婆特黄 | 亚洲男1069gay男猛男 | 国内永久第一免费福利视频 | 国产精品日韩在线观看 | 三级理论在线播放大全 | 亚洲另类中文字幕 | 国产激情一区二区三区四区 |