最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java String類的性質(zhì)與比較

 更新時(shí)間:2021年10月20日 09:18:13   作者:執(zhí)梗  
字符串廣泛應(yīng)用 在 Java 編程中,在 Java 中字符串屬于對(duì)象,Java 提供了 String 類來(lái)創(chuàng)建和操作字符串,本文將為你帶來(lái)詳細(xì)介紹,感興趣的朋友繼續(xù)往下看吧

1.什么是String?

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

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

2.String類的構(gòu)造方法

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

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

1.public String(char[] value)

public String(char[] value)
通過傳入一個(gè)char[]構(gòu)建一個(gè)String對(duì)象,會(huì)將char[]內(nèi)的數(shù)據(jù)挨個(gè)拼接成一個(gè)字符串。在寫代碼的過程中經(jīng)常會(huì)涉及到char與String的轉(zhuǎn)換,所以該方法需要熟記

下面為代碼演示

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)
第二種構(gòu)造方法是在第一種的基礎(chǔ)上多了兩個(gè)變量,其中offset是初始的偏移量,count是我們需要復(fù)制的長(zhǎng)度,就是在數(shù)組value上選取一部分成為String對(duì)象。該方法在某些情況下會(huì)使用到,需要記住

下面為代碼演示

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為開始復(fù)制的下標(biāo),count為復(fù)制的長(zhǎng)度
    
    }
}

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

3.String類的性質(zhì)

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

但是這個(gè)不可變性怎么理解呢?

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
 
    }
}

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

但這里我們要搞清楚一個(gè)誤區(qū):a只是一個(gè)String對(duì)象的引用,它保存的是這個(gè)String對(duì)象的地址,并不是String本身,我們通過訪問a去訪問到String對(duì)象實(shí)際的內(nèi)容

我們通過一個(gè)圖來(lái)了解

修改后:

對(duì)圖解析:我們可以發(fā)現(xiàn)我們將對(duì)a賦值"bbbb"時(shí),原來(lái)的字符串常量池中的aaaa并未改變,而是在字符串常量池中重新產(chǎn)生了一個(gè)新的String對(duì)象"bbbb",并讓a指向它。所以我們說的不可變性是指String對(duì)象的內(nèi)容一旦確定是無(wú)法更改的。這需要我們時(shí)刻記住

通過String類的不可變性,就產(chǎn)生了String的最大考點(diǎn)。

4.String之間的相互比較

String類是非常重要且常見的類,我們使用的場(chǎng)景非常多,對(duì)String類之間是否相等的比較情況場(chǎng)景非常多見,掌握比較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指向的對(duì)象內(nèi)容相同,但地址不同,兩者指向的不是同一個(gè)對(duì)象,==比較的是地址,而equals比較的是內(nèi)容

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當(dāng)做基本類型使用,上面將a1賦值給a2的操作,可以理解為a1的地址賦值給a2,所以a1與a2存放的都是"AAAA"的地址。而下面的代碼將a1作為參數(shù)給a2,會(huì)重新開辟一片內(nèi)存空間給a2,使其內(nèi)容與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
            }
    }

解析:當(dāng)做基本數(shù)據(jù)類型使用的String對(duì)象會(huì)保留在字符串常量池中,每一次這樣使用時(shí)jvm會(huì)檢索常量池是否已經(jīng)存在,如果已經(jīng)存在將不會(huì)再創(chuàng)建,而是讓新的引用再次指向已經(jīng)存在的String對(duì)象

總結(jié):對(duì)于String類的比較我們需要使用equals,因?yàn)閑quals單單只考慮字符串的內(nèi)容,而==還需要考慮地址

