最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

方法內(nèi)部類中有關(guān)變量的問題

1.首先在一個(gè)方法內(nèi)部類中,定義常量變量輸出都是對(duì)的,但是如果在外部的方法中定義變量,然后在內(nèi)部類中輸出為什么會(huì)報(bào)錯(cuò)呢?

2.定義變量在外部類下和方法里會(huì)對(duì)方法內(nèi)部類有什么不同影響嗎?

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("內(nèi)部變量"+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("內(nèi)部變量"+c);
??}}
??????? Inner i=new Inner();
????i.print ();}
???public static void main(String[] args) {
??HelloWorld m=new HelloWorld();
m.show();}}

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

正在回答

1 回答

因?yàn)閮?nèi)部類可以直接訪問外部類的成員(變量和方法),所以代碼二沒問題

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

順便說下 如果你完全是自己照著imooc里面的教程學(xué)的,你估計(jì)看不懂我說的,因?yàn)閕mooc到第二季還沒提到過內(nèi)存方面的內(nèi)容.(我也是不懂,自己找資料學(xué)的)

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

方法內(nèi)部類中有關(guān)變量的問題

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)