ice world
There is nothing too difficult if you put your heart into it.
posts - 104, comments - 103, trackbacks - 0, articles - 0
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2007年12月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(8)
給我留言
查看公開留言
查看私人留言
隨筆分類
ArcGIS(2)
CSS(4)
Database(14)
eclipse(10)
Hibernate(1)
Java(30)
Javascript(6)
Others(15)
Strut1(3)
Tomcat(7)
Weblogic(1)
Windows(13)
加解密(5)
隨筆檔案
2016年8月 (1)
2016年1月 (1)
2014年3月 (1)
2014年1月 (3)
2013年11月 (1)
2013年9月 (1)
2013年8月 (1)
2013年7月 (2)
2013年6月 (1)
2013年3月 (1)
2013年2月 (4)
2013年1月 (1)
2012年9月 (1)
2012年7月 (2)
2012年6月 (3)
2012年5月 (8)
2012年4月 (1)
2011年11月 (1)
2011年10月 (1)
2011年9月 (1)
2011年8月 (1)
2011年6月 (2)
2011年5月 (3)
2011年4月 (61)
2007年12月 (1)
搜索
最新評論
1.?re: Failed to load JavaHL Library解決方法
嘖嘖,一語中的。
--Jerry Zhang
2.?re: Error 1935的解決方法
我安裝上面的方法成功了,各位同學們,千萬別忘記修改注冊表后重啟電腦:)
--mentoruser
3.?re: CXF+Spring+Tomcat簡明示例
評論內容較長,點擊標題查看
--無異
4.?re: CXF+Spring+Tomcat簡明示例
評論內容較長,點擊標題查看
--chiangpan
5.?re: Failed to load JavaHL Library解決方法[未登錄]
頂頂頂
--小明
閱讀排行榜
1.?Failed to load JavaHL Library解決方法(78926)
2.?CXF+Spring+Tomcat簡明示例(51159)
3.?java RSA加密解密(42691)
4.?Java Tomcat SSL 服務端/客戶端雙向認證(一)(32925)
5.?Java DES文件加密解密 javax.crypto.BadPaddingException: Given final block not properly padded(30899)
評論排行榜
1.?CXF+Spring+Tomcat簡明示例(27)
2.?Java Tomcat SSL 服務端/客戶端雙向認證(一)(22)
3.?Java數字證書對文件/加密/解密/簽名/校驗簽名(8)
4.?java RSA加密解密(7)
5.?Failed to load JavaHL Library解決方法(6)
Java中局部內部類可以訪問它所在方法中定義的final修飾的局部變量的合理解釋
Posted on 2007-12-22 11:45
IceWee
閱讀(2147)
評論(1)
編輯
收藏
所屬分類:
Java
標題有點長,可能有點語病,先別管那么多!
首先看下面的這段代碼:
public
class
LocalInnerClassTest
{
public
static
void
main(String[] args)
{
Outer obj
=
new
Outer();
//
生成一個外部類對象
SuperInner si
=
obj.outer();
//
調用外部類中的outer()方法,返回一個SuperInner類型對象賦值給si
si.m1();
//
調用被覆蓋的方法m1(),輸出:Inner's m1() 20
}
}
/**
*定義一個接口SuperInner,內部定義一個抽象方法m1(),無返回類型
*/
interface
SuperInner
{
public
void
m1();
}
/**
*定義一個類Outer,內部只定義一個方法outer(),返回類型為SuperInner
*/
class
Outer
{
public
SuperInner outer()
{
int
a
=
10
;
//
方法中定義一個局部變量a,并賦值為10
final
int
b
=
20
;
//
再定義一個final局部變量b,初始化為20
class
Inner
implements
SuperInner
{
//
在outer()方法中定義一個局部內部類Inner,實現接口SuperInner
public
void
m1()
{
//
類中只有一個覆蓋接口SuperInner的方法m1()
System.out.println(
"
Inner's m1()
"
+
a);
//
編譯報錯
System.out.println(
"
Inner's m1()
"
+
b);
//
編譯通過,輸出:Inner's m1() 20
}
}
return
new
Inner();
}
}
我們先從主方法開始看代碼的執行順序,先生成一個Outer類對象obj,obj調用本類中方法outer();程序開始跳到outer()方法內執行程序語句,先后生成局部變量a和b,再定義一個局部內部類Inner,返回一個SuperInner類型的對象。將返回的SuperInner類型對象地址傳給SuperInner類型對象si。si再調用m1()方法,因為已經在局部內部類中覆蓋了接口中的m1()方法,所以將調用局部內部類中的m1()方法,程序跳到局部內部類中m1()方法內執行程序語句,先輸出一段字符串和a,結果編譯報錯,先 將這條程序語句隱藏,執行下面的語句,你會發現編譯通過而且輸出Inner's m1() 20!
為什么會這樣呢?大家都知道局部變量僅僅在一個范圍內有效,在方法調用完就被內存釋放,在Outer類對象obj調用outer()方法時,a和b才產生,調用結束后被內存釋放,那么b這個值也就不復存在了,為什么還會輸出20呢?難道局部變量被final修飾就不會被內存釋放而保留?
其實有部分操作對于程序員是透明的,那是JAVA語言開發者的小把戲,在定義a和b 時JVM(JAVA虛擬機)做了程序員看不到的操作,他將b拷貝了一份給局部內部類,也就是說JVM在局部內部類中定義了一個final int b=20;這個操作程序員是不知道的!當調用m1()方法時輸出的20并不是原來outer()方法中定義的b,而僅僅是JVM拷貝的一個副本。那么為什么a沒被打印出呢?那是因為JVM并沒有拷貝它,因為沒有final修飾,說明它可以被修改,如果把a 改為 a++
,此時JVM就不知道拷貝a還是a++了,所以對于無final修飾的局部變量JVM是不會拷貝傳給局部內部類的,自然無法打輸出!
Feedback
#
re: Java中局部內部類可以訪問它所在方法中定義的final修飾的局部變量的合理解釋
回復
更多評論
2011-09-29 08:08 by
分公司
你說的拷貝我有點疑問,感覺這個是常量池的原因吧
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Java日常隨意記
FTPClient上傳文件蝸牛速度的解決方法
HttpClientUtils
Java獲取本機IP列表
Exception loading sessions from persistent storage
Java Tomcat SSL 服務端/客戶端雙向認證のApache HttpClient(二)
Java Tomcat SSL 服務端/客戶端雙向認證(一)
Java MD5校驗工具類
ExceptionUtil 獲取異常堆棧內容
Java Zip Utils 壓縮/解壓縮工具包
Powered by:
BlogJava
Copyright © IceWee
主站蜘蛛池模板:
国产一级黄片儿免费看
|
亚洲精品无码一区二区
|
国产A∨免费精品视频
|
国产gav成人免费播放视频
|
亚洲欧美日韩久久精品
|
在线观看免费宅男视频
|
亚洲精品第一国产综合亚AV
|
永久免费观看的毛片的网站
|
亚洲AV永久无码精品一福利
|
亚洲AV无码成人精品区大在线
|
亚洲国产精品婷婷久久
|
免费看搞黄视频网站
|
亚洲一区二区中文
|
我的小后妈韩剧在线看免费高清版
|
亚洲国产夜色在线观看
|
天堂在线免费观看中文版
|
亚洲av无码专区国产不乱码
|
亚洲精品WWW久久久久久
|
一区二区三区免费精品视频
|
亚洲国产精品一区二区第一页
|
一个人看的在线免费视频
|
久久影院亚洲一区
|
国产麻豆一精品一AV一免费
|
亚洲视频在线观看视频
|
毛片免费在线视频
|
日本中文字幕免费看
|
亚洲AV无一区二区三区久久
|
午夜免费1000部
|
色婷婷六月亚洲综合香蕉
|
亚洲中文字幕视频国产
|
最近2019免费中文字幕视频三
|
亚洲乱人伦中文字幕无码
|
亚洲伊人成无码综合网
|
免费电影在线观看网站
|
免费观看又污又黄在线观看
|
亚洲AV区无码字幕中文色
|
女人被男人躁的女爽免费视频
|
免费h成人黄漫画嘿咻破解版
|
亚洲国产高清在线
|
一区二区三区视频免费观看
|
久久久久亚洲av无码专区蜜芽
|