第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

這種情況下,String類型之間==不是Ttue,而是False?

這種情況下,String類型之間==不是Ttue,而是False?

qq_控心_0 2017-08-24 22:46:18
//求解,那個(gè)false是為什么,難道不是比較的值嗎?public class Tese { public static void main(String[] args) { boolean a=function_1(); boolean b=function_2(); boolean c=function_3(); boolean d=function_4(); //結(jié)果都是true System.out.println(a); System.out.println(b); //反轉(zhuǎn)后結(jié)果應(yīng)該是一樣的,然后用==和equals得出兩種結(jié)果,一個(gè)false ?一個(gè)true System.out.println(c); System.out.println(d); } public static boolean function_1(){ String a="a"; String b="a"; return a==b; } public static boolean function_2(){ String a="a"; String b="a"; return a.equals(b); } public static boolean function_3(){ String s="123321"; StringBuilder sb=new StringBuilder(s); String str=sb.reverse().toString(); return s==str; } public static boolean function_4(){ String s="123321"; StringBuilder sb=new StringBuilder(s); String str=sb.reverse().toString(); return s.equals(str); }}
查看完整描述

1 回答

已采納
?
天將明96

TA貢獻(xiàn)15條經(jīng)驗(yàn) 獲得超13個(gè)贊

首先說一下"=="和"equal"的區(qū)別

  • 對于基本類型的變量。"=="和"equal"的區(qū)別

    "=="對于基本數(shù)據(jù)類型,判斷兩個(gè)變量的值是否相等。"equal"不能用于基本數(shù)據(jù)類型。只能用于類變量。對于基本數(shù)據(jù)類型要用其包裝類。

  • 對于對象變量,"=="和"equal"的區(qū)別
    因?yàn)閷ο笞兞康拇鎯Φ氖菍ο笤趦?nèi)存中的路徑,即內(nèi)存地址。所以用"=="比較時(shí),即使對象的值相等,但是他們的內(nèi)存地址不同,所以"=="的結(jié)果為false。故"=="用于比較兩個(gè)變量的值是否相等,而不是變量引用的對象是否相等。"equal"用于比較兩個(gè)對象是否相同。

  • "=="比較的是值【變量(棧)內(nèi)存中存放的對象的(堆)內(nèi)存地址】?
    "equal"用于比較兩個(gè)對象的值是否相同【不是比地址】

綜上所述:

String?s="123321";
StringBuilder?sb=new?StringBuilder(s);
String?str=sb.reverse().toString();

s和str有相同的值,但是它們的地址是不同的,所以s==str為false,s.equals(str)為true。

那你可能會問

String?a="a";
String?b="a";

這里的a和b為什么地址也一樣呢?這是因?yàn)槌A砍氐木壒?,編譯期能確定相同的字符串才會指向常量池中同一個(gè)字符串。通常由常量來初始化的字符串在編譯期就能確定,所以它們的地址也一樣。而function3中的str,在編譯期是不能確定它的值,所以地址與s不一樣。

至于什么是常量池,你可以在網(wǎng)上看別人的博客,會比我這里一兩句話要好理解得多。

如果滿足要求,望采納!<(?????)>

查看完整回答
1 反對 回復(fù) 2017-08-25
  • 那一年故鄉(xiāng)
    那一年故鄉(xiāng)
    在Object中equals方法是用來比較地址的,String類由于改寫了equals方法所以是比較內(nèi)容了,equals方法默認(rèn)情況下是比較地址的(當(dāng)然只能用于非基本數(shù)據(jù)類型)
  • 天將明96
    天將明96
    好吧,謝謝啦!
  • qq_控心_0
    qq_控心_0
    感謝你的回答!是不是可以這樣理解,引用類型==是比較對象的內(nèi)存地址,而前面的兩個(gè)因?yàn)橘x的值是相同的,所以第二個(gè)變量直接指向了第一個(gè)的內(nèi)存地址,所以==也就返回了true,而后面兩個(gè)內(nèi)存地址根本就不一樣,也就回返回false咯。
點(diǎn)擊展開后面2
  • 1 回答
  • 1 關(guān)注
  • 1356 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號