国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Object.equals 和 String.equals的區(qū)別

這篇具有很好參考價值的文章主要介紹了Object.equals 和 String.equals的區(qū)別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一.? 源碼展示:

1. Object.equals:  

  ①引用類型地址值比較,直接返回結(jié)果:true || false

public class Object { 
   public boolean equals(Object obj) {
        return (this == obj);
    }
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-534779.html

2. String.equals:  

 ?、?判斷地址值是否相等,若相等 返回 true,若不等則進入下列判斷 ;

 ?、?判斷參數(shù)是否為String類型,若不是 返回false,若是則進入下列判斷;

 ?、?判斷字符串長度是否相等,若不等 返回false,若相等則進入下列判斷 ;

  ④ 判斷索引位置的字符是否相同,若不等 返回false,若相等,則返回true;

  • 字符串的內(nèi)容相等指的是字符序列完全相同,包括字符的順序和大小寫敏感。
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {

  private final char value[];
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; } }

?

二. 二者區(qū)別

   1. 作用域:

     Object類是Java中所有類的基類,因此每個對象都繼承了equals()方法,自定義實例對象默認(rèn)使用Object.equals()比較值是否相等,且可以通過重寫equals() 實現(xiàn)自定義比較。

     String類是Java中的一個內(nèi)置類,它代表字符串對象,String重寫了Object的equals()方法,僅用于做String字符串的值比較。

   2.? 比較方式:

     Object.equals()?比較的是對象的引用是否相同。

     String.equals() 比較的是字符串的內(nèi)容是否相同。

?

三.? 代碼層面展示

public static void main(String[] args) {
        Object obj1 = new Object();
        Object obj2 = new Object();
        System.out.println("Object地址值比較:" + obj1.equals(obj2));  // 輸出結(jié)果: false

        String str1 = "Hello";
        String str2 = "hello";
        String str3 = " hello ";
        String str4 = new String("Hello");
        System.out.println("Hello::hello比較(區(qū)分大小寫):" + str1.equals(str2)); // 輸出結(jié)果: false
        System.out.println("Hello:: hello (前后存在空格):" + str1.equals(str3)); //  輸出結(jié)果: false
        System.out.println("比較常量池(使用new操作符):" + str1.equals(str4));    //  輸出結(jié)果: true

    }

打印輸出:
  Object地址值比較:false
  Hello::hello比較(區(qū)分大小寫):false
  Hello:: hello (前后存在空格):false
  比較常量池(使用new操作符):true

?

?四. 拓展

  String常量池:

    在Java中,String常量池是一種特殊的內(nèi)存區(qū)域,用于存儲字符串常量。它是為了節(jié)省內(nèi)存空間和提高性能而設(shè)計的。

    當(dāng)我們使用字符串字面值創(chuàng)建一個字符串對象時,Java編譯器會首先檢查字符串常量池中是否已經(jīng)存在相同內(nèi)容的字符串。如果存在,則返回常量池中的引用;如果不存在,則在常量池中創(chuàng)建一個新的字符串對象,并返回該引用。

    由于String類是不可變的,也就是說一旦創(chuàng)建了字符串對象,它的內(nèi)容就不能被改變。因此,多個字符串對象可以共享同一個字符串常量池中的內(nèi)容,這樣可以減少內(nèi)存的占用。

    需要注意的是,通過調(diào)用String的intern()方法可以將一個字符串對象加入到常量池中,并返回常量池中的引用。這在某些場景下可能會有用,但要謹(jǐn)慎使用以避免不必要的內(nèi)存開銷。

    總之,String常量池是Java中用于存儲字符串常量的特殊內(nèi)存區(qū)域,可以提高內(nèi)存利用率和程序性能。

   

?

