A. Java中的靜態方法是什麼
靜態方法是在類中使用staitc修飾的方法,在類定義的時候已經被裝載和分配。
靜態方法為類所有,可以通過對象來使用,也可以通過類來使用。
我們之前一直寫的mian方法仔細看看,它就是一個靜態方法,靜態方法使用如下:
B. JAVA緙栫▼涓璼tatic鐨勭敤閫斾笌鐢ㄦ硶
1淇楗扮static
1錛夐潤鎬佺被鍙橀噺錛堜慨楗版垚鍛樺彉閲忥級錛
1.Static int data璇鍙ヨ存槑data涓虹被鍙橀噺錛屼負涓涓綾葷殑鍏變韓鍙橀噺錛屾槸鎵鏈夊硅薄鍏變韓鐨勶紝瀹冧笉
灞炰簬浠諱綍瀵硅薄錛屾槸灞炰簬鏁翠釜綾葷殑錛堥潤鎬佹柟娉曚篃鏄涓鏍鳳級銆
2.Static瀹氫箟鐨勬槸涓鍧椾負鏁翠釜綾誨叡鏈夌殑涓鍧楀瓨鍌ㄥ尯鍩熴
3.鍏跺彉閲忓彲浠ラ氳繃綾誨悕鍘昏塊棶錛氱被鍚.鍙橀噺鍚嶏紙涓庨氳繃瀵硅薄寮曠敤璁塊棶鍙橀噺鏄絳変環鐨勶級銆
2錛夐潤鎬佹柟娉曪紙淇楗版柟娉曪級錛
1.Public static void printData(){}錛氳〃鏄庢ょ被鏂規硶涓虹被鏂規硶錛堥潤鎬佹柟娉曪級錛岃塊棶鏄鍦ㄧ紪璇戞湡
瀹屾垚錛屾墽琛屾晥鐜囨瘮杈冮珮銆
2.闈欐佹柟娉曚笉闇瑕佹湁瀵硅薄錛屽彲浠ヤ嬌鐢ㄧ被鍚嶈皟鐢錛堜笉闇瑕佸疄渚嬩篃鍙浠ヨ皟鐢ㄩ潤鎬佹柟娉曪級銆3.闈欐佹柟娉曚腑涓嶈兘璁塊棶綾葷殑闈為潤鎬佹垚鍛橈紝鍖呮嫭鎴愬憳鍙橀噺鍜屾柟娉曪紱鍙鑳借塊棶鏈綾諱腑鐨勯潤鎬
鍙橀噺鍜屽叾瀹冮潤鎬佹柟娉曘傚洜涓烘ゆ椂鏄閫氳繃綾昏皟鐢ㄧ殑錛屾病鏈夊硅薄鐨勬傚康銆傛柟娉曚腑this.data鍜
super.data鏄涓嶅彲鐢ㄧ殑銆
鍘熷洜錛氫粠鏍規湰涓婅達紝闈欐佸彉閲忎笉綆$被鏄鍚﹀疄渚嬪寲閮戒細瀛樺湪錛岃屽疄渚嬪彉閲忓彧鏈夌被瀹炰緥鍖栦簡
鎵嶅瓨鍦ㄣ傜洿鎺ヨ皟鐢ㄩ潤鎬佹柟娉曟椂騫朵笉紜瀹氬疄渚嬪彉閲忔槸鍚﹀瓨鍦ㄣ
4. 涓鑸鎯呭喌涓嬶紝涓繪柟娉曟槸闈欐佹柟娉曪紝鎵浠JVM鍙浠ョ洿鎺ヨ皟鐢ㄥ畠錛屼富鏂規硶涓洪潤鎬佹柟娉曟槸鍥
涓哄畠鏄鏁翠釜杞浠剁郴緇熺殑鍏ュ彛錛岃岃繘鍏ュ叆鍙f椂緋葷粺涓娌℃湁浠諱綍瀵硅薄錛屽彧鑳戒嬌鐢ㄧ被璋冪敤銆
5.闈欐佹柟娉曚笉鑳借瑕嗙洊錛屽傛灉瀛愮被涓鏈夊拰鐖剁被閲嶅悕鐨勯潤鎬佹柟娉曪紝鉶界劧緙栬瘧閫氳繃錛屼絾瀹冨苟
涓嶈兘瀹炵幇澶氭侊紝鎵浠ヤ笉鑳界О浣滆嗙洊銆備緥濡傦細class Super{
static public void show(){System.out.println("in Super");}
}class Sub extends Super{
static public void show(){System.out.println("in Sub");}
}
public class Test {
public static void main(String[] arg) {
Super s = new Sub();
s.show();
}
}
鎵ц岀粨鏋滄槸錛 in Super3錛夐潤鎬佷唬鐮佸潡錛堜慨楗版病鏈夊悕瀛楃殑浠g爜鍧楋級錛
1.鍙琚鎵ц屼竴嬈★紱
2.鍒濆嬪寲鍧楀湪綾昏鍔犺澆鍚庨栧厛琚榪愯岋紝涓嶇$被鏄鍚﹀疄渚嬪寲錛岃屼笖鍙鎵ц岃繖涓嬈
3.浣滅敤錛氫竴鑸鐢ㄦ潵鍒濆嬪寲涓浜涘嶆潅綾誨瀷鐨勯潤鎬佸彉閲忋
4錛夐潤鎬佸唴閮ㄧ被錛堟敞鎰忥細鍙鑳戒慨楗版垚鍛樺唴閮ㄧ被錛夛細
class Out{
public static class Inner{}
}5錛塖tatic閫氬父鐢ㄤ簬Singleton妯″紡寮鍙戱細
Singleton妯″紡(鍗曚緥妯″紡)錛氭槸涓縐嶈捐℃ā寮忥紝楂樹簬璇娉曪紝鍙浠ヤ繚璇佷竴涓綾誨湪鏁翠釜緋葷粺
涓浠呮湁涓涓瀵硅薄銆
1.闂棰樺煙錛
緋葷粺涓浣犻渶瑕佽幏寰楁煇涓綾葷殑鍞涓瀹炰緥錛屾墍鏈夊㈡埛絝瀵瑰畠鐨勮塊棶閮藉皢閫氳繃涓涓鍏鍏辯殑璁塊棶鐐硅幏寰椼
2.瑙e喅鏂規堬細鍒涘緩涓涓綾誨苟浣垮叾
a.瀹氫箟涓涓縐佹湁鐨勬瀯閫犲櫒錛
b.瀹氫箟涓涓縐佹湁銆侀潤鎬佺殑瀹炰緥鍙橀噺鎸囧悜鑷宸(綾誨瀷鏄鑷宸辯殑綾誨瀷)錛
c.瀹氫箟涓涓鍏鏈夈侀潤鎬佺殑璁塊棶鏂規硶getInstance()鐢ㄤ簬榪斿洖璇ョ被鐨勫敮涓瀹炰緥(娉錛
鎳掓眽寮忛渶鍚屾)銆 3.鍒嗙被錛
a.楗挎眽寮忥細鍦ㄧ被瑁呰澆鐨勬椂鍊欏氨榪涜屽疄渚嬪寲錛
b.鎳掓眽寮忥細鍦ㄥ叕鏈夈侀潤鎬佺殑璁塊棶鏂規硶(鍚屾ワ細鐢╯ynchronized淇楗)涓榪涜屽疄渚嬪寲錛
鐢ㄧ殑澶氫竴浜涖 瀹炵幇1錛
public class ConnectionFactory{
private static Connection conn;
private Connection(){
if(conn==null)
conn = new Connction();
}
public Connection getInstance(){
return conn;
}
}瀹炵幇2錛
public class ConnectionFactory{
private static Connection conn;
static{
conn = new Connection();
}
public static Connection getInstance(){
return conn;
}
}