this可能是最靈活也是用的最多的關鍵字,它的作用如下:
*表示類中的屬性,方法
*呼叫本類中的構造方法
*表示當前物件
下面具體來說一說各個作用的用處:
現在有這樣乙個類:
class person
public string getinfo()
}
從構造方法的兩個傳遞引數的名稱很難看出n和a到底代表什麼,所以我們改為:
class person
public string getinfo()
}
但是這樣,又會出現乙個新的問題,即
name=name;
age=age;
這樣真的合適麼?可以來驗證一下:
class person
public string getinfo()
}public class test
}
輸出結果為:
姓名: null ,年齡: 0
從執行的結果可以發現,構造方法並沒有把傳遞進去的值正確地賦值給屬性.也就是說,屬性沒有明確地給出,這時就可以用this來指明.
class person
public string getinfo()
}public class test
}
結果為:
姓名: 張三 ,年齡: 30
為了保證程式的健壯性,在類中訪問屬性都要加上this來標識!
如果乙個類中有多個構造方法,也需要用this來互相呼叫.
假設現在不管類中有多少個構造方法,只要物件被例項化,就必須列印一行"乙個新的物件被例項化"的資訊列印出來,很明顯,如果在每個構造方法中都寫上同乙個輸出語句肯定不合適,我們只需要在乙個構造方法中寫上此方法,其他構造通過呼叫來實現列印.
class person
public person(string name,int age)
public string getinfo()
}public class test
}
執行的結果:
乙個新的物件被例項化
姓名: 張三 ,年齡: 30
需要注意的兩點:
1-->this()必須放在方法的首行
2-->不管有多少個構造方法的互相呼叫,必須存在乙個"出口",即此構造方法不含this(),作為出口
除了上述說的兩點,this最重要的作用就是表示當前物件
下面通過乙個物件比較,來說明this的作用.現在有乙個person類,它例項化了2個物件,那麼這兩個物件到底是相等還是不等呢?
class person
public boolean compare(person per)
if(p1.name.equals(p2.name)&&p1.age==p2.age)else }
public string getname()
public void setname(string name)
public int getage()
public void setage(int age)
}public class testelse
}}
在以上person類中定義了乙個compare方法,此方法的主要功能是完成兩個物件的比較操作.在比較時,首先進行位址的比較,若位址一樣,則肯定是同乙個物件,否則進行內容的比較,內容一樣,也認為這兩個物件相等. 深入聊一下const關鍵字
const是乙個c語言的關鍵字,它限定乙個變數不允許被改變。使用const在一定程式上可以提高程式的健壯性,另外,在 別人 的時候,清晰理解const所起的作用,對理解別人的程式有所幫助。下面簡單描述一下const,基本都是教科書的知識。const修飾的變數,其值存放在唯讀資料段中,其值不能被改變。...
聊一聊小甜餅
cookies程式設計 cookie是儲存在客戶端的小文字,儲存的位置分為兩種 cookie可能儲存在客戶端瀏覽器的所佔記憶體中,關閉瀏覽器後,cookies就不再存在。cookie也可能儲存在客戶pc機的硬碟上,設定有效時間,超過有效時間後失效。cookie的常見應用 簡化登入 很多 在登入時,可...
聊一聊動態規劃
一 問題 看乙個經常被引用的問題 例子1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 例子2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 問你例子1是多少時,你乙個個算後,結果是20 接著問你例子2時,你會馬上說出21,為什...