日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java中為什么this可以調用當前實例

瀏覽:27日期:2022-08-08 17:28:44
目錄1. 前言2. 棧幀3. 分析4. 總結1. 前言

在剛開始學習Java的時候,大家肯定都接觸過this關鍵字,尤其是在構造函數賦值的時候,如下示例:

public class Person { private String name; private int age; public Person(String name, int age) { // 必須加this關鍵字,否則無法完成成員變量的賦值 this.name = name; this.age = age; }}

在構造函數中,如果成員變量名稱和參數名稱相同時,必須加this關鍵字,否則你只是將參數name賦值給它本身,并沒有賦值給Person.name,因為局部變量的優先級高于成員變量。一旦加上this關鍵字,由于this指向的是當前實例,就可以完成對象的成員變量賦值。

那為什么可以通過this關鍵字訪問到當前對象呢?

2. 棧幀

要弄清這個問題,首先要了解JVM在執行方法時,方法棧的棧幀結構。

Java虛擬機以【方法】作為最基本的運行單元,【棧幀】就是用于支持JVM進行方法調用背后的數據結構,它也是JVM運行時數據區中【虛擬機棧】中的棧元素。

簡單點說,方法的執行過程可看作是一個個棧幀從入棧到出棧的過程。

棧幀中存儲了方法的:局部變量表、操作數棧、動態連接和方法返回地址等信息。

Java中為什么this可以調用當前實例

當使用javac程序將源碼編譯成字節碼后,一個方法的棧幀需要多大的局部變量表,多深的操作數棧就已經被計算出來,并且寫入到方法表的【Code】屬性中了,這一切和程序運行時無關。

換言之,一個方法它有多少個局部變量,在編譯時就已經確定,不會隨著程序的運行而改變。今天我們要探究的【this】問題,就在方法棧的局部變量表中。

3. 分析

我們仍然用javap命令來分析編譯后的Class文件,這是最有說服力的。

public class Person { public void say() { } public static void staticSay() { }}

如上一段代碼,分別有一個實例方法和靜態方法,我們已經知道,在靜態方法中,是無法訪問【this】的,但是在實例方法中可以。

先javac Person.java再javap -verbose Person,得到的信息有點長,我只貼這兩個方法的信息。

public void say();descriptor: ()Vflags: ACC_PUBLICCode: stack=0, locals=1, args_size=1 0: return LineNumberTable: line 8: 0public static void staticSay();descriptor: ()Vflags: ACC_PUBLIC, ACC_STATICCode: stack=0, locals=0, args_size=0 0: return LineNumberTable: line 12: 0

重點關注【Code】那一欄,say()有一個局部變量,有一個參數。staticSay()沒有局部變量,也沒有參數。

是不是感到很疑惑?say()方法形參是空的,方法體也是空的,為什么編譯后會顯示它有一個局部變量和一個形參呢?

其實,對于實例方法而言,它至少有一個參數和一個局部變量,那就是當前對象。JVM在調用對象的實例方法時,會將對象本身的引用作為第0號參數傳遞過去,這樣你就可以通過this關鍵字訪問到對象本身了,其實也就是訪問第0個參數而已。

如下,這兩個方法其實是等價的。

public void say(Person this, String text) { System.out.println(text);}public void say(String text) { System.out.println(text);}4. 總結

Java虛擬機在執行方法時,會將方法打包成一個【棧幀】,棧幀中有【局部變量表】,參數也是局部變量表的一部分,一個方法的局部變量表有多大在編譯時就已經確定,不會隨著程序的運行而改變。對于實例方法而言,在編譯時會自動加上一個隱藏的0號參數,就是當前類。JVM在調用對象的實例方法時,會自動將對象引用作為第0號參數傳遞過去,訪問【this】其實就是訪問第0號參數。

到此這篇關于Java中為什么this可以調用當前實例的文章就介紹到這了,更多相關Java this調用內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
你懂的国产精品永久在线| 欧美国产极品| 亚洲午夜天堂| 国产中文在线播放| 蜜桃视频在线网站| 精品精品99| 欧美aa在线观看| 神马午夜久久| 激情久久中文字幕| 国产视频亚洲| 亚洲精品人人| 国产欧美久久一区二区三区| 国产精品久久久久久久久久妞妞 | 午夜亚洲一区| 激情五月色综合国产精品| 麻豆9191精品国产| 日韩av在线免费观看不卡| 国产精品调教视频| 国产一区二区三区不卡av | 国产伦精品一区二区三区视频| 国产精品入口久久| 国产伊人久久| 在线日韩视频| 中文字幕av一区二区三区人| 无码日韩精品一区二区免费| 国产精品亚洲人成在99www| 麻豆91在线播放| 亚洲91视频| 日韩欧美2区| 国产精品99久久精品| 婷婷中文字幕一区| 日韩精品社区| 日韩一区电影| 日韩制服丝袜av| 国产精品美女在线观看直播| 国产精品久久久久av电视剧| 蜜臀a∨国产成人精品| 久久精品二区亚洲w码| 热三久草你在线| 精品在线99| 国产欧美亚洲精品a| 欧美香蕉视频| 日韩欧美中文字幕在线视频| 精品久久精品| 久久高清国产| 国际精品欧美精品| 久久亚洲二区| 成人在线观看免费视频| 视频在线在亚洲| 高清av一区| 在线观看亚洲精品福利片| 精品国内亚洲2022精品成人| 99亚洲精品| 久久精品天堂| 亚洲欧美日本日韩| 久久精品国产久精国产爱| 伊人成人网在线看| 精品视频网站| 综合国产精品| 久久国产欧美| 国产精品115| 蜜桃久久精品一区二区| 高清日韩中文字幕| 日韩美女精品| 狠狠爱www人成狠狠爱综合网| 久久精品伊人| 亚洲狼人精品一区二区三区| 亚洲黄色免费av| 日韩精品社区| 欧美日韩在线播放视频| 欧美激情视频一区二区三区免费 | 国产欧美日韩一区二区三区在线| 91精品精品| 麻豆精品一区二区综合av| 亚洲欧美成人综合| 日韩欧美1区| 欧美国产中文高清| 亚洲免费资源| 精品欧美激情在线观看| 精品日产乱码久久久久久仙踪林| 欧美日韩国产一区精品一区| 色婷婷综合网| 国产精品hd| 亚洲精选久久| 99热精品久久| 日韩一区二区在线免费| 国产剧情一区二区在线观看| 久久午夜视频| 伊人久久婷婷| 久久久夜精品| 日韩大片在线播放| 精品中国亚洲| 国产精品视频一区二区三区| 日本一不卡视频| 国产视频一区免费看| 久久久久久夜| 里番精品3d一二三区| 国产剧情一区| 欧美中文一区| 婷婷精品久久久久久久久久不卡| 在线亚洲国产精品网站| 亚洲欧美一区在线| 香蕉成人av| 蜜臀国产一区| 97精品97| 欧美国产美女| 黄毛片在线观看| 成人亚洲欧美| 日韩国产欧美| 欧洲精品一区二区三区| 美女国产一区二区三区| 国产精品亚洲四区在线观看| 国产欧美综合一区二区三区| 奇米亚洲欧美| 久久精品xxxxx| 欧美精品观看| 国产欧美一区二区精品久久久 | 久久精品72免费观看| 日韩精选在线| 青青伊人久久| 欧美日本三区| 国产精品欧美三级在线观看| 国产欧美另类| 日本亚洲欧美天堂免费| 日韩精品三级| 国产日本亚洲| 国产精品资源| 欧美激情视频一区二区三区在线播放| 国产午夜久久av| 国产精品一页| 精品视频一区二区三区四区五区| 久久精品女人| 日韩在线二区| 国产字幕视频一区二区| 91成人精品视频| 国产精品丝袜xxxxxxx| 蜜桃久久久久久久| 午夜亚洲福利| 日韩激情网站| 欧美日韩一区自拍| 国产精品一区二区av交换| 麻豆精品在线观看| 中文在线免费视频| 久久精品国产亚洲夜色av网站| 91久久久精品国产| 亚洲一区二区免费在线观看| 奇米777国产一区国产二区| 国产精品黄色片| 日韩精品永久网址| 国产亚洲欧洲| 欧美日韩视频免费看| 久久免费精品| 激情丁香综合| 中文在线不卡| 欧美亚洲综合视频| 成人在线观看免费视频| 99久久精品网站| 丝袜脚交一区二区| 欧美日韩亚洲国产精品| 精品国产精品国产偷麻豆| 亚洲网站视频| 日韩精品国产欧美| 精品久久影院| 狠狠爱成人网| 日本少妇一区二区| 久久精品三级| 黄色欧美日韩| 国产精品激情| 日韩国产一区二区三区| 久久亚洲欧洲| 蜜桃精品视频| 日韩视频免费| 先锋亚洲精品| 国产精品亚洲欧美日韩一区在线| 久久激情婷婷| 日精品一区二区三区| 福利一区二区三区视频在线观看| 日韩国产在线| 日本亚洲视频| 日韩一区自拍| 日韩精品视频一区二区三区| 老牛影视精品| 日本亚洲三级在线| 欧美精品91| 国产精品日韩久久久| 麻豆精品久久久| 亚洲欧美不卡| 国产suv精品一区二区四区视频 | 日韩一区三区| 日韩区欧美区| 激情欧美一区| 久久国产婷婷国产香蕉| 99久久久久国产精品| 国产精品亚洲综合久久| 婷婷成人基地| 欧美午夜三级| 美女久久一区| 三上悠亚国产精品一区二区三区 | 免费一级欧美在线观看视频| 久久午夜影视|