日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java面向对象(this关键字)

發布時間:2023/12/2 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java面向对象(this关键字) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.this的作用

1.this 相當于是指向當前對象本身

2.成員變量和局部變量同名問題

class Person {private int age;private String name;// 給姓名和年齡初始化的構造方法Person(String name, int age) {// 當需要訪問成員變量是,只需要在成員變量前面加上this.即可this.name = name;this.age = age;}public void speak() {System.out.println("name=" + this.name + ",age=" + this.age);} }class PersonDemo {public static void main(String[] args) {Person p = new Person("張三", 23);p.speak();} }

3.調用構造函數

class Person {// Person的成員屬性private int age;private String name;// 無參數的構造方法 Person() {}// 給姓名初始化的構造方法 Person(String nm) {name = nm;}// 給姓名和年齡初始化的構造方法Person(String nm, int a) {// 由于已經存在給姓名進行初始化的構造方法 name = nm;因此只需要調用即可// 調用其他構造方法,需要通過this關鍵字來調用this(nm);// 給年齡初始化age = a;} }

?

二.this原理圖解

class Person {private int age;private String name;Person() {}Person(String nm) {name = nm;}Person(String nm, int a) {this(nm);age = a;} }class PersonDemo {public static void main(String[] args) {Person p = new Person("張三", 23);} }

圖例說明:

1、先執行main方法,main方法壓棧,執行其中的new Person(“張三”,23);

2、堆內存中開辟空間,并為其分配內存地址0x33,,緊接著成員變量默認初始化(name=null ?age = 0);

3、擁有兩個參數的構造方法(Person(String nm , int a))壓棧,在這個構造方法中有一個隱式的this,因為構造方法是給對象初始化的,那個對象調用到這個構造方法,this就指向堆中的那個對象。

4、由于Person(String nm , int a)構造方法中使用了this(nm);構造方法Person(String nm)就會壓棧,并將“張三”傳遞給nm。在Person(String nm , int a)構造方法中同樣也有隱式的this,this的值同樣也為0x33,這時會執行其中name = nm,即把“張三”賦值給成員的name。當賦值結束后Person(String nm , int a)構造方法彈棧。

5、程序繼續執行構造方法(Person(String nm , int a)中的age = a;這時會將23賦值給成員屬性age。賦值結束構造方法(Person(String nm , int a)彈棧。

6、當構造方法(Person(String nm , int a)彈棧結束后,Person對象在內存中創建完成,并將0x33賦值給main方法中的p引用變量。

注意:

this代表的是對象,哪個對象調用了this所在的方法,this就代表哪個對象。

調用其他構造方法的語句必須定義在構造方法的第一行,原因是初始化動作要最先執行。

三.this應用實例(判斷是否是同齡人)

class Person {private int age;private String name;// 給姓名和年齡初始化的構造方法Person(String name, int age) {// 當需要訪問成員變量是,只需要在成員變量前面加上this.即可this.name = name;this.age = age;}public void speak() {System.out.println("name=" + this.name + ",age=" + this.age);}// 判斷是否為同齡人public boolean equalsAge(Person p) {// 使用當前調用該equalsAge方法對象的age和傳遞進來p的age進行比較// 由于無法確定具體是哪一個對象調用equalsAge方法,這里就可以使用this來代替/** if(this.age == p.age) { return true; } return false;*/return this.age = p.age;} }

轉載于:https://www.cnblogs.com/akiyama/p/10222474.html

總結

以上是生活随笔為你收集整理的java面向对象(this关键字)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。