锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
finally瀛愬彞
JVM鎵цJava瀛楄妭鐮佹椂錛屽畠鏈夊嚑縐嶆柟寮忓彲浠ラ鍑轟竴涓唬鐮佸潡錛堣姳鎷彿涓棿鐨勮鍙ワ級銆傚叾涓箣涓錛屽氨鏄畝鍗曠殑鎵ц瀹屽叾涓墍鏈夌殑璇彞錛岀劧鍚庨鍑轟唬鐮佸潡銆傜浜岀錛孞VM鍙兘浼氬湪浠g爜鍧椾腑闂寸殑浠諱綍涓澶勶紝閬囧埌鍍廱reak錛宑ontinue錛宺eturn涔嬬被鐨勮鍙ワ紝寮哄埗瀹冭煩鍑鴻浠g爜鍧椼傜涓夌錛孞VM鍙兘浼氬湪鎵ц榪囩▼涓紝鍑虹幇浜嗗紓甯革紝鐒跺悗瀹冭煩杞埌鍖歸厤鐨刢atch瀛愬彞錛屾垨鑰呮病鏈夋壘鍒扮浉搴旂殑catch瀛愬彞錛岀洿鎺ラ鍑哄綋鍓嶇嚎紼嬨傜敱浜庡崟涓唬鐮佸潡鏈夊姝ゅ鐨勬綔鍦ㄩ鍑虹偣錛坋xit point錛夛紝鎷ユ湁涓涓畝鍗曠殑鏂瑰紡鏉ヨ〃杈鋸滄棤璁轟唬鐮佸潡浠ヤ粈涔堟柟寮忛鍑猴紝鏈変簺浜嬫儏鎬昏兘鍙戠敓鈥濇槸寰堝煎緱鐨勩傜劧鍚庡氨鏈変簡try-finally瀛愬彞銆?nbsp; 闃呰鍏ㄦ枃
]]>
寮傚父澶勭悊
鍦ㄧ▼搴忚繍琛屾椂錛屽紓甯歌浣犲彲浠ュ鉤婊戠殑澶勭悊鎰忓鐘跺喌銆備負浜嗘紨紺篔VM澶勭悊寮傚父鐨勬柟寮忥紝鑰冭檻NitPickyMath綾伙紝瀹冩彁渚涘鏁存暟榪涜鍔狅紝鍑忥紝涔橈紝闄や互鍙婂彇浣欑殑鎿嶄綔銆?br />
NitPickyMath鎻愪緵鐨勮繖浜涙搷浣滃拰Java璇█鐨?#8220;+”錛?#8220;-”錛?#8220;*”錛?#8220;/”鍜?#8220;%”鏄竴鏍風殑錛岄櫎浜哊itPickyMath涓殑鏂規硶鍦ㄤ互涓嬫儏鍐典笅浼氭姏鍑烘鏌ュ瀷錛坈hecked錛夊紓甯革細涓婃孩鍑猴紝涓嬫孩鍑轟互鍙婅0闄ゃ?鍋氶櫎鏁版椂錛孞VM浼氭姏鍑篈rithmeticException寮傚父錛屼絾鏄笂婧㈠嚭鍜屼笅婧㈠嚭涓嶄細寮曞彂浠諱綍寮傚父銆侼itPickyMath涓姏鍑哄紓甯哥殑鏂規硶瀹氫箟濡備笅錛?/p>
NitPickyMath綾諱腑鐨剅emainder()鏂規硶灝辨槸涓涓姏鍑哄拰鎹曡幏寮傚父鐨勭畝鍗曟柟娉曘?/p>
remainder()鏂規硶錛屽彧鏄畝鍗曠殑瀵瑰綋浣滃弬鏁頒紶閫掕繘鏉ョ殑2涓暣鏁拌繘琛屽彇浣欐搷浣溿傚鏋滃彇浣欐搷浣滅殑闄ゆ暟鏄?錛屼細寮曞彂ArithmeticException寮傚父銆俽emainder()鏂規硶鎹曡幏榪欎釜寮傚父錛屽茍閲嶆柊鎶涘嚭DivideByZeroException寮傚父銆?/p>
DivideByZeroException鍜孉rithmeticException鐨勫尯鍒槸錛孌ivideByZeroException鏄鏌ュ瀷錛坈hecked錛夊紓甯革紝鑰孉rithmeticException鏄潪媯鏌ワ紙unchecked錛夊瀷寮傚父銆傜敱浜嶢rithmeticException鏄潪媯鏌ュ瀷寮傚父錛屼竴涓柟娉曞氨綆椾細鎶涘嚭璇ュ紓甯革紝涔熶笉蹇呭湪鍏秚hrow瀛愬彞涓0鏄庡畠銆備換浣旹rror鎴朢untimeException寮傚父鐨勫瓙綾誨紓甯擱兘鏄潪媯鏌ュ瀷寮傚父銆傦紙ArithmeticException灝辨槸RuntimeException鐨勫瓙綾匯傦級閫氳繃鎹曡幏ArithmeticException鍜屾姏鍑篋ivideByZeroException錛宺emainder()鏂規硶寮鴻揩瀹冪殑璋冪敤鑰呭幓澶勭悊闄ゆ暟涓?鐨勫彲鑳芥э紝瑕佷箞鎹曡幏瀹冿紝瑕佷箞鍦ㄥ叾throw瀛愬彞涓0鏄嶥ivideByZeroException寮傚父銆傝繖鏄洜涓猴紝鍍廌ivideByZeroException榪欑鍦ㄦ柟娉曚腑鎶涘嚭鐨勬鏌ュ瀷寮傚父錛岃涔堝湪鏂規硶涓崟鑾鳳紝瑕佷箞鍦ㄥ叾throw瀛愬彞涓0鏄庯紝浜岃呭繀閫夊叾涓銆傝屽儚ArithmeticException榪欑闈炴鏌ュ瀷寮傚父錛屽氨涓嶉渶瑕佸幓鏄懼紡鎹曡幏鍜屽0鏄庛?/p>
javac涓簉emainder()鏂規硶鐢熸垚鐨勫瓧鑺傜爜搴忓垪濡備笅錛?/p>
remainder()鏂規硶鐨勫瓧鑺傜爜鏈?涓崟鐙殑閮ㄥ垎銆傜涓閮ㄥ垎鏄鏂規硶鐨勬甯告墽琛岃礬寰勶紝榪欓儴鍒嗕粠絎?琛屽紑濮嬶紝鍒扮3琛岀粨鏉熴傜浜岄儴鍒嗘槸浠庣4琛屽紑濮嬶紝鍒?2琛岀粨鏉熺殑catch瀛愬彞銆?/p>
涓誨瓧鑺傜爜搴忓垪涓殑irem鎸囦護鍙兘浼氭姏鍑篈rithmeticException寮傚父銆傚鏋滃紓甯稿彂鐢熶簡錛孞VM閫氳繃鍦ㄥ紓甯歌〃涓煡鎵懼尮閰嶇殑寮傚父錛屽畠浼氱煡閬撹璺寵漿鍒扮浉搴旂殑寮傚父澶勭悊鐨刢atch瀛愬彞鐨勫瓧鑺傜爜搴忓垪閮ㄥ垎銆傛瘡涓崟鑾峰紓甯哥殑鏂規硶錛岄兘璺熺被鏂囦歡涓笌鏂規硶瀛楄妭鐮佷竴璧蜂氦浠樼殑寮傚父琛ㄥ叧鑱斻傛瘡涓涓崟鑾峰紓甯哥殑try鍧楋紝閮芥槸寮傚父琛ㄤ腑鐨勪竴琛屻傛瘡琛?鏉′俊鎭細寮濮嬭鍙鳳紙from錛夊拰緇撴潫琛屽彿錛坱o錛夛紝瑕佽煩杞殑瀛楄妭鐮佸簭鍒楄鍙鳳紙target錛夛紝琚崟鑾風殑寮傚父綾葷殑甯擱噺姹犵儲寮曪紙type錛夈俽emainder()鏂規硶鐨勫紓甯歌〃濡備笅鎵紺猴細
FROM
|
TO
|
TARGET
|
TYPE
|
---|---|---|---|
0 | 4 | 4 | < Class java.lang.ArithmeticException > |
涓婇潰鐨勫紓甯歌〃琛ㄦ槑錛岃鍙?鍒?鑼冨洿鍐咃紝ArithmeticException灝嗚鎹曡幏銆傚紓甯歌〃涓殑“to”涓嬮潰鐨勭粨鏉熻鍙峰緇堟瘮寮傚父鎹曡幏鐨勬渶澶ц鍙峰ぇ1錛屼笂琛ㄤ腑錛岀粨鏉熻鍙蜂負4錛岃屽紓甯告崟鑾風殑鏈澶ц鍙鋒槸3銆傝鍙?鍒?鐨勫瓧鑺傜爜搴忓垪瀵瑰簲remainder()鏂規硶涓殑try鍧椼?#8220;target”鍒椾腑錛屾槸琛?鍒?鐨勫瓧鑺傜爜鍙戠敓ArithmeticException寮傚父鏃惰璺寵漿鍒扮殑鐩爣琛屽彿銆?/p>
濡傛灉鏂規硶鎵ц榪囩▼涓駭鐢熶簡寮傚父錛孞VM浼氬湪寮傚父琛ㄤ腑鏌ユ壘鍖歸厤琛屻傚紓甯歌〃涓殑鍖歸厤琛岃絎﹀悎涓嬮潰鐨勬潯浠訛細褰撳墠pc瀵勫瓨鍣ㄧ殑鍊艱鍦ㄨ琛岀殑琛ㄧず鑼冨洿涔嬪唴錛孾from, to)錛屼笖浜х敓鐨勫紓甯告槸璇ヨ鎵鎸囧畾鐨勫紓甯哥被鎴栧叾瀛愮被銆侸VM鎸変粠涓婂埌涓嬬殑嬈″簭鏌ユ壘寮傚父琛ㄣ傚綋鎵懼埌浜嗙涓涓尮閰嶈錛孞VM鎶妏c瀵勫瓨鍣ㄨ涓烘柊鐨勮煩杞鍙鳳紝浠庢琛岀戶緇線涓嬫墽琛屻傚鏋滄壘涓嶅埌鍖歸厤琛岋紝JVM寮瑰嚭褰撳墠鏍堝撫錛屽茍閲嶆柊鎶涘嚭鍚屼竴涓紓甯搞傚綋JVM寮瑰嚭褰撳墠鏍堝撫鏃訛紝瀹冧細緇堟褰撳墠鏂規硶鐨勬墽琛岋紝榪斿洖鍒拌皟鐢ㄨ鏂規硶鐨勪笂涓涓柟娉曢偅閲屻傝繖鏃訛紝鍦ㄤ笂涓涓柟娉曢噷錛屽茍涓嶄細緇х畫姝e父鐨勬墽琛岃繃紼嬶紝鑰屾槸鎶涘嚭鍚屾牱鐨勫紓甯革紝淇冧嬌JVM閲嶆柊鏌ユ壘璇ユ柟娉曠殑寮傚父琛ㄣ?/p>
Java紼嬪簭鍛樺彲浠ョ敤throw璇彞鎶涘嚭鍍弐emainder()鏂規硶鐨刢atch瀛愬彞涓殑寮傚父錛孌ivideByZeroException銆備笅琛ㄥ垪鍑轟簡鎶涘嚭寮傚父鐨勫瓧鑺傜爜錛?/p>
OPCODE
|
OPERAND(S)
|
DESCRIPTION
|
---|---|---|
athrow | (none) | pops Throwable object reference, throws the exception |
athrow鎸囦護鎶婃爤欏跺厓绱犲脊鍑猴紝璇ュ厓绱犲繀欏繪槸Throwable鐨勫瓙綾繪垨鍏惰嚜韜殑瀵硅薄寮曠敤錛岃屾姏鍑虹殑寮傚父綾誨瀷鐢辨爤欏跺脊鍑虹殑瀵硅薄寮曠敤鎵鎸囨槑銆?/p>
鏈枃璇戣嚜錛?a target="_blank" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: none; color: #21759b;">How the Java virtual machine handles exceptions
鏈枃鍑鴻嚜錛?/strong>鐮佸啘鍚堜綔紺?/a> 銆?a style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: none; color: #21759b;">JVM涓殑寮傚父澶勭悊錛岃漿杞借娉ㄦ槑銆?/p>
浠涔堟槸JVM錛熶負浠涔堣鏈夊畠錛?/strong>
JVM錛圝ava铏氭嫙鏈猴級鏄竴涓繍琛屽凡緙栬瘧Java紼嬪簭鐨勬娊璞¤綆楁満銆備箣鎵浠ヨ鏄?#8221;铏氭嫙“鐨勶紝鏄洜涓哄畠鍩轟簬“鐪熸”鐨勭‖浠跺鉤鍙板拰鎿嶄綔緋葷粺錛屼竴鑸互杞歡鐨勫艦寮忓疄鐜般傛墍鏈夌殑Java紼嬪簭閮戒負JVM鑰岀紪璇戙傚洜姝わ紝鍦ㄧ壒瀹氬鉤鍙頒笂榪愯宸茬紪璇慗ava紼嬪簭涔嬪墠錛岃騫沖彴鐨凧VM蹇呴』鍏堣琚疄鐜般?/p>
JVM鍦↗ava鐨勮法騫沖彴鐗規т腑錛岃搗鐫涓棿浜虹殑瑙掕壊銆傚畠鍦ㄥ凡緙栬瘧Java紼嬪簭涓庡簳灞傜‖浠跺鉤鍙板拰鎿嶄綔緋葷粺涔嬮棿錛屾彁渚涗竴涓娊璞″眰銆侸VM瀵笿ava鐨勫彲縐繪鎬ч潪甯稿叧閿紝鍥犱負錛屽凡緙栬瘧Java紼嬪簭榪愯鍦↗VM涔嬩笂錛屽茍鐙珛浜庡簳灞侸VM鐨勫叿浣撳疄鐜般?/p>
閭d箞錛屾槸浠涔堝鑷碕VM鐨勭煭灝忕簿鎮嶏紵褰撹瀹炵幇鎴愯蔣浠舵椂錛孞MV寰堝皬宸с傚畠琚璁℃垚榪欐牱錛屾槸涓轟簡璁╁畠鑳藉閫傜敤浜庡敖鍙兘澶氱殑鍦版柟錛屾瘮濡傛満欏剁洅錛屾墜鏈哄拰涓漢鐢佃剳銆侸VM寰堢簿鎮嶏紝鏄洜涓哄畠鐨勯噹蹇冦?#8221;鏃犲涓嶅湪錛?#8220;鏄畠鐨勬垬鏂楀彛鍙楓傚畠鎯寵鏃犲涓嶅湪錛屽茍涓擩ava紼嬪簭”涓嬈$紪鍐欙紝鍒板榪愯“鐨勭▼搴﹁鏄庝簡瀹冪殑鎴愬姛銆?br />
Java瀛楄妭鐮?/strong>
Java紼嬪簭琚紪璇戞垚涓縐嶅彨鍋氬瓧鑺傜爜鐨勪笢涓溿侸VM鎵цJava瀛楄妭鐮侊紝鎵浠ュ瓧鑺傜爜鍙互琚涓烘槸JVM鐨勬満鍣ㄨ璦銆侸ava緙栬瘧鍣ㄨ鍙朖ava婧愭枃浠訛紝鎶婂畠緲昏瘧鎴怞ava瀛楄妭鐮佸茍淇濆瓨鍒扮被鏂囦歡錛?class鏂囦歡錛変腑銆傜紪璇戝櫒浼氫負婧愮爜涓殑姣忎竴涓被鐢熸垚涓涓被鏂囦歡銆?/p>
瀵笿VM鏉ヨ錛屽瓧鑺傜爜嫻佸氨鏄寚浠ゅ簭鍒椼傛瘡鏉℃寚浠ゅ寘鍚竴涓崟瀛楄妭鐨勬搷浣滅爜鍜岄浂涓垨澶氫釜鎿嶄綔鏁般傛搷浣滅爜鍛婅瘔JVM瑕佹墽琛岀殑鎿嶄綔銆傚鏋淛VM闇瑕侀櫎鎿嶄綔鐮佷箣澶栨洿澶氱殑淇℃伅鍘繪墽琛屼竴欏規搷浣滐紝閭d箞錛岄渶瑕佺殑淇℃伅浣滀負鎿嶄綔鏁幫紝绱ц窡鍦ㄦ搷浣滅爜涔嬪悗銆?/p>
姣忎釜瀛楄妭鐮侀兘鏈変竴涓姪璁扮錛屽畠鍙褰撲綔JVM鐨勬眹緙栬璦銆備緥濡傦紝鏈変釜鎸囦護浼氳JVM鎶?鍘嬪埌鍫嗘爤涓傝鎸囦護鐨勫姪璁扮鏄痠const_0錛屽瓧鑺傜爜鍊兼槸0×60銆傝鎸囦護娌℃湁鎿嶄綔鏁般傚彟涓涓寚浠よ紼嬪簭鐨勬墽琛屽湪鍐呭瓨涓棤鏉′歡鍚戝墠鍚戝悗璺寵漿銆傝繖涓寚浠ら渶瑕佷竴涓搷浣滄暟錛屽畠鏄竴涓寚鏄庝粠褰撳墠鍐呭瓨鍦板潃寮濮嬬殑2瀛楄妭鏃犵鍙峰亸縐婚噺銆傞氳繃鎶婂亸縐婚噺鍔犲埌褰撳墠鍐呭瓨鍦板潃錛孞VM鍙互鑾峰緱瑕佽煩杞殑鐩爣鍐呭瓨鍦板潃銆傝鎸囦護鐨勫姪璁扮鏄痝oto錛屽畠鐨勫瓧鑺傜爜鍊兼槸0xa7銆?/p>
铏氭嫙閮ㄥ垎
JVM鐨?#8220;铏氭嫙紜歡”鍙互鍒嗕負鍥涗釜閮ㄥ垎錛氬瘎瀛樺櫒緇勶紝鏍堝尯錛屽瀮鍦炬敹闆嗗爢鍜屾柟娉曞尯銆傝繖浜涢儴鍒嗗緢鎶借薄錛屽氨鍍忕敱瀹冧滑緇勬垚鐨勮櫄鎷熸満涓鏍鳳紱浣嗘槸瀹冧滑蹇呴』鍦ㄦ瘡涓狫VM鐨勫疄鐜頒腑錛屼互鏌愮褰㈠紡瀛樺湪銆?/p>
JVM涓湴鍧鐨勬槸32浣嶏紙4瀛楄妭錛夌殑錛屽洜姝わ紝JVM鍙互澶勭悊4GB錛?鐨?2嬈℃柟錛夌殑鍐呭瓨銆傛爤鍖猴紝鍨冨溇鏀墮泦鍫嗗拰鏂規硶鍖哄鍦ㄨ繖4GB鍐呭瓨涓殑鏌愪釜鍦版柟錛岃嚦浜庡畠浠殑鍏蜂綋鍐呭瓨鍦板潃錛岃繖鍙栧喅浜庢瘡涓壒瀹欽VM鐨勫疄鐜拌呫?/p>
JVM涓竴涓瓧錛坵ord錛夌殑闀垮害鏄?2浣嶇殑銆侸VM涓湁灝戞暟鍑犱釜鍘熷鏁版嵁綾誨瀷錛歜yte錛?浣嶏級錛宻hort錛?6浣嶏級錛宨nt錛?2浣嶏級錛宭ong錛?4浣嶏級錛宖loat錛?2浣嶏級錛宒ouble錛?4浣嶏級錛宑har錛?6浣嶏級銆傞櫎浜嗘棤絎﹀彿Unicode瀛楃char涔嬪錛屽叾浠?縐嶆暟瀛楃被鍨嬮兘鏄湁絎﹀彿鐨勩傝繖浜涚被鍨嬪彲浠ユ柟渚跨殑鏄犲皠鍒癑ava紼嬪簭鍛樺彲鐢ㄧ殑鏁版嵁綾誨瀷銆傚彟涓涓師濮嬬被鍨嬫槸瀵硅薄鍙ユ焺錛屽畠鏄竴涓寚鍚戝爢涓璞$殑32浣嶅湴鍧銆?/p>
鐢變簬鍖呭惈瀛楄妭鐮侊紝鏂規硶鍖轟互瀛楄妭杈圭晫瀵歸綈銆傛爤鍜屽瀮鍦炬敹闆嗗爢浠ュ瓧錛?2浣嶏級杈圭晫瀵歸綈1銆?/p>
瀵勫瓨鍣細鎴戝皯鎴戣嚜璞?/strong>
JVM鏈?涓▼搴忚鏁板櫒錛坈ounter錛夊拰3涓鐞嗘爤鐨勫瘎瀛樺櫒錛坮egister錛夈傚畠鍙湁寰堝皯鐨勫瘎瀛樺櫒錛屾槸鍥犱負JVM瀛楄妭鐮佹寚浠や富瑕佹搷浣滄爤鍖恒傝繖縐嶉潰鍚戞爤鐨勮璁★紝浣垮緱JVM鎸囦護闆嗗拰JVM瀹炵幇寰堝皬宸с?/p>
JVM浣跨敤紼嬪簭璁℃暟鍣紙涔熷彨pc瀵勫瓨鍣級錛岃窡韙綋鍓嶆墽琛屾寚浠ょ殑鍐呭瓨浣嶇疆銆傚彟澶?涓瘎瀛樺櫒錛坥ptop瀵勫瓨鍣紝frame瀵勫瓨鍣ㄥ拰vars瀵勫瓨鍣級鎸囧悜褰撳墠鎵ц鏂規硶鏍堝撫涓婁笉鍚岀殑閮ㄤ綅銆傛墽琛屾柟娉曠殑鏍堝撫鎸佹湁鐗瑰畾鏂規硶璋冪敤鐨勭姸鎬侊紙鏈湴鍙橀噺錛屽嵆鏃惰綆楃粨鏋滅瓑錛夈?/p>
鏂規硶鍖哄拰紼嬪簭璁℃暟鍣?/strong>
鏂規硶鍖烘槸瀛楄妭鐮佸憜鐨勫湴鏂廣傜▼搴忚鏁板櫒璺熻釜鎵ц綰跨▼銆傚綋鍓嶅瓧鑺傜爜鎸囦護鎵ц鍚庯紝紼嬪簭璁℃暟鍣ㄤ細鍖呭惈涓嬩竴鏉℃墽琛屾寚浠ょ殑鍦板潃錛氫竴鏉℃寚浠ゆ墽琛屼箣鍚庯紝JVM鎶婄▼搴忚鏁板櫒璁劇疆涓虹揣璺熶笂涓鏉℃寚浠ょ殑鎸囦護鍦板潃錛岄櫎闈炰笂涓鏉℃寚浠ゅ叿浣撴寚鏄庝竴嬈¤煩杞?/p>
Java鏍堝拰鐩稿叧瀵勫瓨鍣?/strong>
Java鏍堢敤鏉ヤ繚瀛樺瓧鑺傜爜鎸囦護鐨勫弬鏁板拰鎵ц緇撴灉錛岀粰鏂規硶浼犻掑弬鏁板拰榪斿洖緇撴灉錛屼繚瀛樻瘡涓柟娉曡皟鐢ㄧ殑鐘舵併傛柟娉曡皟鐢ㄧ殑鐘舵佽縐頒負璋冪敤鏍堝撫銆倂ar瀵勫瓨鍣紝frame瀵勫瓨鍣ㄥ拰optop瀵勫瓨鍣ㄦ寚鍚戝綋鍓嶆爤甯х殑涓嶅悓閮ㄤ綅銆?/p>
Java鏍堝撫鏈?涓尯錛氭湰鍦板彉閲忥紝鎵ц鐜鍜屾搷浣滄暟鏍堛傛湰鍦板彉閲忓尯錛屽寘鍚綋鍓嶆柟娉曡皟鐢ㄤ腑浣跨敤鐨勬墍鏈夋湰鍦板彉閲忋傚畠鐢眝ars瀵勫瓨鍣ㄦ寚鍚戙傛墽琛岀幆澧冨尯鐢ㄦ潵緇存姢鏍堝尯鏈韓鐨勬搷浣溿傚畠琚玣rame瀵勫瓨鍣ㄦ寚鍚戙傛搷浣滄暟鍖虹敤鏉ヤ綔涓哄瓧鐮佹寚浠ょ殑宸ヤ綔鍖恒傛鏄湪榪欓噷錛屽瓨鏀劇潃瀛楄妭鐮佹寚浠ょ殑鍙傛暟鍜屽叾榪斿洖緇撴灉銆傛搷浣滄暟鏍堝尯鐨勯《閮ㄨoptop瀵勫瓨鍣ㄦ寚鍚戙?/p>
鎵ц鐜閫氬父澶瑰湪鏈湴鍙橀噺鍜屾搷浣滄暟鏍堜腑闂淬傚綋鍓嶆墽琛屾柟娉曠殑鎿嶄綔鏁版爤鎬繪槸鍦ㄦ爤鍖虹殑鏈涓婇潰錛屾墍浠ptop瀵勫瓨鍣ㄦ繪槸鎸囧悜鏁翠釜Java鏍堢殑欏墮儴銆?/p>
鍨冨溇鏀墮泦鍫?/strong>
鍫嗘槸Java瀵硅薄鐢熷瓨鐨勫湴鏂廣備換浣曟椂鍊欙紝浣犵敤new鎿嶄綔絎﹀垎閰嶇殑鍐呭瓨錛岄兘鏉ヨ嚜鍫嗕腑銆侸ava璇█涓嶅厑璁鎬綘鐩存帴閲婃斁鍒嗛厤鐨勫唴瀛樸傝繍琛屾椂鐜浼氳窡韙爢涓婃瘡涓璞$殑寮曠敤錛岃嚜鍔ㄩ噴鏀鵑偅浜涗笉琚紩鐢ㄧ殑瀵硅薄鎵鍗犳嵁鐨勫唴瀛橈紝榪欎釜榪囩▼琚О涓哄瀮鍦炬敹闆嗐?/p>
鍙傝?/strong>
鏈枃璇戣嚜錛?a style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: none; color: #9f9f9f;">The lean, mean, virtual machine
鍘熷垱鏂囩珷錛岃漿杞借娉ㄦ槑錛?/strong> 杞澆鑷?a style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: none; color: #9f9f9f;">LetsCoding.cn
鏈枃閾炬帴鍦板潃: 鐭皬綺炬倣鐨勮櫄鎷熸満錛欽VM鍩烘湰緇撴瀯鍜屽姛鑳戒粙緇?/span>
絳栫暐妯″紡閫氳繃灝佽涓緇勭浉鍏崇畻娉曪紝涓篊lient鎻愪緵榪愯鏃剁殑鐏墊椿鎬с侰lient鍙互鍦ㄨ繍琛屾椂錛岄夋嫨浠諱竴綆楁硶錛岃屼笉鏀瑰彉浣跨敤綆楁硶鐨凜ontext銆備竴浜涙祦琛岀殑絳栫暐妯″紡鐨勪緥瀛愭槸鍐欓偅浜涗嬌鐢ㄧ畻娉曠殑浠g爜錛屼緥濡傚姞瀵嗙畻娉曘佸帇緙╃畻娉曘佹帓搴忕畻娉曘傚彟涓鏂歸潰錛岀姸鎬佹ā寮忓厑璁稿璞★紝鍦ㄤ笉鍚岀殑鐘舵佹嫢鏈変笉鍚岀殑琛屼負銆傚洜涓虹幇瀹炰笘鐣屼腑鐨勫璞¢氬父閮芥槸鏈夌姸鎬佺殑錛屾墍浠ュ畠浠湪涓嶅悓鐘舵侊紝琛屼負涔熶笉涓鏍楓備緥濡傦紝VM錛堣嚜鍔ㄥ敭璐ф満錛夊彧鍦╤asCoin鐘舵佹墠緇欎綘鍚愬晢鍝侊紱浣犱笉鎶曞竵錛屽畠鏄笉浼氬悙鐨勩傜幇鍦ㄤ綘鍙互娓呮鐨勭湅鍑哄畠浠殑涓嶅悓涔嬪浜嗭細瀹冧滑鐨勬剰鍥炬槸涓嶅悓鐨勩傜姸鎬佹ā寮忓府鍔╁璞$鐞嗙姸鎬侊紝鑰岀瓥鐣ユā寮忓厑璁窩lient閫夋嫨涓嶅悓鐨勮涓恒?/span>
鍙︿竴涓笉閭d箞瀹規槗鑳界湅鍑烘潵鐨勫尯鍒槸錛氭槸璋佷績浣夸簡琛屼負鐨勬敼鍙樸傜瓥鐣ユā寮忎腑錛屾槸Client鎻愪緵浜嗕笉鍚岀殑絳栫暐緇機ontext錛涚姸鎬佹ā寮忎腑錛岀姸鎬佽漿縐葷敱Context鎴朣tate鑷繁綆$悊銆傚彟澶栵紝濡傛灉浣犲湪State涓鐞嗙姸鎬佽漿縐伙紝閭d箞瀹冨繀欏繪寔鏈塁ontext鐨勫紩鐢ㄣ備緥濡傦紝鍦╒M鐨勪緥瀛愪腑錛孲tate瀵硅薄闇瑕佽皟鐢╒M鐨剆etState()鏂規硶鍘繪敼鍙樺畠鐨勭姸鎬併傚彟涓鏂歸潰錛孲trategy浠庝笉鎸佹湁Context鐨勫紩鐢紝鏄疌lient鎶婃墍閫夋嫨鐨凷trategy浼犻掔粰Context銆傜敱浜庣姸鎬佹ā寮忓拰絳栫暐妯″紡鐨勫尯鍒紝鏄祦琛岀殑Java璁捐鍘熷垯綾婚潰璇曢涔嬩竴錛屾垜浠皢浼氬湪鏈枃鎺㈣鍦↗ava涓紝鐘舵佹ā寮忓拰絳栫暐妯″紡鐨勫紓鍚岋紝榪欏彲浠ュ姞娣變綘瀵瑰畠浠殑鐞嗚В銆?/span>
鐩鎬技涔嬪
濡傛灉浣犵湅鐪嬬姸鎬佹ā寮忓拰絳栫暐妯″紡鐨刄ML鍥撅紝灝變細鍙戠幇瀹冧滑鐨勭粨鏋勯潪甯哥浉浼箋備嬌鐢⊿tate瀵硅薄鏀瑰彉鑷繁琛屼負鐨勫璞¤縐頒負Context瀵硅薄錛涚浉浼肩殑錛屼嬌鐢⊿trategy瀵硅薄鏀瑰彉鑷繁琛屼負鐨勫璞″彨Context瀵硅薄銆傝浣忥紝Client鍜孋ontext鎵撲氦閬撱傚湪鐘舵佹ā寮忎腑錛孋ontext鎶婃柟娉曡皟鐢ㄥ鎵樼粰褰撳墠鐨勭姸鎬佸璞★紝鑰屽湪絳栫暐妯″紡涓紝Context浣跨敤鐨凷trategy瀵硅薄錛屾槸琚綋鍋氬弬鏁頒紶閫掕繃鏉ョ殑錛屾垨鍦–ontext瀵硅薄琚垱寤烘椂灝辮鎻愪緵鐨勩?/span>
榪欐槸涓撲負緇忓吀鐨刅M闂鑰岃璁$殑鐘舵佹ā寮廢ML綾誨浘銆備綘鍙互鐪嬪嚭錛孷M鐨勭姸鎬佹槸涓帴鍙o紝瀹冩湁琛ㄧず涓嶅悓鐘舵佺殑鍏蜂綋瀹炵幇銆傛瘡涓涓姸鎬侀兘鎸佹湁Context鐨勫紩鐢紝鐢ㄥ畠鏉ョ鐞嗙敱Context瑙﹀彂鐨勮涓哄鑷寸殑鐘舵佽漿縐匯?/span>
榪欐槸涓撲負瀹炵幇鎺掑簭鍔熻兘鑰岃璁$殑絳栫暐妯″紡UML綾誨浘銆傚洜涓哄瓨鍦ㄥ緢澶氭帓搴忕畻娉曪紝璇ユā寮忚Client鍦ㄦ帓搴忔椂閫夋嫨閫傚綋鐨勭畻娉曘備簨瀹炰笂錛孞ava鐨勯泦鍚堟鏋跺氨浣跨敤榪欎釜妯″紡錛屽疄鐜頒簡鐢ㄦ潵鎺掑簭鐨凜ollections.sort()鏂規硶銆備笉鍚岀殑鏄紝瀹冧笉鍏佽Client閫夋嫨鎺掑簭綆楁硶錛岃屾槸璁╁畠浼犻扖omparator鎴朇omparable鎺ュ彛鐨勫疄渚嬫潵鎸囧畾姣旇緝絳栫暐銆?/span>
璁╂垜浠潵鐪嬬湅瀹冧滑涔嬮棿鏇村鐨勭浉浼間箣澶勶細
涓嶅悓涔嬪
鐜板湪鎴戜滑鐭ラ亾錛岀姸鎬佹ā寮忓拰絳栫暐妯″紡鐨勭粨鏋勬槸鐩鎬技鐨勶紝浣嗗畠浠殑鎰忓浘涓嶅悓銆傝鎴戜滑閲嶆俯涓涓嬪畠浠殑涓昏涓嶅悓涔嬪錛?/span>
鏈枃璇戣嚜錛?/span>Difference between State and Strategy Design Pattern in Java
鍘熷垱鏂囩珷錛岃漿杞借娉ㄦ槑錛?/strong> 杞澆鑷?/span>LetsCoding.cn
鏈枃閾炬帴鍦板潃: Java涓紝鐘舵佹ā寮忓拰絳栫暐妯″紡鐨勫尯鍒?/span>