大家好,這是我的第一篇博客,作為即將入職的學生,我現在的心情是既好奇又興奮,對未知的職場生活充滿了無限的憧憬,也想趕緊對大學生活say goodbye,因為自己的能力現在還比較有限,我想通過博客這個平台來慢慢提升自己,我想發一些平常在Java或者其他領域經常使用到的知識,不僅是對你們有幫助,同時也是我自己的進步,謝謝大家了。雖然我知道可能有很多人發過類似的博客或者技術貼,但是我盡量還是用我自己的語言來描述,支持原版。好的,廢話不多說,接下來就進入正題吧~
我們直接從一個實例來開始我們今天的學習吧。
我新建了一個class名為Test01
public class Test01 { public static void main(String[] args){ String a="helloworld"; String b="helloworld"; System.out.println(a.equals(b)); } }
大家看上述實例,答案會是什么呢,首先一點,我們要明白的問題是,不管是".equals()"還是"==",他的返回值是true或者是false,而不是0,1或者-1,所以上述實例的輸出值最終為true。現在我們將輸出的語句進行修改:
public class Test01 { public static void main(String[] args){ String a="helloworld"; String b="helloworld"; System.out.println(a==b); } }
其輸出值仍為true。
大家都明白,"=="比較的是2個對象的地址,而".equals()"比較的是2個對象的內容,那這個區別究竟體現在那個地方呢,咱們看接下來的實例。
public class Test01 { public static void main(String[] args){ String a="helloworld"; String b="hello" +new String("world"); System.out.println(a.equals(b)); } }
大家覺得現在的輸出是什么呢,沒錯,依然是true,因為".equals()"比較的是2個對象的內容,很明顯不管是字符串a還是字符串b,他們的值沒變,都是helloworld,所以返回的值依然是true,我們再看下一個實例。
public class Test01 { public static void main(String[] args){ String a="helloworld"; String b="hello" +new String("world"); System.out.println(a==b); } }
沒錯,這個時候這個表達式的返回值就是false了。因為b2中的world是新申請的內存塊,而==判斷的是對象的地址而非值,所以不一樣。
想要搞懂這個其實還是不難的,大家只要注意以后在編程中是需要進行如何的比較即可~
希望我的分享對大家有幫助,以后我也會積極更新微博,不管是簡單的或者是復雜的知識點,或者是我曾經做的項目之類的,我都會分享出我的經驗,謝謝大家一起學習,共同進步。