聊一聊關鍵字 this

2021-06-21 15:55:02 字數 1850 閱讀 2899

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,為什...