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

Java全面細(xì)致講解==和equals的使用

 更新時(shí)間:2022年05月30日 09:04:58   作者:小老師ir  
這篇文章主要介紹了Java中==和equals()的區(qū)別,,==可以使用在基本數(shù)據(jù)類型變量和引用數(shù)據(jù)類型變量中,equals()是方法,只能用于引用數(shù)據(jù)類型,需要的朋友可以參考下

上篇博文:Java-多線程的使用

equals與==

1. ==的使用

1.1 概述

? 用于基本類型比較值時(shí):只要兩個(gè)變量的值相等,即為true。

? 用于引用類型比較引用(是否指向同一個(gè)對(duì)象)時(shí),比較兩個(gè)對(duì)象的地址值是否相同,即兩個(gè)引用是否指向同一個(gè)對(duì)象實(shí)體,只有指向同一個(gè)對(duì)象時(shí),==才返回true。

? 用“==”進(jìn)行比較時(shí),符號(hào)兩邊的數(shù)據(jù)類型必須兼容(可自動(dòng)轉(zhuǎn)換的基本數(shù)據(jù)類型除外),否則編譯出錯(cuò)。

1.2 代碼演示

演示一:

//基本數(shù)據(jù)類型
		int i = 10;
		int j = 10;
		double d = 10.0;
		System.out.println(i == j);//true
		System.out.println(i == d);//true
		char c = 10;
		System.out.println(i == c);//true
		char c1 = 'A';
		char c2 = 65;
		System.out.println(c1 == c2);//true

演示二:

   String str1 = new String("嘻嘻");
   String str2 = new String("嘻嘻");
   System.out.println(str1 == str2);//false

演示三:

		int i = 10;
		boolean b = true;
//		System.out.println(i == b); 
// 報(bào)錯(cuò): Operator '==' cannot be applied to 'int', 'boolean'

2. equals的使用

2.1 概述

? 是一個(gè)方法,而非運(yùn)算符。

? 只能適用于引用數(shù)據(jù)類型。

? Object類中equals()的定義:

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

說明:Object類中定義的equals()和==的作用是相同的:比較兩個(gè)對(duì)象的地址值是否相同.即兩個(gè)引用是否指向同一個(gè)對(duì)象實(shí)體。

? 像String、Date、File、包裝類等都重寫了Object類中的equals()方法。重寫以后,比較的不是兩個(gè)引用的地址是否相同,而是比較兩個(gè)對(duì)象的"實(shí)體內(nèi)容"是否相同。

? 通常情況下,我們自定義的類如果使用equals()的話,也通常是比較兩個(gè)對(duì)象的"實(shí)體內(nèi)容"是否相同。那么,我們就需要對(duì)Object類中的equals()進(jìn)行重寫,重寫的原則:比較兩個(gè)對(duì)象的實(shí)體內(nèi)容是否相同。

2.2 代碼演示

演示一:

    Person p1=new Person();
    Person p2=new Person();
    System.out.println(p1.equals(p2));//false
    //Person為自定義的類,沒有對(duì)equals()進(jìn)行重寫
    String str1 = new String("小老師ir");
	String str2 = new String("小老師ir");
    System.out.println(str1.equals(str2));//true
    Date date1 = new Date(32432525324L);
	Date date2 = new Date(32432525324L);
	System.out.println(date1.equals(date2));//true

演示二:

public class Customer {	
	private String name;
	private int age;	
@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Customer other = (Customer) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}	
}

3. ==和equals的區(qū)別

3.1 概述

? == 既可以比較基本類型也可以比較引用類型。對(duì)于基本類型就是比較值,對(duì)于引用類型就是比較內(nèi)存地址。

? equals的話,它是屬于java.lang.Object類里面的方法,如果該方法沒有被重寫過默認(rèn)也是==;我們可以看到String等類的equals()方法是被重寫過的,而且String類在日常開發(fā)中用的比較多,久而久之,形成了equals是比較值的錯(cuò)誤觀點(diǎn)。

? 具體要看自定義類里有沒有重寫Object的equals()方法來判斷。

? 通常情況下,重寫equals方法,會(huì)比較類中的相應(yīng)屬性是否都相等。

