摘要:在寫時(shí)遇到比較一個(gè)對(duì)象的字符串和一個(gè)字符串是否相等的問題,遇到了一些坑。在這段代碼時(shí)和的值都是但是他們用比較時(shí)確實(shí)不相等的。
在寫java時(shí)遇到比較一個(gè)對(duì)象的字符串和一個(gè)字符串是否相等的問題,遇到了一些坑。
在這段代碼時(shí),name1和name2的值都是"name",但是他們用==比較時(shí)確實(shí)不相等的。
首先,在java中String是一個(gè)對(duì)象,在用==比較兩個(gè)String對(duì)象的引用時(shí),是比較兩個(gè)對(duì)象引用的值是否相等,就是比較是否指向同一個(gè)對(duì)象。name1在堆上創(chuàng)建了一個(gè)對(duì)象,name2也在堆上創(chuàng)建了一個(gè)對(duì)象,雖然對(duì)象的值都相同,但是內(nèi)存地址卻是不一樣,是兩個(gè)不同的對(duì)象,name1指向的對(duì)象和name2指向的對(duì)象不同,所以==判斷返回的時(shí)false;
但是這個(gè)判斷式卻是true,因?yàn)閖ava在第一次遇到“name”這個(gè)字符串時(shí),回去緩存區(qū)查看有沒有“name”這個(gè)字符串常量,沒有就創(chuàng)建,再把這個(gè)對(duì)象賦值給name1,當(dāng)name2 = "name",時(shí),緩存區(qū)已經(jīng)有"name"這個(gè)字符串常量了,所以直接把字符串常量賦值給name2,因此他們的引用對(duì)象是相同的,所以返回true.
在這個(gè)表達(dá)式中,雖然name1使用"name"字符串對(duì)象來創(chuàng)建的,但他是一個(gè)新的對(duì)象,只是他的值和"name"對(duì)象的值是相同的,所以name1和name2是不同的對(duì)象,所以返回false.
如果要比較兩個(gè)對(duì)象的值是否相等,應(yīng)該使用equals
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77231.html
摘要:相等判斷符介紹相等判斷符用于比較基本數(shù)據(jù)類型和引用類型數(shù)據(jù)當(dāng)比較基本數(shù)據(jù)類型的時(shí)候比較的是數(shù)值當(dāng)比較引用類型數(shù)據(jù)時(shí)比較的是引用指針判斷基本類型是否相等首先基本數(shù)據(jù)類型指的是中的八大數(shù)據(jù)類型這八大基本數(shù)據(jù)類型有個(gè)共同的特點(diǎn)是它們?cè)趦?nèi)存中是有具相等判斷符==介紹 ? ==相等判斷符用于比較基本數(shù)據(jù)類型和引用類型數(shù)據(jù). 當(dāng)比較基本數(shù)據(jù)類型的時(shí)候比較的是數(shù)值, 當(dāng)比較引用類型數(shù)據(jù)時(shí)比較的是引用(指...
摘要:相等判斷符介紹相等判斷符用于比較基本數(shù)據(jù)類型和引用類型數(shù)據(jù)當(dāng)比較基本數(shù)據(jù)類型的時(shí)候比較的是數(shù)值當(dāng)比較引用類型數(shù)據(jù)時(shí)比較的是引用指針判斷基本類型是否相等首先基本數(shù)據(jù)類型指的是中的八大數(shù)據(jù)類型這八大基本數(shù)據(jù)類型有個(gè)共同的特點(diǎn)是它們?cè)趦?nèi)存中是有具相等判斷符==介紹 ==相等判斷符用于比較基本數(shù)據(jù)類型和引用類型數(shù)據(jù). 當(dāng)比較基本數(shù)據(jù)類型的時(shí)候比較的是數(shù)值, 當(dāng)比較引用類型數(shù)據(jù)時(shí)比較的是引用(指針...
摘要:相等判斷符介紹相等判斷符用于比較基本數(shù)據(jù)類型和引用類型數(shù)據(jù)當(dāng)比較基本數(shù)據(jù)類型的時(shí)候比較的是數(shù)值當(dāng)比較引用類型數(shù)據(jù)時(shí)比較的是引用指針判斷基本類型是否相等首先基本數(shù)據(jù)類型指的是中的八大數(shù)據(jù)類型這八大基本數(shù)據(jù)類型有個(gè)共同的特點(diǎn)是它們?cè)趦?nèi)存中是有具相等判斷符==介紹 ==相等判斷符用于比較基本數(shù)據(jù)類型和引用類型數(shù)據(jù). 當(dāng)比較基本數(shù)據(jù)類型的時(shí)候比較的是數(shù)值, 當(dāng)比較引用類型數(shù)據(jù)時(shí)比較的是引用(指針...
摘要:從行,可以看出字符串的存儲(chǔ)結(jié)構(gòu)是字符數(shù)組。如果不相等,則返回兩字符的編碼值的差值第行當(dāng)前字符串和另一個(gè)字符串,依次字符比較。如果均相等,則返回兩個(gè)字符串長度的差值所以要排序,肯定先有比較能力,即實(shí)現(xiàn)接口。摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號(hào):泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝!這是泥瓦匠的第103篇原創(chuàng)《程序兵法:Java Str...
摘要:并把最終的隨機(jī)數(shù)輸出到控制臺(tái)。方法,在集合中如何存儲(chǔ)元素取決于方法的返回值返回,集合中只有一個(gè)元素。創(chuàng)建集合對(duì)象,傳入比較器。 1_HashSet存儲(chǔ)字符串并遍歷 A:Set集合概述及特點(diǎn) 通過API查看即可 B:案例演示 HashSet存儲(chǔ)字符串并遍歷 import java.util.HashSet; public class Demo1_HashSet { p...
摘要:中,任何未處理的受檢查異常強(qiáng)制在子句中聲明。運(yùn)行時(shí)多態(tài)是面向?qū)ο笞罹璧臇|西,要實(shí)現(xiàn)運(yùn)行時(shí)多態(tài)需要方法重寫子類繼承父類并重寫父類中已 1、簡述Java程序編譯和運(yùn)行的過程:答:① Java編譯程序?qū)ava源程序翻譯為JVM可執(zhí)行代碼--字節(jié)碼,創(chuàng)建完源文件之后,程序會(huì)先被編譯成 .class 文件。② 在編譯好的java程序得到.class文件后,使用命令java 運(yùn)行這個(gè) .c...
閱讀 2119·2023-04-25 17:23
閱讀 2927·2021-11-17 09:33
閱讀 2526·2021-08-21 14:09
閱讀 3623·2019-08-30 15:56
閱讀 2616·2019-08-30 15:54
閱讀 1635·2019-08-30 15:53
閱讀 2141·2019-08-29 13:53
閱讀 1155·2019-08-29 12:31