1. 程式人生 > >【小知識】java中的this.name=name是什麼意思啊??this 有什麼用啊,再哪出現?

【小知識】java中的this.name=name是什麼意思啊??this 有什麼用啊,再哪出現?

用術語解釋只會讓初學者聽得滿頭包,我也說說吧,慢慢的來了解,弄清楚每一個東西是什麼,再你往下看前你必須確定你自己有足夠的耐心,呵呵,剛起步都很累的。

借用yzbczq朋友的例子:
public class People{
String name;
//這個name這就是我們說的類的成員變數(也叫類的屬性)

public void getName(String name){
//這裡的是name是一個引數,是getName這一個方法(也叫函式)的一個引數(變數),跟上面的name不是一樣的東西!你必須弄清楚現在有兩個變數(引數)的存在

this.name = name;
}
}
好了,然後到問題來了這時候我們有一個成員變數,跟一個方法裡面的區域性變數(先弄清楚我說的兩個東西分別是什麼,不然別往下看),但是它們的名字是一樣的!
好了,我們先別管this,如果我們有一個這個類的例項物件叫person(所謂類的物件,就是根據什麼People這一個類(圖紙)所製造出來的例項),那麼這時候
this.name=name的意思也就相當於person.name,現在知道this說的是什麼了吧?然後後面的那個name就是我們那個函式方法裡面的引數,如果我們getName(String x),把這個name改名成為x,那麼我們可以寫成:
name = x,為什麼此時可以直接用name呢?因為name是我們People這個類中的一個成員變數,而我們getName這裡面沒有一樣名為name的變數,它就會直接引用我們的成員變量了。但是如果getName這個函式裡面也定義了一個同名為name的變數,那麼!這個函式就會以它自身的這個變數為準,所以如果在你的原例子中不用this,那麼在這個函式裡面不就是相當於說,我的一個變數等於它自己本身,這不是廢話嗎?

好了,我們再說this,this就是說現在這個例項(還記得例項把,我們這裡的例項名字叫person),我們的getName可不止只有person這個例項引用的啊,如果我們寫成person.name=name,那麼如果我建立一個名字叫person2的例項,引用這個函式會是什麼樣的情況?那麼現在明白this的作用了吧,它就是“我”的意思,你說的我,跟我本人說的我,都是我(都是this),但卻指代了不同的東西。

呵呵,說得有點羅嗦了,但是,應該能看懂了吧。你這個this.name=name是在一個方法裡面的吧,有點想起
張孝祥
的那個教程。
還有作為一個過來人,其實到後面的語法很簡單,很容易看明白,但是理論基礎卻非常的苦澀難懂!但這個非常的重要,你看完上面朋友的留言沒辦法看懂的話就是基礎不過關,你的基礎不過關你即使請教別的高手你也沒辦法明白他們在說什麼。呵呵,開始才是最難的,反覆的看完再看,必須把教程的每一句弄懂,不然你即使知道了語法,以後也會出很多問題,最難的莫過於這些抽象的概念。你必須先了解清楚面向物件,對於初學者,下面的這篇文章是我見過的最好的,有點長,但如果沒那個耐心,你還是放棄java吧