到此這篇關(guān)于Java String類的性質(zhì)與比較的文章就介紹到這了,更多相關(guān)Java String內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決Java中properties文件編碼問題

    解決Java中properties文件編碼問題

    大家好,本篇文章主要講的是解決Java中properties文件編碼問題,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • SpringBoot實(shí)現(xiàn)多環(huán)境配置文件切換教程詳解

    SpringBoot實(shí)現(xiàn)多環(huán)境配置文件切換教程詳解

    很多時(shí)候,我們項(xiàng)目在開發(fā)環(huán)境和生成環(huán)境的環(huán)境配置是不一樣的,例如,數(shù)據(jù)庫(kù)配置,這個(gè)時(shí)候就需要切換環(huán)境配置文件。本文將詳細(xì)講解SpringBoot如何切換配置文件,需要的可以參考一下
    2022-03-03
  • 解決java.sql.SQLException:The?server?time?zone?value?'?D1ú±ê×?ê±??'?is?unrecognized問題

    解決java.sql.SQLException:The?server?time?zone?value?&apo

    這篇文章主要介紹了解決java.sql.SQLException:The?server?time?zone?value?'?D1ú±ê×?ê±??'?is?unrecognized問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Springboot Mybatis-Plus數(shù)據(jù)庫(kù)單元測(cè)試實(shí)戰(zhàn)(三種方式)

    Springboot Mybatis-Plus數(shù)據(jù)庫(kù)單元測(cè)試實(shí)戰(zhàn)(三種方式)

    這篇文章主要介紹了Springboot Mybatis-Plus數(shù)據(jù)庫(kù)單元測(cè)試實(shí)戰(zhàn)(三種方式),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • SpringBoot開發(fā)技巧啟動(dòng)時(shí)配置校驗(yàn)實(shí)現(xiàn)示例

    SpringBoot開發(fā)技巧啟動(dòng)時(shí)配置校驗(yàn)實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了SpringBoot開發(fā)在啟動(dòng)時(shí)自動(dòng)配置校驗(yàn)的實(shí)現(xiàn)示例及原理解析,有需要的朋友可以借鑒參考下希望能夠有所幫助
    2021-10-10
  • SpringBoot整合Mybatis-plus的具體過程使用

    SpringBoot整合Mybatis-plus的具體過程使用

    這篇文章主要介紹了SpringBoot?整合mybatis+mybatis-plus的步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 在Java的MyBatis框架中建立接口進(jìn)行CRUD操作的方法

    在Java的MyBatis框架中建立接口進(jìn)行CRUD操作的方法

    這篇文章主要介紹了在Java的MyBatis框架中建立接口進(jìn)行CRUD操作的方法,CRUD是指在做計(jì)算處理時(shí)的增加(Create)、重新取得數(shù)據(jù)(Retrieve)、更新(Update)和刪除(Delete)幾個(gè)單詞的首字母簡(jiǎn)寫,需要的朋友可以參考下
    2016-04-04
  • SpringBoot中實(shí)現(xiàn)數(shù)據(jù)字典的示例代碼

    SpringBoot中實(shí)現(xiàn)數(shù)據(jù)字典的示例代碼

    這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)數(shù)據(jù)字典的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java EasyExcel實(shí)現(xiàn)導(dǎo)出多sheet并設(shè)置單元格樣式

    Java EasyExcel實(shí)現(xiàn)導(dǎo)出多sheet并設(shè)置單元格樣式

    EasyExcel是一個(gè)基于Java的、快速、簡(jiǎn)潔、解決大文件內(nèi)存溢出的Excel處理工具,下面我們就來(lái)學(xué)習(xí)一下EasyExcel如何實(shí)現(xiàn)導(dǎo)出多sheet并設(shè)置單元格樣式吧
    2023-11-11
  • 淺談springBoot注解大全

    淺談springBoot注解大全

    本篇文章主要介紹了淺談springBoot注解大全,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-03-03

最新評(píng)論

徐汇区| 黄山市| 绥中县| 大渡口区| 宝坻区| 刚察县| 汪清县| 达尔| 屏边| 呼图壁县| 密山市| 会东县| 土默特左旗| 高淳县| 甘泉县| 双峰县| 屯留县| 昌乐县| 隆安县| 盖州市| 嫩江县| 正蓝旗| 运城市| 南皮县| 闵行区| 瑞金市| 胶南市| 开原市| 秦皇岛市| 巴彦淖尔市| 清镇市| 夏邑县| 同德县| 广饶县| 娱乐| 科尔| 雅江县| 沂南县| 常山县| 曲麻莱县| 南郑县|