java中帶static的成員變數和方法有何作用??

在java開發中,常常要建立帶不同修辭關鍵字[public]\[private] static的成員變數或方法。

提出問題:這些關鍵字各起什麼作用呢?

解決問題:現結合例項對static 小結一下。

工具/原料

1、開發工具:Intellij IDEA 14以上

2、在此進行java開發練習

方法/步驟

首先,認識由這幾個關鍵修辭的成員變數和成員方法,形成的4類成員變數和4類成員方法。

4類成員變數:

public static 資料型別 成員變數名;-------公共的、靜態的成員變數。

public 資料型別 成員變數名;------公共的、非靜態的成員變數。

private static 資料型別 成員變數名;------私有的、靜態的成員變數。

private 資料型別 成員變數名;--------私有的非靜態的成員變數。

4類成員方法:

public static 資料型別 成員方法名(){ }-------公共的、靜態的成員方法。

public 資料型別 成員方法名(){ }-----公共的、非靜態的成員方法。

private static 資料型別 成員方法名(){ }-----私有的、靜態的成員方法。

private 資料型別 成員方法名(){ }------私有的非靜態的成員方法。

其次,要知道,建立好的成員變更,只有當它們在方法裡面被訪問時,才能起作用。另外,原則上一個方法是可以呼叫另一個方法的。但是有了這些關鍵字修辭的成員變數和成員方法,它們能否在另一方法中被訪問到,被呼叫到呢?

以下是例項

step1:新建一個類(本例類名:MethodVisitMethod)。類中建立4個成員變數,4個成員方法,1個主方法main() 它是用來測試驗證。

java中帶static的成員變數和方法有何作用?

step2:程式碼如下

/** * Created by Administrator on 2016/7/24. * 本類專門研究方法與方法之間的呼叫問題 */public class MethodVisitMethod { //這是一個共公的,靜態的黑蘋果

public static String backApple="黑蘋果";

//這是一個私有的,靜態的藍蘋果

private static String blueApple="藍蘋果";

//這是一個共公的,非靜態的綠蘋果

public String greenApple="綠蘋果";

//這是一個私有的,非靜態的紅蘋果。

private String redApple="紅蘋果";

//建立一個main()方法,用來測試驗證各個方法的程式碼.強調:main方法本身是靜態方法

public static void main(String[] args){

MethodVisitMethod.method_one();

//MethodVisitMethod.method_two();//無法從靜態上下文中引用非靜態 方法 method_two()

MethodVisitMethod.method_three();

//MethodVisitMethod.method_four();//無法從靜態上下文中引用非靜態 方法 method_four()

}

//建立一個公共的,靜態的方法method_ont()

public static void method_one() {

System.out.println("這是一個公共的靜態的方法method__one()");

MethodVisitMethod.method_three();//說明靜態方法可以呼叫另一個靜態方法。

//MethodVisitMethod.method_two();//無法從靜態上下文中引用非靜態 方法 method_two()

//MethodVisitMethod.method_four();//無法從靜態上下文中引用非靜態 方法 method_four()

} //建立一個私有的,靜態的方法method_three()

private static void method_three() {

System.out.println("這是一個私有的,靜態的方法method_three()");

MethodVisitMethod.method_one();//說明靜態方法可以呼叫另一個靜態方法。

//MethodVisitMethod.method_two();//說明靜態方法不能呼叫公共的、非靜態的方法

// MethodVisitMethod.method_four();//說明靜態方法不能呼叫私有的,非靜態的方法

} //建立一個公共的,非靜態的方法method_two()

public void method_two() {

System.out.println("這是一個公共的非靜態的方法method_two()");

MethodVisitMethod.method_one();//說明非靜態方法可以呼叫另一個靜態方法。

MethodVisitMethod.method_three();//說明非靜態方法能呼叫私有的、靜態的方法

//MethodVisitMethod.method_four();//說明非靜態方法不能呼叫私有的,非靜態的方法

} //建立一個私有的,非靜態的方法method_four()

private void method_four() {

System.out.println("這是一個私有的,非靜態的方法method_four()");

MethodVisitMethod.method_one();//說明非靜態方法可以呼叫另一個靜態方法。

MethodVisitMethod.method_three();//說明非靜態方法能呼叫私有的、靜態的方法

//MethodVisitMethod.method_two();//說明非靜態方法不能呼叫公共的,非靜態的方法

}

}

//測試方法:逐個方法進行測試,取消前各個被呼叫的方法前面的註釋符//,執行main方法。從測試驗證結果,歸納如下規律:(如圖所示)

同一個類內,一個成員方法要去呼叫其它個成員方法時,許可權如下

1.靜態成員方法只能呼叫靜態的成員方法。

2.非靜態成員方法也只能呼叫靜態的成員方法

換句話說:非靜態的方法都不能被呼叫,而所的靜態成員方法在任意方法中都可以呼叫。

3.成員方法呼叫另一成員方法取決於兩者的static,與它們的public\private無關。

java中帶static的成員變數和方法有何作用?

step3:新建一個類(本例類名:MethodVisitVariable)

本類由4個成員變數,4個成員方法,1個主方法main()組成

java中帶static的成員變數和方法有何作用?

程式碼如下

/** * Created by Administrator on 2016/7/24. * 探究:成員方法訪問成員變數的許可權 */

public class MethodVisitVariable {

//這是一個共公的,靜態的黑蘋果

public static String backApple;

//這是一個私有的,靜態的藍蘋果

private static String blueApple;

//這是一個共公的,非靜態的綠蘋果

public String greenApple;

//這是一個私有的,非靜態的紅蘋果。

private String redApple;

//建立一個main方法,來測試

public static void main(String[] args) {

//String red=redApple;//無法從靜態上下文中引用非靜態 變數 redApple

//String green=greenApple;//無法從靜態上下文中引用非靜態 變數 redApple

String blue=blueApple;

String back=backApple;

MethodVisitVariable.getStaticMethod();

System.out.println("---------------------------");

//MethodVisitVariable.show();//無法從靜態上下文中引用非靜態 方法 show()

System.out.println("---------------------------");

MethodVisitVariable.method_pr_st();

System.out.println("---------------------------");

MethodVisitVariable.show2();

} //這是一個公有的靜態的方法

public static void getStaticMethod() {

//訪問成員變數

//System.out.println("this is a private string redApple"+redApple);//無法從靜態上下文中引用非靜態 變數 redApple

System.out.println("this is a private static blueApple" + blueApple);

// System.out.println("this is a public greenApple"+greenApple);//無法從靜態上下文中引用非靜態 變數 greenApple

//String ap=greenApple;//無法從靜態上下文中引用非靜態 變數 greenApple

System.out.println("this is a public static backApple" + backApple); /*

綜合: 1.帶有static關鍵字的方法叫做靜態方法。

2.當把註釋符//取消時,馬上出問題。說明靜態方法不能訪問非靜態的成員變數。

*/

} //這是一個私有的,靜態的方法

private static void method_pr_st() {

System.out.println("method_pr_st是一個私有的、靜態的方法");

staticMethod green = new staticMethod();

String gr = green.greenApple;

//呼叫成員變數

// System.out.println("這是一個私有的、非靜態的成員變數紅蘋果" + redApple);// 無法從靜態上下文中引用非靜態 變數 redApple

System.out.println("這是一個私有的、靜態的成員變數藍蘋果" + blueApple);

// System.out.println("這是一個共有的、非靜態的成員變數綠蘋果" + greenApple);//無法從靜態上下文中引用非靜態 變數 greenApple

System.out.println("這是一個共有的、靜態的成員變數黑蘋果" + backApple);

/*

1、取消redApple和greenApple成員變數的註釋符//,馬上出問題

2、說明私有的,靜態的成員方法是不可以訪問非靜態成員變數的。

* */ }

//這是一個公共的、非靜態的成員方法

public void show() {

System.out.println("show()是一個公有的,非靜態的成員方法");

//調用成員變數

System.out.println("這是一個私有的、非靜態的成員變數紅蘋果" + redApple);

System.out.println("這是一個私有的、靜態的成員變數藍蘋果" + blueApple);

System.out.println("這是一個共有的、非靜態的成員變數綠蘋果" + greenApple);

System.out.println("這是一個共有的、靜態的成員變數黑蘋果" + backApple);

//以上訪問都不出問題,說明公共的、非靜態的方法可以靜態和非靜態的成員變數。

} //這是一個私有的、非靜態方法

private void getNoNtaticMethod() {

//呼叫成員變數

System.out.println("這是一個私有的、非靜態的成員變數紅蘋果" + redApple);

System.out.println("這是一個私有的、靜態的成員變數藍蘋果" + blueApple);

System.out.println("這是一個共有的、非靜態的成員變數綠蘋果" + greenApple);

System.out.println("這是一個共有的、靜態的成員變數黑蘋果" + backApple);

/* 綜合:1.沒有關鍵字static 的方法叫做非靜態方法。 2.非靜態方法可以呼叫靜態的成員變數和靜態的成員方法。 */ } //這是一個公共的,靜態的成員方法

public static void show2() {

System.out.println("show2()是公有的、靜態的成員方法");

//呼叫成員變數

//System.out.println("這是一個私有的、非靜態的成員變數紅蘋果" + redApple);//無法從靜態上下文中引用非靜態 變數 redApple

System.out.println("這是一個私有的、靜態的成員變數藍蘋果" + blueApple);

//System.out.println("這是一個共有的、非靜態的成員變數綠蘋果" + greenApple);//無法從靜態上下文中引用非靜態 變數 greenApple

System.out.println("這是一個共有的、靜態的成員變數黑蘋果" + backApple);

/* 綜合:1.帶有關鍵字static 的方法叫做靜態方法。

2.靜態方法只能訪問靜態的成員變數,而不能訪問非靜態的成員變數。 */

}

}

/*測試方法是逐個方法進行測試,取消前各個被呼叫的方法前面的註釋符//,執行main方法。對多次行動的結果進行歸納總結:得出如下規律:(如圖所示)

在同一類中,成員方法想去呼叫其它的成員變數,許可權是:

1.靜態成員方法只能訪問靜態的成員變數。

2.非靜態成員方法可以訪問所有的成員變數

3.成員方法訪問成員變數取決於兩者的static,與它們的public\private無關。

*/

java中帶static的成員變數和方法有何作用?

最後總結:

1、一個靜態的成員方法只能訪問(呼叫)靜態的成員變數和靜態的成員方法。

2、一個非靜態的成員方法可以訪問(呼叫 )靜態和非靜態的成就變數。也可以呼叫靜態的成員方法。

3、一個非靜態的成員方法不能被其它方法呼叫。

作用, 變數, 成員, 靜態,
相關問題答案