Java:比較運算子compareTo()、equals()、==之間的區別與應用總結
1、== 和 equals的區別:
==主要是兩個變數值的比較,返回值為true 或者是false。對於普通變數,如:int a=10; int b= 10; a==b,返回為 true。
而對於下面情況:
String a=new String("abc");
String b=new String("abc");
a==b; 返回的則是一個false。這是因為,對於物件的比較是對物件引用的比較,對於a和b ,他們在記憶體中對應的地址是不一樣的,所以 a==b 返回的值是一個false.
==操作符並不涉及物件內容的比較。若要對物件內容進行比較,則用equals. 如果 在本例中,a.equals(b)則返回是一個true值。
總而言之,==是對物件地址的比較,而equals是對物件內容的比較。對於基本資料型別,一般用==,而對於字串的比較,一般用equals
2、對於compareTo(), 在API中,java.lang包下面的基本資料型別的封裝類都提供了該方法,如 Integer,Float,Byte,Short,Character 等
在基本資料中,compareTo()是比較兩個Character 物件;
在 Boolean中,是用boolean的例項於其它例項進行比較;
在String 中,則是按照字典順序進行比較,返回的值是一個int 型。
貼一段程式碼
public class Test{
public static void main(String args[]){
String s1=new String("abc");
String s2=new String("abc");
System.out.println((s1==s2)? "true":"false");
System.out.println((s1.equals(s2))? "true":"false");
if(s1.compareTo(s2)==0){
System.out.println("s1 is equal s2");}
s1=s2;
System.out.println((s1==s2)? "true":"false");
}
}程式的執行結果為:
false
true
s1 is equals s2
true
這裡需要說明的一點,s2物件賦值給s1之後,s2和s1的引用其實是指向了記憶體中的同一個位置。所以,再進行比較時,就是true.
相關文章
- Java物件之間的比較之equals和==Java物件
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- Java運算子>>與>>>區別詳解Java
- 物件包裝器類之間的比較用equals()而不是==物件
- 運算子與= 區別
- Java中(==)與equals的區別Java
- java中equals方法與==邏輯運算子薦Java
- SCSS 比較運算子CSS
- 【IOS】java 與oc之間的比較iOSJava
- Java之String的equals與contentEquals區別Java
- java短路運算子和邏輯運算子的區別Java
- [JavaWeb]SpringMVC與Struts2區別與比較總結JavaWebSpringMVC
- 剩餘運算子與展開運算子的區別
- PHP中的比較運算子PHP
- Java面試題 equals()與"=="的區別?Java面試題
- php運算子 比較運算子 邏輯運算子 三元運算子PHP
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- 【Java】equals 和 == 的區別Java
- php比較運算子的安全問題PHP
- java運算子易錯點總結Java
- Java基礎-- ==號與equals()方法的區別Java
- Python學習-比較運算子和邏輯運算子Python
- java位運算子的應用範圍Java
- Java中擺脫equals,compareTo和toStringJava
- java 中equals和==的區別Java
- Java中equals和==的區別Java
- PHP比較運算子的詳細學習PHP
- Kotlin 運算子詳解:算術、賦值、比較與邏輯運算子全解析Kotlin賦值
- 關於應用整合:同步與非同步通訊模式之間的比較非同步模式
- equals與==的區別(詳解)
- swift 區間運算子(... 和 ..Swift
- ## 運算子和方法的區別
- 按位運算子在java中的應用?Java
- Java,Go和Rust之間的比較 - DexterJavaGoRust
- java字串“==”與“equals”的差異及與c#的區別Java字串C#
- Java常見知識點彙總(⑫)——==和equals的區別Java
- Java中equals與==的本質區別是什麼?Java
- Java中 equals() 方法和 == 的區別Java