程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> equals和=,==的區別,equals區別

equals和=,==的區別,equals區別

編輯:JAVA綜合教程

equals和=,==的區別,equals區別


一. ==和equals的區別

1. ==是運算符

2. equals是String對象的方法

一般有兩種類型的比較

1. 基本數據類型的比較

2. 引用對象的比較

1. 基本數據類型的比較

==和equals都比較的是值是否相等,相等則為true,否則為false

2. 引用對象的比較

==和equals都是比較是棧內存中的地址是否相等,相等則為true,否則為false

注意:

1. String是一個特殊的引用數據類型,==比較的是字符串對象的引用地址是否一樣,equals比較的是棧中的內容是否一致。

  String ss = new String("abc");
  String sss = new String("abc");

  if(ss == sss){
   System.out.println("ss == sss is true");   
  }
  if(ss.equals(sss)){
   System.out.println("ss equals sss is true");
  }

控制台輸出:
ss != sss
ss equals sss
表明:ss和sss在棧中的內存地址不同,但是在堆中的內容是相同的。

String ss = new String("abc");

String ssss = ss;

//判斷ss和ssss在棧中的引用地址是否一樣

   if(ss == ssss){
   System.out.println("ss == ssss");
  }else{
   System.out.println("ss != ssss");
  }

//判斷ss和ssss在堆中的內容是否一樣
   if(ss.equals(ssss)){
   System.out.println("ss equals ssss");
  }else{
   System.out.println("ss not equals ssss");
  }

控制台輸出:

ss == ssss
ss equals ssss

這表明ss和ssss是相同的對象,並且他們在堆中的內容一樣

2. 引用對象的比較

   TestBean obj1 = new TestBean();
   TestBean obj2 = new TestBean();
   TestBean obj3 = obj1;
   if(obj1 == obj2){
    System.out.println("obj1 == obj2");
   }else{
    System.out.println("obj1 != obj2");
   }
  
   if(obj1 == obj3){
    System.out.println("obj1 == obj3");
   }else{
    System.out.println("obj1 != obj3");
   }

控制台輸出:

obj1!= obj2
obj1== obj3

表明obj1和obj2不是同一個對象,在棧中的引用地址不同

obj1和obj3是相同的對象,在棧中的引用地址相同

二. =和equals ==的區別

=表示的是賦值,即將=右邊的值賦給左邊的變量。equals和==是表示操作

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved