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;
}
}