equals和=,==的区别
一. ==和equals的區(qū)別
1. ==是運算符
2. equals是String對象的方法
一般有兩種類型的比較
1. 基本數(shù)據(jù)類型的比較
2. 引用對象的比較
1. 基本數(shù)據(jù)類型的比較
==和equals都比較的是值是否相等,相等則為true,否則為false
2. 引用對象的比較
==和equals都是比較是棧內(nèi)存中的地址是否相等,相等則為true,否則為false
注意:
1. String是一個特殊的引用數(shù)據(jù)類型,==比較的是字符串對象的引用地址是否一樣,equals比較的是棧中的內(nèi)容是否一致。
??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在棧中的內(nèi)存地址不同,但是在堆中的內(nèi)容是相同的。
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在堆中的內(nèi)容是否一樣
?? 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是相同的對象,并且他們在堆中的內(nèi)容一樣
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 ==的區(qū)別
=表示的是賦值,即將=右邊的值賦給左邊的變量。equals和==是表示操作
?
轉(zhuǎn)載于:https://www.cnblogs.com/minshia/p/5950969.html
總結(jié)
以上是生活随笔為你收集整理的equals和=,==的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到杀大鹅是什么意思
- 下一篇: 阅读笔记四