為什麼不能比較兩個字串?

發布 科技 2024-02-08
16個回答
  1. 匿名使用者2024-02-05

    string s1 = "a";

    string s2 = s1;

    在這種情況下,s1 和 s2 指向相同的記憶體位址,因此 s1==s2 返回 true。

    對於:字串 s1 ="a";

    string s2 = "a";

    在這種情況下,s1 和 s2 指向不同的記憶體位址,儘管儲存在兩個位址中的值都是“a”,但 s1==s2 返回 false。

    如果要比較 S1 和 S2 各自指向的位址中的值是否相同,字串類會覆蓋物件類的 equals() 方法,該方法可以進行此比較,例如:

    string s1 = "a";

    string s2 = "a";

    返回 true。

    但是,如果從資料庫中檢索到它,則應首先確定它是否為 null,以避免 null 指標錯誤。

  2. 匿名使用者2024-02-04

    從庫表中提取的字串長度是固定的,所以最後會有一些空格,只要去掉從庫中提取的字串末尾的空格,具體就不用說了!

  3. 匿名使用者2024-02-03

    eques 用於比較字串的值。 ,如果它是基型別,如果它是物件型別,則它是記憶體位址。

  4. 匿名使用者2024-02-02

    == 是看兩個字串的記憶體位址是否相同,equals 是看它們的字元是否相同。

  5. 匿名使用者2024-02-01

    1)equals是object的方法,所有類都直接或間接地繼承了object,那麼它們也繼承了equals。

    物件。 事實上,與 == 沒有區別。

    public boolean equals(object obj),但字串重寫等於

    public boolean equals(object anobject)

    if (anobject instanceof string)return true;}}

    return false;

    首先判斷位址是否不同,然後確定是否為字串型別,然後將其轉換為 char 陣列,然後進行比較。

    所有類都有 equals 方法,沒有覆蓋,預設是比較位址。

    建議多研究原始碼和原理。

  6. 匿名使用者2024-01-31

    當乙個類與 == 進行比較時,只有當兩個類相同(包括相同的記憶體位址、相同的值等)時,它才會返回 true。

    在您的示例中,x 與"abc"雖然兩個字串的值相同,但它們在記憶體中是兩個獨立的字串,所以如果你使用 == 將返回 false,並且應該將類的值與其相等值進行比較

  7. 匿名使用者2024-01-30

    像 ==, != 這些跑步者可以是白。

    du 用於基本型別,非基本 zhi dao 型別(如 String)不能直接與此比較進行比較。

    stringtype:如果要確定兩個字串是相等還是不相等,請使用 equals()。

    if(!密碼不等於 d

  8. 匿名使用者2024-01-29

    看起來像這樣,string s2=new string("hello");這樣,新物件的記憶體位址就會不同,就會返回false

  9. 匿名使用者2024-01-28

    如果 a 和 b 的指標只想相同,則返回 true,否則返回 false

  10. 匿名使用者2024-01-27

    直接比較。

    例如,字串 a、b、c;

    c=a+b;連線。

    if(a>b) cout<<"a>b";

  11. 匿名使用者2024-01-26

    一旦它是新的,就會建立乙個新的字串物件。

    string s2="abc";

    string s3="abc";

    S2 和 S3 指的是乙個字串,因為 S3 會在字串池中檢視是否有“abc”。"直接引用到 S3。

    就這麼簡單。

  12. 匿名使用者2024-01-25

    記憶體空間中有三個“abcs”,s1指向乙個,s4指向乙個,s2和s3指向同乙個物件,也就是說,s2和s3指同乙個物件,“就是確定它們是否指向同乙個物件,或者確定它們是否指向同乙個物件。

  13. 匿名使用者2024-01-24

    string s2 = "abc"表示 s2 對應乙個“字串常量”,該常量是在編譯時確定的,因此只要它對應相同的字串常量,它就等於變數,這就是你的 s2==s3 為 true 的原因。

    string s1=new string("abc"這裡用 new string() 建立的字串不是常量,不能在編譯時確定,所以 new string() 建立的字串不會放入常量池中,它們有自己的位址空間。

    有關更詳細的解釋,請參閱。

  14. 匿名使用者2024-01-23

    * "abc"---儲存位置稱為常量字串池,即共享字串;

    new string("abc"物件---儲存在堆中;

    S1、S2、S3、S4 ---堆疊記憶體中引用;

    建立 String 類來檢查字串"abc"池中是否已經存在,如果存在,則會共享。

    string s1=new string("abc");採取了以下措施:

    1 定義對物件 New String("abc");

    2 和物件 new string("abc"),以及"abc",也可以說是指向;

    string s2="abc";

    定義指向常量字串池的 S2 引用"abc";[分享現有內容]。

    string s3="abc";

    定義指向常量字串池的 S3 引用"abc";[分享現有內容]。

    string s4=new string("abc");

    1 定義指向物件 new string("abc");這將開啟堆記憶體中的另乙個物件,該物件也位於吸氣常量池中"abc";但是,每個物件都是不同的,它們的堆記憶體位址可能不同。

    需要明確的是,== 比較記憶體位址,堆疊記憶體中引用的內容是它感興趣的物件的堆記憶體位址,即 s1,2,3,4 [這樣你就可以理解它了]。

    以這種方式; s2==s3 不用說; s1 和 s4 的記憶體位址也不同;

    瞧瞧!

  15. 匿名使用者2024-01-22

    C語言沒有字串型別,只有乙個字串,你可以使用 strcmp 將字串與 C++ STL 類進行比較。

    如果是這種情況,可以直接與< >==進行比較。

    兩種比較的規則都是字典順序。

  16. 匿名使用者2024-01-21

    對於引用型別,== 確定是否引用同一例項。

    若要確定兩個例項的內容是否相同,請使用自定義等於方法。

相關回答
6個回答2024-02-08

這首小詩簡明扼要,意味深長,文體鮮明。 詩人巧妙地處理了敘事與抒情之間的關係。 敘事的前三句對環境進行描寫,運用層層深度、反覆的渲染手法營造氛圍,為第四次抒情鋪平道路,突出抒情句的地位,使抒情句顯得格外警惕有力。 >>>More

8個回答2024-02-08

十二生肖都是騙人的,只是半信半疑。

9個回答2024-02-08

其實我覺得你應該知道B是不是真心的,現在的男生們玩過很多。 但當你遇到乙個你真正喜歡的女孩時,你仍然會全心全意地對待她。 如果B是真誠的,我想你應該能夠感受到它。 >>>More

4個回答2024-02-08

for(i=3;i<=ihuffsize[n-1];i++)uint_8s[0]=0;

uint_8s[1]=uint_8[p]; >>>More

5個回答2024-02-08

以下是**無限制的自愛。

孔子向東走,看到兩個孩子在爭吵。 問為什麼。 >>>More