最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java基礎(chǔ)之 “==”與“equals”區(qū)別詳解

 更新時(shí)間:2020年02月19日 15:17:32   作者:我是java小學(xué)渣  
這篇文章主要介紹了java基礎(chǔ)之 “==”與“equals”區(qū)別詳解,需要的朋友可以參考下

對(duì)于初學(xué)java的人來(lái)說(shuō),在面對(duì)數(shù)值比較的時(shí)候,我們大多數(shù)會(huì)采用 “==”的方式來(lái)進(jìn)行比較,但是java中給我們提供了equals()方法,這時(shí)候很多人就會(huì)忽略這兩種方式的區(qū)別,在學(xué)習(xí)中產(chǎn)生了很多錯(cuò)誤,本文將詳細(xì)區(qū)分equals和 == 兩種方式的區(qū)別。

“==” 解讀

對(duì)于基本類(lèi)型和引用類(lèi)型,==的作用效果是不同的,對(duì)于 基本類(lèi)型 來(lái)說(shuō),比較的是值是否相同,對(duì)于 引用類(lèi)型 來(lái)說(shuō),比較的是引用是否相同。

代碼示例:

public static void main(String[] args) {

  String x = "hello";
  String y = "hello";
  String z = new String("hello");

  System.out.println(x.equals(y)); //true
  System.out.println(x.equals(z)); //true
  System.out.println(x == y); //true
  System.out.println(x == z); //flase

}

因?yàn)閤,y指向的是同一個(gè)引用,所以== 和equals都是true,而new String()又開(kāi)辟了一個(gè)新的空間,所以 ==為false,但是equals始終比較的是值,所以為true。

equals解讀

在本質(zhì)上,equals就是==,只是String和Integer等重寫(xiě)了equals方法,使得equals只用于值比較。

public class Demo1 {
  private String name;
  public Demo1(String name) {
    this.name = name;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public static void main(String[] args) {
    Demo1 demo1 = new Demo1("張三");
    Demo1 demo2 = new Demo1("張三");
    String s = new String("李四");
    String s2 = new String("李四");
    System.out.println(demo1.equals(demo2));//false
    System.out.println(s.equals(s2)); //true

  }
}

可以看到demo1和demo2的值一樣,但是輸出結(jié)果卻是false,而s和s2的值一樣卻輸出結(jié)果為true, 怎么回事?

equals代碼

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

可以看到,原始的equals方法本質(zhì)上就是==

String類(lèi)中的equals方法

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;
}

可以看到,String重寫(xiě)了Object的equals的方法,把引用比較改成了值的比較。

本文主要介紹了java基礎(chǔ)開(kāi)發(fā)中“==”與“equals”區(qū)別如果想了解更多關(guān)于java基礎(chǔ)開(kāi)發(fā)相關(guān)信息請(qǐng)查看下面的相關(guān)鏈接

