String類的基本概念

1. String 類的兩種實(shí)例化方式

  • 直接賦值:String 變量 = "字符串" ,在構(gòu)造里面依然要接收一個(gè)本類對(duì)象
  • 構(gòu)造方法:public String(String str);
public class StringDemo {
    public static void main(String[] args) {
    String str_1 = "Hello World"; //直接賦值
    String str_2 = new String("Hello world"); //構(gòu)造方法賦
        System.out.println(str_1 +" " +str_2 );
    }
}

2. 字符串的比較

如果判斷兩個(gè)int型整數(shù)是否相等一睁,可以直接用"==" 比較即可
在String上也可以使用"=="比較:

范例:在String對(duì)象上使用"=="比較

public class StringDemo {
    public static void main(String[] args) {
        String str_1 = "Hello World"; //直接賦值
        String str_2 = new String("Hello world"); //構(gòu)造方法賦
        String str_3 = str_2 ;
        System.out.println(str_1 == str_2); //false
        System.out.println(str_1 == str_3); //false
        System.out.println(str_2 == str_3); //true
    }
}

以上三個(gè)String對(duì)象內(nèi)容完全相等撇眯,但是結(jié)果卻不一樣聋亡;下面通過(guò)內(nèi)存圖分析:


String用"=="比較時(shí),內(nèi)存分析

通過(guò)以上的分析結(jié)果可以發(fā)現(xiàn),"=="比較的不是字符串對(duì)象的內(nèi)容究珊,而是它們所在內(nèi)存地址的數(shù)值瓤摧。
如果竿裂,要去比較字符串的內(nèi)容,可以使用String類里面的方法:

  • 比較內(nèi)容:public boolean equals(String str);

范例:實(shí)現(xiàn)內(nèi)容的比較

public class StringDemo {
    public static void main(String[] args) {
        String str_1 = "Hello World"; //直接賦值
        String str_2 = new String("Hello World"); //構(gòu)造方法賦
        String str_3 = str_2 ;
        System.out.println(str_1.equals(str_2)); //true
        System.out.println(str_1.equals(str_3)); //true
        System.out.println(str_2.equals(str_3)); //true
    }
}

問(wèn)題: "==" 與 "equals()"的區(qū)別

  • "==":是Java提供的關(guān)系運(yùn)算符照弥,主要的功能是進(jìn)行數(shù)值是否相等的判斷腻异,如果在String對(duì)象上,則表示的是內(nèi)存的地址數(shù)值的比較这揣;
  • "equals()": 是由String提供的一個(gè)方法悔常,此方法專門進(jìn)行字符串的內(nèi)容比較。

3. 字符串常量就是String的匿名對(duì)象

Java自己創(chuàng)造了字符串给赞,但是這個(gè)字符串不屬于基本數(shù)據(jù)類型机打,它是將字符串作為了String類的匿名對(duì)象的形式存在
范例:觀察字符串是匿名對(duì)象的驗(yàn)證

public class StringDemo{
  public static void main(String[] args){
    String str = "Hello";
    System.out.println("Hello".equals(str));
  }
}

直接賦值實(shí)際上,就是將一個(gè)匿名對(duì)象設(shè)置了一個(gè)名字片迅,但區(qū)別是残邀,String類的匿名對(duì)象是由系統(tǒng)自動(dòng)生成的,不再是由用戶自己直接創(chuàng)建。

另:為了避免空指針異常的出現(xiàn)芥挣,可以將字符串寫在前面調(diào)用

public class StringDemo {
    public static void main(String[] args) {
        String input = null ; //假設(shè)這個(gè)內(nèi)容由用戶輸入
        //如果用戶輸入的內(nèi)容是hello驱闷,認(rèn)為滿足一個(gè)條件
        if(input.equals("hello")){
            System.out.println("Hello world!!!");
        }
    }
}
******************************************************
Exception in thread "main" java.lang.NullPointerException
    at String.StringDemo.main(StringDemo.java:7)

Process finished with exit code 1

