成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

java函數返回字符串的方法 Java中string的用法?

Java中string的用法?對于比較,在我們的第一反應中就是第一個與第二個是否相等,在Java開發(fā)語言中,我們經常是使用雙等號“==”來進行兩個變量的判斷,比如3==3為正確(true),但是在Ja

Java中string的用法?

對于比較,在我們的第一反應中就是第一個與第二個是否相等,在Java開發(fā)語言中,我們經常是使用雙等號“==”來進行兩個變量的判斷,比如3==3為正確(true),但是在Java中使用“==”進行字符串判斷的時候,有時候兩個變量明明都是一模一樣的,但是他的結果卻一直是不相等(false),所以對于新手開發(fā)者來說,經常會感到迷惑。通常在我們開發(fā)的時候,經常使用的比較方法為a.equals(b)來進行判斷兩個字符串是否相等。

在Java中,使用“==”一般比較的是兩個變量的地址,也就是說這兩個變量是在同一個內存單元存儲,他們的結果才會相等,對于兩個字符串String a = "1234" String b = "1234"對于這兩個變量a和b,當時用“==”和使用a.equals(b)的時候,他們的結果都是相等的,因為a和b兩個字符串后是兩個字符串常量,他們在內存中的存儲是在同一個地方,所以使用“==”和a.equals(b)兩個結果都是相等的;

但是對于String a = new String("1234) String b = new String("1234")雖然a和b的結果都是“1234”,但是使用“==”進行判斷的時候,得到的結果卻是不相等的,因為此時的a和b是兩個對象,他們所存在的內存位置不相等,所以“==”他的判斷也就是不相等的了,此時使用a.equals(b)得到的結果就是正確的;

之所以使用a.equals(b)的結果是判斷出兩個字符串一樣,是因為String類重寫了equal()的方法,他的比較方法是循環(huán)遍歷兩個字符串中的每個字符,只有當兩個字符串中每個位置上的字符都一樣的時候,這個方法返回的值才會是相等(true)

因此在我們開發(fā)過程中,遇到字符串的比較,使用字符串的equals()的方法進行判斷,這樣會減少很多的bug同樣不僅僅對于字符串的比較,對于任何兩個對象的比較,我們都可以使用equal()方法;

看完上面的內容,你了解Java字符串比較了嗎?

為什么說java里面只有值傳遞?

關于這個問題,不同人對它的理解不盡相同。對初學Java的同學來說,可能簡單的認為Java中參數傳遞就是分為值傳遞和引用傳遞,至于為什么,因為課本上就是這么說的。對于有些工作年限的程序員來說,可能認為如果傳遞的參數類型是普通類型,那么就是值傳遞,如果參數是對象,那么就是引用傳遞。還有一些人認為Java中只有值傳遞,就是題主問題中的主題。

對Java編程語言來說,前兩種理解是錯誤的,Java中只有值傳遞。對于我來說,剛開始也是理解有值傳遞和引用傳遞一說的,但是隨著自己寫代碼的積累,慢慢發(fā)現并不是那么回事。那為什么只有值傳遞呢?

首先,來了解一下什么是值傳遞,什么是引用傳遞?

值傳遞是說在調用函數時,將實際參數值復制一份傳遞到被調用函數中,在被調函數中修改參數值不會影響原實參值。

引用傳遞是說在調用函數時,將實際參數的地址直接傳遞到被調用的函數中,在被調函數中修改參數值會影響原實參值。

如果傳遞的參數類型是普通基本類型,那么一定是復制一份實參值傳遞給形參的,但是當參數類型是對象的時候,也是復制的一份參數值傳遞給形參,只不過復制的是對象引用的地址,也就是在內存中分配的存儲地址,不是直接傳遞的引用地址。

此時,可能有人會說那為什么將一個對象傳到另一個方法中,在這個方法中修改了這個對象的屬性值時,原調用方法中的對象屬性值也跟著變了,它不就是引用傳遞嗎?

其實,這是一個很容易迷惑的點。你仔細看看上面的陳述就會發(fā)現,不是這么回事。將一個對象傳到另一個方法中,傳遞的是什么?傳遞的是對象引用的地址,這個對象引用的地址在另一個方法中被修改了嗎?原對象引用有受影響嗎?并沒有吧!

所以,Java中并沒有引用傳遞,只有值傳遞,不要再搞錯了!

我是『Java實戰(zhàn)技術』,關注我獲取更多原理分析、實戰(zhàn)技術!