到了這里,關(guān)于Object.equals 和 String.equals的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • java八股文面試[java基礎(chǔ)]—— hashCode 與 equals 區(qū)別 == 與 equals的區(qū)別

    java八股文面試[java基礎(chǔ)]—— hashCode 與 equals 區(qū)別 == 與 equals的區(qū)別

    兩個對象的hashCode()相同時,equals()相等嗎?_兩個對象的hashcode一樣,equal一樣么_不想當(dāng)個程序員的博客-CSDN博客 equals():比較的是非基本類型的數(shù)據(jù)的引用地址(即內(nèi)存地址)是否相同,但是對于重寫equals方法的類型,比較的是對象內(nèi)容是否相同。 hashCode():計算對象實例的哈

    2024年02月12日
    瀏覽(27)
  • == 與 equals 的區(qū)別?

    一. 介紹: Java中的 \\\"==\\\"? 是一個運算符,是用于比較兩個對象地址值或基本數(shù)據(jù)類型之間的值是否相等。它的來源可以追溯到C語言,以及受C語言影響的許多其他編程語言。 Java中的equals() 是一個方法,可重寫該方法用于比較兩個對象屬性內(nèi)容是否相等的方法。該方法繼承自

    2024年02月13日
    瀏覽(18)
  • 【JAVA基礎(chǔ)】== 與 equals區(qū)別

    它的作用是判斷兩個對象的地址是不是相等。即,判斷兩個對象是不是同一個對象(基本數(shù)據(jù)類型 比較的是值,引用數(shù)據(jù)類型 比較的是內(nèi)存地址)。 基本數(shù)據(jù)類型 :byte,short,char,int,long,float,double,boolean。他們之間的比較,應(yīng)用雙等號(==),比較的是他們的值。 引用數(shù)據(jù)類型 :

    2024年02月11日
    瀏覽(27)
  • equals與Hashcde的區(qū)別

    equals與Hashcde的區(qū)別

    equals與hashcode這兩個方法都是從Object類中繼承過來的。 hashCode():計算出對象實例的哈希地址,并且返回該地址,稱哈希函數(shù),又稱散列表。 equals():反映的是對象的內(nèi)存地址或者對象的內(nèi)容是否相等。 Objeact類實現(xiàn)equals()是對兩個對象的地址進行比較(即比較是否相同,也就

    2024年02月16日
    瀏覽(19)
  • LeetCode --- 1790. Check if One String Swap Can Make Strings Equal 解題報告

    You are given two strings? s1 ?and? s2 ?of equal length. A? string swap ?is an operation where you choose two indices in a string (not necessarily different) and swap the characters at these indices. Return? true ? if it is possible to make both strings equal by performing? at most one string swap? on? exactly one ?of the strings.? Otherwise, re

    2024年02月10日
    瀏覽(22)
  • JAVA中.equals()與 ==的區(qū)別

    JAVA中.equals()與 ==的區(qū)別

    ????????“==”是 運算符 ,如果是基本數(shù)據(jù)類型,則比較 存儲的值 ;如果是引用數(shù)據(jù)類型,則比較 所指向?qū)ο蟮牡刂分?。 ????????equals是 Object的方法 ,比較的是 所指向的對象的地址值 ,一般情況下,重寫之后比較的是 對象的值 。 八大數(shù)據(jù)類型: 整數(shù) byte、sho

    2024年02月08日
    瀏覽(35)
  • “==“和equals方法究竟有什么區(qū)別?

    ==操作符專門用來比較兩個變量的值是否相等,也就是用于比較變量所對應(yīng)的內(nèi)存中所存儲的數(shù)值是否相同,要比較兩個基本類型的數(shù)據(jù)或兩個引用變量是否相等,只能用 ==操作符。 如果一個變量指向的數(shù)據(jù)是對象類型的,那么,這時候涉及了兩塊內(nèi)存,對象本身占用一塊內(nèi)

    2023年04月17日
    瀏覽(74)
  • Java 中 == 與 equals() 的區(qū)別

    2024年02月15日
    瀏覽(23)
  • 帶你完全掌握== 和equals區(qū)別

    首先說一下==和equals之間的區(qū)別: == 如果比較的是基本數(shù)據(jù)類型 則比較的是其中的值,如果比較的是對象的話,比較的是其中的內(nèi)存地址,看個案例: 可以看出基本數(shù)據(jù)類型是可以使用==進行判斷是否相等,引用數(shù)據(jù)類型則不能,那應(yīng)該怎么辦呢? 這個時候 我們要使用equ

    2024年02月15日
    瀏覽(16)
  • 【Java掃盲篇】==和equals的區(qū)別

    【Java掃盲篇】==和equals的區(qū)別

    這是一道面試經(jīng)典題,面試官對你說:小伙子,請你說說 == 和 equals 的區(qū)別 對于==來說 如果比較的是基本數(shù)據(jù)類型,那么==比較的是數(shù)據(jù)的值是否相同。注意: (與數(shù)據(jù)類型無關(guān)) 如果比較的是引用數(shù)據(jù)類型,那么==比較的是兩個對象的地址是否相同,即兩個引用是否指向同

    2024年03月23日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包