第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

方法內部類中有關變量的問題

1.首先在一個方法內部類中,定義常量變量輸出都是對的,但是如果在外部的方法中定義變量,然后在內部類中輸出為什么會報錯呢?

2.定義變量在外部類下和方法里會對方法內部類有什么不同影響嗎?

3.具體代碼如下

代碼一:public class HelloWorld {????????????????????????????

?public void show(){
?int a=1;??int b=2;
??class Inner{
???int c=3;
???public void print(){
????System.out.println("外部變量a"+a);
????System.out.println("內部變量"+c);
??}}
??????? Inner i=new Inner();
????i.print ();?}
???public static void main(String[] args) {
??HelloWorld m=new HelloWorld();
m.show();
?}}

?代碼二:public class HelloWorld {
?????? int a=1;int b=2;
??????? public void show(){
?class Inner{
???int c=3;
???public void print(){
????System.out.println("外部變量a"+a);
????System.out.println("內部變量"+c);
??}}
??????? Inner i=new Inner();
????i.print ();}
???public static void main(String[] args) {
??HelloWorld m=new HelloWorld();
m.show();}}

代碼一劃線處是錯的。代碼二則正確,并且代碼一將int a=1改成final int a=1就對了,是什么原因

正在回答

1 回答

因為內部類可以直接訪問外部類的成員(變量和方法),所以代碼二沒問題

但是代碼一中a是一個局部變量,局部變量是儲存在棧內存中,當方法結束后(彈棧),這個變量就消失了(方法就消失了),所以內部了可能沒辦法讀取到這個變量.只有加了final將這個變?yōu)槌A?將這個a的值儲存到方法區(qū)的常量池里面后,才能被訪問到

順便說下 如果你完全是自己照著imooc里面的教程學的,你估計看不懂我說的,因為imooc到第二季還沒提到過內存方面的內容.(我也是不懂,自己找資料學的)

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

方法內部類中有關變量的問題

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號