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

Java全面細致講解==和equals的使用

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

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

equals與==

1. ==的使用

1.1 概述

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

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

? 用“==”進行比較時,符號兩邊的數(shù)據(jù)類型必須兼容(可自動轉換的基本數(shù)據(jù)類型除外),否則編譯出錯。

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); 
// 報錯: Operator '==' cannot be applied to 'int', 'boolean'

2. equals的使用

2.1 概述

? 是一個方法,而非運算符。

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

? Object類中equals()的定義:

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

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

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

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

2.2 代碼演示

演示一:

    Person p1=new Person();
    Person p2=new Person();
    System.out.println(p1.equals(p2));//false
    //Person為自定義的類,沒有對equals()進行重寫
    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 概述

? == 既可以比較基本類型也可以比較引用類型。對于基本類型就是比較值,對于引用類型就是比較內存地址。

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

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

? 通常情況下,重寫equals方法,會比較類中的相應屬性是否都相等。

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()); //編譯不通過

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

相關文章

  • Java 線程池詳解及創(chuàng)建簡單實例

    Java 線程池詳解及創(chuàng)建簡單實例

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

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

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

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

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

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

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

    springboot項目啟動自動跳轉到瀏覽器的操作代碼

    這篇文章主要介紹了springboot項目啟動自動跳轉到瀏覽器的操作代碼,本文圖文實例代碼相結合給大家介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • Spring事務失效場景實例詳解

    Spring事務失效場景實例詳解

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

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

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

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

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

    Spring Bean基本管理實例詳解

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

    Spring Boot應用發(fā)布到Docker的實現(xiàn)

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

最新評論

固安县| 鄂伦春自治旗| 九龙坡区| 新密市| 资中县| 阜南县| 师宗县| 恩平市| 乌审旗| 黔东| 大英县| 博兴县| 眉山市| 上思县| 鹤岗市| 八宿县| 湛江市| 朝阳市| 辰溪县| 康乐县| 招远市| 屏山县| 北宁市| 陕西省| 北宁市| 洪洞县| 商都县| 奈曼旗| 南和县| 同仁县| 衡阳县| 通城县| 博罗县| 长岛县| 元朗区| 天全县| 靖江市| 正镶白旗| 安达市| 峨眉山市| 广平县|