日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中的比较

發布時間:2024/9/30 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中的比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天,在牛客網上刷了一道簡單的題,很慚愧做錯了。題目如下:

public class Demo {public static void main(String args[]){String str=new String("hello");if(str=="hello"){System.out.println("true");} else {System.out.println("false");}} }

問:輸出的結果?
答案:false
這是一道很簡單的題,就是比較引用變量str的值和字符串常量hello是否相等,結果腦子抽風頭大。因此寫一篇筆記來學習下java中的**比較**

1. “==”

==運算符是六種關系運算符(==、!=、>、<、>=、<=)中的一種。它的作用是比較兩個變量的值是否相等(當然也可以比較變量的值與常量是相等)。
如果兩個變量都是基本數據類型,那么可以直接使用==比較變量的值是否相等。
如果兩個變量都是引用類型變量,由于引用類型變量的值為被引用對象在堆內存中的地址,那么==比較的是這兩個引用類型變量是否指向同一對象。

2. equals

equals是Object類提供的方法之一,因為每個java類都繼承自Object類,所以每個對象都有equals方法。equals在Object類中的定義如下:

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

由此可見,在沒有重寫equals(Object obj)方法情況下,equals(Object obj)與==是一致的。

ps:Object對象在java.lang包下面,可以在rt.jar中找到。

如果想比較兩個引用變量指向的對象中的內容是否相同,就需要重寫equals方法。下面是String類重寫的equals方法:

public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String)anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}

前三行表示:如果該對象與要比較的對象在堆內存中地址是一樣的,那么這兩對象的內容一定相等。
第四行:判斷需要對比對象是否是字符串,如果不是,則沒有可比性,直接返回false。
第七行:判斷兩個字符串的長度是否一致,如果不一致,則false。如果一致,則進行逐個字符比較。

總結

以上是生活随笔為你收集整理的java中的比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。