重新認識java中的“=”(更新)

在java中擦盾,=號表示賦值的意思。最近在學習AQS時系忙,碰到了下面這個方法诵盼。在分析代碼的過程中,有幾個if語句以及對象間的互相賦值银还,看的有點凌亂拦耐。索性先來了解一下 = 號到底怎么用?

AQS--》addConditionWaiter

1见剩、首先對于基本類型來說杀糯,比如int,當定義一個int a = 1時苍苞,這個時候1會放進常量池固翰,當又有a=2時狼纬,常量池中會有一個2,。所以基本類型比較的時候都是比較值骂际,那么基本類型的賦值就很好理解了疗琉,當有 int b = a,那么b的值也是a的值歉铝,這個時候b=3時盈简,a和b就不再相等,常量池中有一個3太示。

2柠贤、基本類型的包裝類型,比如 Integer? h = 10000,那么內(nèi)存中會開辟一塊空間存放10000类缤,當這個時候修改h = 20000時臼勉,內(nèi)存中會重新開辟出一塊空間存放20000。因為定義integer時餐弱,執(zhí)行的是Integer.valueOf(i),而Integer.valueOf()如果不在integerCache里的話宴霸,執(zhí)行的是new Integer(i)。當有 Integer j = h膏蚓,此時j和h指向的是同一塊內(nèi)存瓢谢。當j或者h的值修改了,這倆個對象也不再相等驮瞧,這也是為什么當倆個Integer對象的值在-128到127之間用==比較為true恩闻,而不在這個區(qū)間的值用==比較為false。因為不在區(qū)間內(nèi)的倆個Integer是倆個不同的對象剧董,修改了值就是修改對象整體幢尚。當修改了對象整體就相當于開辟了新的對象,內(nèi)存中的地址就改變了翅楼。所以用==號不再相等了尉剩。


3、接下來分析自定義類中的=毅臊,假設有一個類如下理茎,


首先創(chuàng)建一個實例:ComputerTest c1 = new ComputerTest("i7", "500", 10000);

再有一個實例 ComputerTest c2 = c1,此時c2和c1指向的是同一塊地址管嬉,當修改c1或者c2的某一個值時皂林,倆個實例的值會同時修改,這時候c1和c2指向的仍然是同一塊內(nèi)存础倍。而當這個時候有一個ComputerTest c3 = new ComputerTest("i5", "1G", 20000)胎挎。如果有 c2 = c3沟启,這個時候發(fā)生了什么忆家?c2和c3指向了同一塊內(nèi)存(這里相當于將c2的原來指向c1的指針指向了c3,雖然java中沒有指針的概念德迹。java的reference應該類似于指針的概念)芽卿。當又有c3 = c1時肌毅,又將c1和c3指向了同一塊內(nèi)存芽腾。又有c1 = c2,c2和c1指向了同一塊內(nèi)存页衙。這個時候 摊滔,c3就變成了("i7", "500", 10000),這個時候c1 和 c2都指向了ComputerTest("i5", "1G", 20000)店乐,在現(xiàn)實中你可能不會這么用,這里只是為了舉例說明這個問題眨八。這其實也驗證了java中的復制都是淺度復制腺兴,復制過后大家指的都是同一個東西。

這里補充:當ComputerTest c2 = c1時廉侧,c2和c1指向同一塊內(nèi)存页响,置一塊內(nèi)存是c1指向的內(nèi)存。c2 = c3段誊,c2指向了c3所指向的內(nèi)存闰蚕。所以在理解等號時,可以理解為將左邊的指向了右邊的所指向的內(nèi)存连舍。

圖片發(fā)自簡書App


再回頭去分析開頭的源碼就簡單很多啦没陡!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市索赏,隨后出現(xiàn)的幾起案子盼玄,更是在濱河造成了極大的恐慌,老刑警劉巖潜腻,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埃儿,死亡現(xiàn)場離奇詭異,居然都是意外死亡融涣,警方通過查閱死者的電腦和手機蝌箍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門青灼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妓盲,你說我怎么就攤上這事杂拨。” “怎么了悯衬?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵弹沽,是天一觀的道長。 經(jīng)常有香客問我筋粗,道長策橘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任娜亿,我火速辦了婚禮丽已,結果婚禮上,老公的妹妹穿的比我還像新娘买决。我一直安慰自己沛婴,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布督赤。 她就那樣靜靜地躺著嘁灯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪躲舌。 梳的紋絲不亂的頭發(fā)上丑婿,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音没卸,去河邊找鬼羹奉。 笑死,一個胖子當著我的面吹牛约计,可吹牛的內(nèi)容都是我干的尘奏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼病蛉,長吁一口氣:“原來是場噩夢啊……” “哼炫加!你這毒婦竟也來了?” 一聲冷哼從身側響起铺然,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤俗孝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后魄健,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赋铝,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年沽瘦,在試婚紗的時候發(fā)現(xiàn)自己被綠了革骨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片农尖。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖良哲,靈堂內(nèi)的尸體忽然破棺而出盛卡,到底是詐尸還是另有隱情,我是刑警寧澤筑凫,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布滑沧,位于F島的核電站,受9級特大地震影響巍实,放射性物質發(fā)生泄漏滓技。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一棚潦、第九天 我趴在偏房一處隱蔽的房頂上張望令漂。 院中可真熱鬧,春花似錦丸边、人聲如沸叠必。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽挠唆。三九已至处窥,卻和暖如春嘱吗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滔驾。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工谒麦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哆致。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓绕德,卻偏偏與公主長得像,于是被迫代替她去往敵國和親摊阀。 傳聞我的和親對象是個殘疾皇子耻蛇,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

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

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法胞此,內(nèi)部類的語法臣咖,繼承相關的語法,異常的語法漱牵,線程的語...
    子非魚_t_閱讀 31,581評論 18 399
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,125評論 29 470
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等夺蛇,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,485評論 0 3
  • 這篇文章是我之前翻閱了不少的書籍以及從網(wǎng)絡上收集的一些資料的整理,因此不免有一些不準確的地方酣胀,同時不同JDK版本的...
    高廣超閱讀 15,545評論 3 83
  • 從三月份找實習到現(xiàn)在刁赦,面了一些公司娶聘,掛了不少,但最終還是拿到小米甚脉、百度丸升、阿里、京東宦焦、新浪发钝、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,184評論 11 349