由于用戶的輸入為空,input調(diào)用了equals()方法空免,所以出現(xiàn)了NullPointerException 異常空另;可以換個(gè)方式:

public class StringDemo {
    public static void main(String[] args) {
        String input = null ; //假設(shè)這個(gè)內(nèi)容由用戶輸入
        //如果用戶輸入的內(nèi)容是hello,認(rèn)為滿足一個(gè)條件
        if("hello".equals(input)){
            System.out.println("Hello world!!!");
        }
    }
}
**************************************************

Process finished with exit code 0

如果將操作倒過(guò)來(lái)鼓蜒,永遠(yuǎn)不會(huì)出現(xiàn)空指針異常痹换。在以后的開發(fā)中,如果要判斷輸入的內(nèi)容是否是某一字符串都弹,將字符串寫在前面娇豫。

4. 總結(jié)

String類的特點(diǎn):

  • String類對(duì)象的相等判斷使用equals()方法完成,"=="實(shí)現(xiàn)的是地址數(shù)值的比較畅厢;
  • 字符串內(nèi)容一旦聲明則不可改變冯痢,String類對(duì)象內(nèi)容的改變是依靠引用關(guān)系的變更實(shí)現(xiàn)的;
  • String類由兩種實(shí)例化方式框杜,使用直接賦值可以不產(chǎn)生垃圾空間浦楣,并且可以自動(dòng)入池,不要使用構(gòu)造方法咪辱。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末振劳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子油狂,更是在濱河造成了極大的恐慌历恐,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件专筷,死亡現(xiàn)場(chǎng)離奇詭異弱贼,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)磷蛹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門吮旅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人味咳,你說(shuō)我怎么就攤上這事庇勃。” “怎么了槽驶?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵匪凉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我捺檬,道長(zhǎng),這世上最難降的妖魔是什么贸铜? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任堡纬,我火速辦了婚禮聂受,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烤镐。我一直安慰自己蛋济,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布炮叶。 她就那樣靜靜地躺著碗旅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镜悉。 梳的紋絲不亂的頭發(fā)上祟辟,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音侣肄,去河邊找鬼旧困。 笑死,一個(gè)胖子當(dāng)著我的面吹牛稼锅,可吹牛的內(nèi)容都是我干的吼具。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼矩距,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拗盒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起锥债,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤陡蝇,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后赞弥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毅整,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年绽左,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悼嫉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拼窥,死狀恐怖戏蔑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲁纠,我是刑警寧澤总棵,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站改含,受9級(jí)特大地震影響情龄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一骤视、第九天 我趴在偏房一處隱蔽的房頂上張望鞍爱。 院中可真熱鬧,春花似錦专酗、人聲如沸睹逃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)沉填。三九已至,卻和暖如春佑笋,著一層夾襖步出監(jiān)牢的瞬間翼闹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工允青, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留橄碾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓颠锉,卻偏偏與公主長(zhǎng)得像法牲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子琼掠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法拒垃,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法瓷蛙,繼承相關(guān)的語(yǔ)法悼瓮,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,645評(píng)論 18 399
  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí)冠桃,c語(yǔ)言命贴,java語(yǔ)言,單片機(jī)的匯編語(yǔ)言等食听;大學(xué)畢...
    oceanfive閱讀 3,088評(píng)論 0 7
  • 一胸蛛、Java 簡(jiǎn)介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚_t_閱讀 4,195評(píng)論 1 44
  • 在這篇文章中葬项,我關(guān)注的是 Objective-C 中的一個(gè)陌生的概念—— meta-class。在 Objecti...
    GentlePrince閱讀 779評(píng)論 0 1
  • 杭州銀行成立于1996年9月迹蛤,總部位于杭州民珍。目前襟士,全行擁有189家分支機(jī)構(gòu),網(wǎng)點(diǎn)覆蓋長(zhǎng)三角嚷量、珠三角敌蜂、環(huán)渤海灣等...
    HZbank閱讀 2,257評(píng)論 0 0