亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java里為什么數字可以用比較運算符==比較,而字符串不可以

java里為什么數字可以用比較運算符==比較,而字符串不可以

哈尼露易絲 2016-06-13 12:57:00
java里為什么數字可以用比較運算符==比較,而字符串不可以
查看完整描述

2 回答

已采納
?
慕萊塢9220042

TA貢獻377條經驗 獲得超508個贊

你好:

  1. 原始類型(int, long, float, double, short, char等)可又直接使用==比較:
    如:
    int a = 1, b = 1;
    a == b結果為true

  2. 引用類型(也就是對象)其實也可又用==比較,不過這里的比較不是比較內容了,而是比較對象在內存中的地址,也就相當于C/C++中的指針。所以
    String s = "abc", s1 = s;
    這時候 s == s1結果為true,因為它們指向內存中的同一個地址,而
    String s = "abc";
    String s1 = "abc";
    這兩條語句看似都把"abc"同時賦給了s和s1,但實際上在內存中是分配了兩塊內存,一塊存放"abc",另一塊存放另一個"abc",s和s1的地址不同,所以
    s == s1結果是false
    那么如何比較它們的內容而不是比較地址呢,java的基類Object中有equals方法,用于比較兩個對象的內容是否相同,只要子類實現了該方法,就可以使用此方法進行比較,String這么強大的類當然實現了該方法,所以比較兩個字符串是否相同應該使用下面的方法:
    s.equals(s1)或者s1.equals(s),這兩種方法的結果都是true

    望采納!

查看完整回答
3 反對 回復 2016-06-13
?
冰山點水

TA貢獻109條經驗 獲得超149個贊

簡單的講,java中的8種基本數據類型都是在棧內存中分配空間,==實際上就是比較他們的值是否相等。而除開這8種基本數據類型,其他的都屬于引用類型,創建的對象均是在堆內存中分配空間,這時候==實際上就是比較他們的內存地址是否相同?;緮祿愋捅戎担脭祿愋捅鹊刂贰,F在你就這么簡單的了解就行,當你學到后面便會深入了解這些東西的!

查看完整回答
3 反對 回復 2016-06-13
  • 2 回答
  • 0 關注
  • 1959 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號