相關(guān)文章

  • Spring中的BeanFactory對(duì)象實(shí)例化工廠詳解

    Spring中的BeanFactory對(duì)象實(shí)例化工廠詳解

    這篇文章主要介紹了Spring中的BeanFactory對(duì)象實(shí)例化工廠詳解,BeanFactory及其子類(lèi)是Spring IOC容器中最重要的一個(gè)類(lèi),BeanFactory由類(lèi)名可以看出其是一個(gè)Bean工廠類(lèi),其實(shí)它確實(shí)是一個(gè)Bean工廠類(lèi),完成Bean的初始化操作,需要的朋友可以參考下
    2023-12-12
  • Spring事件監(jiān)聽(tīng)機(jī)制使用和原理示例講解

    Spring事件監(jiān)聽(tīng)機(jī)制使用和原理示例講解

    Spring事件監(jiān)聽(tīng)機(jī)制是一個(gè)很不錯(cuò)的功能,我們?cè)谶M(jìn)行業(yè)務(wù)開(kāi)發(fā)的時(shí)候可以引入,在相關(guān)的開(kāi)源框架中也是用它的身影,比如高性能網(wǎng)關(guān)ShenYu中就使用了Spring事件監(jiān)聽(tīng)機(jī)制來(lái)發(fā)布網(wǎng)關(guān)的更新數(shù)據(jù),它可以降低系統(tǒng)的耦合性,使系統(tǒng)的擴(kuò)展性更好
    2023-06-06
  • Java并發(fā)編程之CountDownLatch源碼解析

    Java并發(fā)編程之CountDownLatch源碼解析

    這篇文章主要介紹了Java并發(fā)編程之CountDownLatch源碼解析,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java并發(fā)編程的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • SpringBoot中讀取jar包中的resources目錄下的文件的三種方式

    SpringBoot中讀取jar包中的resources目錄下的文件的三種方式

    這篇文章給大家總結(jié)了SpringBoot讀取 jar 包中的 resources 目錄下的文件的三種方式,文中有詳細(xì)的代碼示例供大家參考,,需要的朋友可以參考下
    2023-06-06
  • Java中的反射機(jī)制基本運(yùn)用詳解

    Java中的反射機(jī)制基本運(yùn)用詳解

    這篇文章主要介紹了Java 反射機(jī)制原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了Java反射機(jī)制的相關(guān)概念、原理、基本使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2021-08-08
  • 淺析final,finally,finalize 的區(qū)別

    淺析final,finally,finalize 的區(qū)別

    以下是對(duì)final,finally,finalize的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-09-09
  • 淺談shiro的SecurityManager類(lèi)結(jié)構(gòu)

    淺談shiro的SecurityManager類(lèi)結(jié)構(gòu)

    下面小編就為大家?guī)?lái)一篇淺談shiro的SecurityManager類(lèi)結(jié)構(gòu)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • SpringCloud微服務(wù)的調(diào)用與遠(yuǎn)程調(diào)用測(cè)試示例

    SpringCloud微服務(wù)的調(diào)用與遠(yuǎn)程調(diào)用測(cè)試示例

    這篇文章主要介紹了SpringCloud微服務(wù)的調(diào)用與遠(yuǎn)程調(diào)用測(cè)試示例,服務(wù)調(diào)用者-可以暫時(shí)認(rèn)為是與用戶交互的角色(因?yàn)榇嬖谖⒎?wù)之間的調(diào)用),可以根據(jù)該用戶的類(lèi)型將其賦予不同的服務(wù)調(diào)用權(quán)限,通過(guò)一次http請(qǐng)求訪問(wèn)調(diào)用對(duì)應(yīng)的微服務(wù)獲取想要的數(shù)據(jù)
    2023-04-04
  • Spring Boot超詳細(xì)講解請(qǐng)求處理流程機(jī)制

    Spring Boot超詳細(xì)講解請(qǐng)求處理流程機(jī)制

    SpringBoot是一種整合Spring技術(shù)棧的方式(或者說(shuō)是框架),同時(shí)也是簡(jiǎn)化Spring的一種快速開(kāi)發(fā)的腳手架,本篇讓我們一起分析請(qǐng)求處理流程機(jī)制
    2022-07-07
  • JAVA與SQL 中的null與NULL解析

    JAVA與SQL 中的null與NULL解析

    這篇文章主要介紹了JAVA與SQL 中的null與NULL解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評(píng)論

永嘉县| 福建省| 新闻| 若尔盖县| 玉山县| 龙州县| 永平县| 姜堰市| 克什克腾旗| 齐齐哈尔市| 斗六市| 桐城市| 潮州市| 九江县| 崇左市| 开鲁县| 东台市| 赞皇县| 灵寿县| 柯坪县| 哈巴河县| 商城县| 临清市| 湟源县| 和田市| 乐至县| 晋城| 札达县| 保定市| 肃宁县| 田阳县| 长沙市| 依安县| 行唐县| 海南省| 仁布县| 平定县| 平安县| 新津县| 奇台县| 平江县|