3.2 代碼演示

   int it = 65;
   float fl = 65.0f;
   System.out.println(“65和65.0f是否相等?” + (it == fl)); //true
   char ch1 = 'A'; 
   char ch2 = 12;
   System.out.println("65和'A'是否相等?" + (it == ch1));//true
   System.out.println(“12和ch2是否相等?" + (12 == ch2));//true
   String str1 = new String("hello");
   String str2 = new String("hello");
   System.out.println("str1和str2是否相等?"+ (str1 == str2));//false
   System.out.println("str1是否equals str2?"+(str1.equals(str2)));//true
   System.out.println(“hello” == new java.util.Date()); //編譯不通過

到此這篇關(guān)于Java全面細(xì)致講解==和equals的使用的文章就介紹到這了,更多相關(guān)Java ==和equals內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 線程池詳解及創(chuàng)建簡(jiǎn)單實(shí)例

    Java 線程池詳解及創(chuàng)建簡(jiǎn)單實(shí)例

    這篇文章主要介紹了Java 線程池詳解及創(chuàng)建簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java字節(jié)碼操縱框架ASM圖文實(shí)例詳解

    Java字節(jié)碼操縱框架ASM圖文實(shí)例詳解

    這篇文章主要為大家介紹了Java字節(jié)碼操縱框架ASM圖文實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Spring中@RefreshScope注解的處理方法詳解

    Spring中@RefreshScope注解的處理方法詳解

    這篇文章主要介紹了Spring中@RefreshScope注解的處理方法詳解,spring啟動(dòng)時(shí)會(huì)調(diào)用ClassPathBeanDefinitionScanner.java類中的doScan()對(duì)包路徑下的所有class進(jìn)行掃描,獲取bean的定義,同時(shí)對(duì)bean的@RefreshScope(@Scope的父類)進(jìn)行處理,需要的朋友可以參考下
    2023-10-10
  • Java利用泛型實(shí)現(xiàn)折半查找法

    Java利用泛型實(shí)現(xiàn)折半查找法

    泛型是JAVA重要的特性,使用泛型編程,可以使代碼復(fù)用率提高。查找作為泛型的一個(gè)簡(jiǎn)單應(yīng)用,本文將使用泛型實(shí)現(xiàn)折半查找法,感興趣的可以了解一下
    2022-08-08
  • springboot項(xiàng)目啟動(dòng)自動(dòng)跳轉(zhuǎn)到瀏覽器的操作代碼

    springboot項(xiàng)目啟動(dòng)自動(dòng)跳轉(zhuǎn)到瀏覽器的操作代碼

    這篇文章主要介紹了springboot項(xiàng)目啟動(dòng)自動(dòng)跳轉(zhuǎn)到瀏覽器的操作代碼,本文圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Spring事務(wù)失效場(chǎng)景實(shí)例詳解

    Spring事務(wù)失效場(chǎng)景實(shí)例詳解

    實(shí)際項(xiàng)目開發(fā)中,如果涉及到多張表操作時(shí),為了保證業(yè)務(wù)數(shù)據(jù)的一致性,大家一般都會(huì)采用事務(wù)機(jī)制,好多小伙伴可能只是簡(jiǎn)單了解一下,遇到事務(wù)失效的情況,便會(huì)無從下手,下面這篇文章主要給大家介紹了關(guān)于Spring事務(wù)失效場(chǎng)景的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • java使用dom4j解析xml配置文件實(shí)現(xiàn)抽象工廠反射示例

    java使用dom4j解析xml配置文件實(shí)現(xiàn)抽象工廠反射示例

    本文主要介紹了java使用dom4j讀取配置文件實(shí)現(xiàn)抽象工廠和反射的示例,在Java中也可以同Donet一樣,將差異配置在配置文件里面。另外,我們采用下面的方式實(shí)現(xiàn),將會(huì)更加便捷
    2014-01-01
  • Java截取字符串的幾種方法示例

    Java截取字符串的幾種方法示例

    眾所周知java提供了很多字符串截取的方式,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java截取字符串的幾種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Spring Bean基本管理實(shí)例詳解

    Spring Bean基本管理實(shí)例詳解

    這篇文章主要介紹了Spring Bean基本管理,以實(shí)例形式較為詳細(xì)的分析了Spring Bean的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Spring Boot應(yīng)用發(fā)布到Docker的實(shí)現(xiàn)

    Spring Boot應(yīng)用發(fā)布到Docker的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Boot應(yīng)用發(fā)布到Docker的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06

最新評(píng)論

百色市| 逊克县| 宜州市| 河北省| 青海省| 垣曲县| 博野县| 开阳县| 湟源县| 图片| 栾川县| 嘉鱼县| 樟树市| 绥阳县| 崇仁县| 大荔县| 嘉善县| 黎城县| 资中县| 太和县| 庄浪县| 伊川县| 高雄市| 鄂尔多斯市| 饶平县| 香河县| 玛沁县| 平谷区| 北京市| 津南区| 汾西县| 治县。| 红桥区| 监利县| 塔河县| 峡江县| 壤塘县| 宾阳县| 庆元县| 盐山县| 永善县|