锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鑰佽鐭╋紝浠g爜浼哄?^+^
浣犲彲浠ュ厛鎯充竴涓嬶紝榪欎釜鍊間細鏄灝戯紵鐪嬬湅涓庡疄闄呯粨鏋滄槸鍚︿竴鑷淬?/font>
杈撳嚭緇撴灉錛?/font>
鐜板湪瀵笴lassTest.java榪涜涓鐐逛慨鏀癸紝濡備笅錛?br />
涓ゆ鐨勮緭鍑虹粨鏋滀細涓鏍蜂箞錛?br />鎴戞棦鐒惰繖涔堥棶浜嗭紝浣犺偗瀹氫細璇翠笉涓鏍鳳紝閭d綘鐭ラ亾鍘熷洜涔堬紵浣犵煡閬撹繖嬈$殑杈撳嚭緇撴灉涔堬紵
鎴戜滑鍙互鐪嬭錛屽浜庝笁涓猻taitc final 鍙橀噺 X錛孻錛孼錛屼粬浠殑鍒濆鍖栬〃杈懼紡鏄驚鐜畾涔夌殑銆傚湪緙栬瘧鏈熼棿涓嶈兘紜畾瀹冧滑鐨勫鹼紝鎵浠ュ畠浠槸榪愯鏈熼棿甯擱噺( runtime constants )錛岀紪璇戝櫒涓嶄細榪涜甯擱噺鏇挎崲銆?br />鑰屼笖姣忎釜琛ㄨ揪寮忕殑璁$畻灝嗕細渚濊禆浜庣被瑁呰澆鐨勯『搴忋?br />
渚?褰撲腑錛屼篃鏄悓涓閬撶悊
鍙槸綆鍗曠殑鏀瑰彉鐨勮緭鍑洪『搴忥紝緇撴灉鍗存埅鐒朵笉鍚屻傚摢涓涓墠鏄綘鎯寵寰楃粨鏋滃憿錛?/font>
鎴戠殑渚嬪瓙鐪嬭搗鏉ユ湁鐐規寲絀哄績鎬濋捇鐗涜灝栵紝浣嗘槸鍦ㄥぇ鍨嬮」鐩綋涓紝涔熻灝變細鍑虹幇涓庝緥瀛愬綋涓浉鍚岀殑寰幆瀹氫箟錛屽鏋滅湡鐨勫瓨鍦ㄧ殑璇濓紝閭d箞鍦ㄧ悍綣佺殑浠g爜褰撲腑鎯寵鍙戠幇寰幆瀹氫箟鍙笉鏄歡瀹規槗鐨勪簨鎯呫?br />
鎴戝彧鏄浜嗕竴涓嬪驚鐜畾涔変細寮曞彂鐨勯棶棰橈紝鎴戞殏鏃朵篃鎯充笉鍑轟粈涔堝ソ鐨勮В鍐沖姙娉曪紝鍙兘鍦ㄧ紪紼嬬殑榪囩▼褰撲腑灝介噺娉ㄦ剰鍟︺?br />聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
椹槈妤?/font>
聽聽聽聽聽聽聽 2006-10-19
鍦ㄤ笂涓綃囨枃绔犮?
inconstant constants ( 鍙樺寲鏃犲父鐨勫父閲?)
聽 銆嬬殑鍩虹涓?鎴戜滑鍐嶆潵鐮旂┒涓涓?font color="#000000">鍦?Java 涓嬌鐢ㄥ驚鐜畾涔変細鍑虹幇鍝簺闂銆?/font>
public
class
ClassX{
聽聽聽public聽static聽final聽intX聽=聽2*
ClassY.Y;
}
public聽class
ClassY{
聽聽聽public聽static聽final聽intY聽=ClassZ.Z+聽1
;
}
public
class
聽ClassZ聽
extends
ClassX{
聽聽聽public聽static聽final聽int聽Z=聽X聽+聽3
;
}
public
class聽
ClassTest{
聽聽聽public聽static聽void
main(String[]聽args){
聽聽聽聽聽聽System.out.println(ClassX.X
+
ClassY.Y
+
ClassZ.Z);
聽聽聽}
}
浠g爜涓殑static final鍙橀噺X錛孻錛孼錛屽驚鐜畾涔夈?/font>
15
public聽class
ClassTest{
聽聽聽public聽staticvoid
main(String[]聽args){
聽聽聽聽聽聽System.out.println(ClassZ.Z
+
ClassY.Y
+
ClassX.X);
聽聽聽}
}
鍙互鍏堟濊冧竴涓嬨?br />
杈撳嚭緇撴灉錛?/font>
8
璁╂垜鏉ュ憡璇変綘榪欐槸鎬庝箞鍥炰簨銆?/p>
渚嬪錛屼負浜嗚綆楀嚭渚?涓殑 ClassTest 緇撴灉錛屾垜浠彲浠ラ瑙侊紝ClassX 鏄涓涓瑁呰澆鐨勭被錛屼絾鏄涓涓畬鎴愬垵濮嬪寲鐨勭被鍗存槸 ClassZ.
璁╂垜浠竴姝ヤ竴姝ョ湅鐪嬮兘鍙戠敓浜嗕粈涔堛?br />
1.聽聽聽X = 2 * ClassY.Y;聽聽聽聽聽聽璁$畻X錛岄渶瑕佺煡閬揅lassY.Y鐨勫鹼紝涓嬩竴姝ヨ綆梇鍊?br />2.聽聽聽Y = ClassZ.Z + 1;聽聽聽聽聽聽璁$畻Y錛岄渶瑕佺煡閬揅lassZ.Z鐨勫鹼紝涓嬩竴姝ヨ綆梈鍊?br />3.聽聽聽Z = X + 3;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 璁$畻Z錛岄渶瑕佺煡閬揦鐨勫鹼紝鑰屾鏃禭鐨勫艱繕娌℃湁琚綆楀嚭鏉?鍙堣漿鍥炴潵浜嗭紝灞呯劧鏄釜鍦堬紝鍛靛懙^+^)錛屾墍浠ユ垜浠嬌鐢╔鐨勯粯璁ゅ?銆?br />
鍥犳錛?br />聽聽聽聽聽聽Z = 3;
聽聽聽聽聽聽Y = 4;
聽聽聽聽聽聽X = 8;
鎵浠?ClassX.X + ClassY.Y + ClassZ.Z聽 =聽 15
涓嶅悓鐨勬槸錛孋lassZ鏄涓涓瑁呰澆鐨勭被錛孋lassX鏄涓涓畬鎴愬垵濮嬪寲鐨勭被
1. Z = X + 3;
2. X = 2 * ClassY.Y;
3. Y = ClassZ.Z + 1;(姝ゆ椂浣跨敤Z鐨勯粯璁ゅ?)
鍥犳錛?/font>
聽聽聽聽聽聽Y = 1;
聽聽聽聽聽聽X = 2;
聽聽聽聽聽聽Z = 5;
鎵浠?ClassZ.Z + ClassY.Y + ClassX.X = 8
濡傛灉鐙珛鐪嬫瘡涓涓畾涔夌殑璇濓紝浼間箮閮藉彲浠ヨ繘琛屽父閲忔浛鎹紝鐪嬩笉鍑轟換浣曢棶棰樸備絾鏄繖鏍風殑浠g爜鍦ㄤ笉涔呯殑灝嗘潵灝變細寮曞彂闂錛岃屼笖涓嶆槗琚垜浠墍瀵熻銆?br />
鍦ㄤ綘鐨勫簲鐢ㄧ▼搴忓綋涓笉緇忔剰鐨勪唬鐮佹敼鍙橈紙渚嬪紺轟緥浠g爜涓垜浠彧鏄敼鍙樹簡杈撳嚭欏哄簭錛屽嵈浜х敓浜嗘埅鐒朵笉鍚岀殑緇撴灉錛夛紝灝變細瀵艱嚧涓嶅悓鐨勭被瑁呰澆欏哄簭鍜岃綆楅『搴忥紝鎴栬呭湪騫跺彂鐨勭嚎紼嬭皟搴︿腑錛屽彲鑳戒篃浼氬鑷磋嚧涓嶅悓鐨勭被瑁呰澆欏哄簭鍜岃綆楅『搴忋備笉騫哥殑鏄紝澶у鏁扮紪璇戝櫒涓嶈涓鴻繖縐嶄唬鐮佹槸閿欒錛屼篃涓嶄細瀵圭紪紼嬩漢鍛樼粰鍑轟換浣曡鍛娿?/font>
娉細鏈夐敊璇鍛婅瘔鎴戯紝闈炲父鎰熻阿錛?/font>
]]>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
椹槈妤?/font>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 2006-10-18
鐪嬪埌榪欎釜棰樼洰涔熻浣犱細鎰熷埌濂囨紝浼氭兂鎴戝湪鑳¤鍏亾浠涔堬紝涓瀹氬張鏄搗涓紓鐨勫悕瀛楋紝楠楀彇鐐瑰嚮鐜囥傝繕璇蜂綘鑰愬績鐪嬪畬錛屽鏋滀綘鏈夋墍鏀惰幏錛岄偅涔堟垜寰堥珮鍏達紱濡傛灉浣犺繕鏄寰椾笂褰撲簡錛岄偅鎴戠戶緇姫鍔涘啓鍑虹偣鏈夌敤鐨勪笢瑗匡紝鍛靛懙銆?br />
鍏跺疄鎴戞兂浜嗗緢涔咃紝涔熻繕鏄笉鐭ラ亾璧蜂竴涓粈涔堥鐩ソ錛屽氨濂楃敤浜嗐?The Java Language Specification 銆嬩腑鐨勪竴涓悕璇嶁?inconstant constants鈥濓紝鎴戞妸浠栫炕璇戞垚鈥?font color="#0000ff">鍙樺寲鏃犲父鐨勫父閲?/font>鈥?
娉細閮ㄥ垎鍐呭鍦ㄣ? 浣跨敤Java涓殑final鍙橀噺闇瑕佹敞鎰忕殑鍦版柟 銆嬫湁鎻愬埌錛屼笉榪囨垜杞澆鐨勫師鏂囦笉澶熻緇嗘繁鍏ワ紝榪欐墠閲嶆柊鍐欎竴涓嬨?br />
鎴戜滑榪樻槸鏉ュ厛鐪嬩竴孌典唬鐮侊紝鐢變唬鐮佸紩鍑洪棶棰橈細
杈撳嚭緇撴灉錛?br />
2
緇撴灉鏄樉鑰屾槗瑙佺殑錛岃繖閲岄渶瑕佽鏄庣殑鏄細
鏍規嵁Java璇█瑙勮寖錛屽浜巎ava涓殑static final鍙橀噺錛屽鏋滅敤涓涓湪緙栬瘧鏈熼棿(complie time)鍙互璁$畻鍑虹粨鏋滅殑琛ㄨ揪寮忚繘琛屽垵濮嬪寲錛屽垯鐢ㄥ埌姝ゅ彉閲忕殑鍦版柟浼氳璇ヨ〃杈懼紡鐨勭粨鏋滄墍鏇夸唬銆傛湰渚嬩腑錛屽湪緙栬瘧鏈熼棿錛孋lassTest.main() 鍑芥暟涓?ClassX.X 灝嗚2鎵鏇夸唬銆?br />
姝ゆ椂錛屽湪綾籆lassTest main()涓笉鍐嶆湁鎸囧悜ClassX鐨勫姩鎬侀摼鎺ワ紝鍛婅瘔ClassTest鍦ㄨ繍琛岀殑鏃跺欎粠ClassX鑾峰緱X鐨勫鹼紝浣犲彲浠ラ氳繃浣跨敤javap鍙嶇紪璇戝櫒甯姪浣犵悊瑙c?br />
1. 鍏堢紪璇慍lassTest.java鏂囦歡
聽聽聽聽聽聽聽聽聽聽聽聽javac ClassTest.java
2. 浣跨敤javap
聽聽聽聽聽聽聽聽聽聽聽聽javap -c ClassTest
灞忓箷杈撳嚭錛?
鍙互鐪嬪嚭錛屽湪璋冪敤System.out.println()涔嬪墠錛屾暣鏁?宸茬粡琚斁鍦↗VM鐨勫爢鏍堜腑錛屼笉鍐嶆湁鎸囧悜ClassX.X鐨勯摼鎺ャ傚鏋滄鏃訛紝鏀瑰彉ClassX.X鐨勫間負1,騫朵笖閲嶆柊緙栬瘧ClassX.X鏂囦歡錛屼絾鏄茍涓嶉噸鏂扮紪璇慍lassTest.java鏂囦歡錛岃繍琛孋lassTest錛岃緭鍑虹粨鏋滀粛鐒舵槸2.
榪欎箞鍋?甯擱噺鏇挎崲)鐨勪竴涓師鍥犳槸涓轟簡鍦ㄧ紪璇戞湡闂存鏌witch case璇彞銆俿witch璇彞涓殑姣忎竴涓猚ase閮介渶瑕佷竴涓父閲忓鹼紝鑰屼笖姣忎袱涓箣闂撮兘涓嶈兘鐩稿悓錛岀紪璇戝櫒鍦ㄧ紪璇戞湡闂村皢浼氬仛媯鏌ャ?
濡傛灉鐢ㄦ潵緇檚tatic final鍙橀噺榪涜鍒濆鍖栫殑琛ㄨ揪寮忥紝鍙兘鍦ㄨ繍琛屾椂鍒繪墠鍙互璁$畻鍑哄鹼紝閭d箞甯擱噺鏇挎崲灝變笉浼氬彂鐢?渚嬪錛?
ClassX 鏀瑰彉浜嗭紝鎴戜滑鍐嶆潵鐪嬩竴涓婱ain.main():
姝ゆ椂鎴戜滑鍙互鐪嬭鏈変釜寮曠敤鎸囧悜浜咶ield X銆?br />( 濡傛灉鎶婄被ClassX鏀規垚Interface錛屼粛鐒朵細鍑虹幇涓婇潰鐨勭粨鏋?)
褰撶劧鏈夋柟娉曞彲浠ヤ嬌浣犻伩鍏嶅嚭鐜?font color="#0000ff">"inconstant constants"闂銆?br />
絎竴縐嶆柟娉曪細
褰撲綘瑕佸0鏄庝竴涓紪璇戞湡闂村父閲忕殑鏃跺欙紝涓瀹氳淇濊瘉姝ゅ彉閲忎笉浼氭垨鑰呬笉澶彲鑳芥敼鍙橈紝鎴栬呭敖閲忓皯浣跨敤澹版槑涓簊tatic final鐨勫彉閲忋傚綋鐒惰繖鍙兘娌繪爣涓嶈兘娌繪湰錛屾墍浠ユ垜鎺ㄨ崘浣跨敤絎簩縐嶆柟娉曘?br />
絎簩縐嶆柟娉曪細
灝嗗彉閲忓0鏄庝負private錛屽悓鏃跺0鏄庝竴涓柟娉曟潵鑾峰緱姝ゅ彉閲忕殑鍊?
姝ゆ椂鍐嶆敼鍙楥lassX.X鐨勫間負1錛岄噸鏂扮紪璇慍lassX.java錛岃屼笉緙栬瘧ClassTest錛岀粨鏋滃氨浼氭樉紺?錛岃岄潪2銆傝繖灝遍伩鍏嶄簡"inconstant constants"鐨勯棶棰樸?
涓嬩竴綃囧噯澶囪涓涓?/font>
銆婂湪java涓嬌鐢ㄥ驚鐜畾涔変細鍑虹幇鍝簺闂錛熴?/font>
聽