java中带static的成员变量和方法有何作用?
1、 首先,认识由这几个关键修辞的成员变量和成员方法,形成的4类成员变量和4类成员方法。
4类成员变量:
public static 数据类型 成员变量名;-------公共的、静态的成员变量。
public 数据类型 成员变量名;------公共的、非静态的成员变量。
private static 数据类型 成员变量名;------私有的、静态的成员变量。
private 数据类型 成员变量名;--------私有的非静态的成员变量。
4类成员方法:
public static 数据类型 成员方法名(){ }-------公共的、静态的成员方法。
public 数据类型 成员方法名(){ }-----公共的、非静态的成员方法。
private static 数据类型 成员方法名(){ }-----私有的、静态的成员方法。
private 数据类型 成员方法名(){ }------私有的非静态的成员方法。
2、 其次,要知道,创建好的成员变更,只有当它们在方法里面被访问时,才能起作用。另外,原则上一个方法是可以调用另一个方法的。但是有了这些关键字修辞的成员变量和成员方法,它们能否在另一方法中被访问到,被调用到呢?
以下是实例
3、step1:新建一个类(本例类名:MethodVisitMethod)。8个成员方法,1个主方法main() 它是用来测试验证。
4、step2:代码如下
/**
* 本实例探究一个方法访问其它成员方法有什么的规律
*/
public class MethodVisitMethod {
//create 主方法
public static void main(String[] args) {
System.out.println("综合测试结果,得出如下结论:");
System.out.println("1.静态的方法只能调用到静态的成员方法。");
System.out.println("2.非静态的方法可以调用到静态的和非静态的方法。");
}
//create 公有、静态的方法
public static void show_1() {
int a = 10;
int b = 20;
int c = a + b;
System.out.println(c);
}
//create 私有、静态的方法
private static void show_2() {
int a = 10;
int b = 20;
int c = a * b;
System.out.println(c);
}
//create 公有的、非静态的方法
public void show_3() {
int a = 10;
int b = 20;
int c = a / b;
System.out.println(c);
}
//create 私有、非静态的方法
private void show_4() {
int a = 10;
int b = 20;
int c = a - b;
System.out.println(c);
}
//create 测试方法
public static void test_1() {
show_1();
show_2();
//show_3();//无法从静态上下文中引用非静态 方法 show_3()
//show_4();//无法从静态上下文中引用非静态 方法 show_4()
//说明公有、静态的方法只能调用静态的方法。
}
private static void test_2() {
show_1();
show_2();
//show_3();//无法从静态上下文中引用非静态 方法 show_3()
//show_4();//无法从静态上下文中引用非静态 方法 show_4()
//说明私有、静态的方法只能调用静态的方法。
}
public void test_3() {
show_1();
show_2();
show_3();
show_4();
//说明公有、非静态的方法可以调用静态的和非静态的方法。
}
private void test_4() {
show_1();
show_2();
show_3();
show_4();
//说明私有、非静态的方法可以调用静态的和非静态的方法。
}
/*
* 综合以下测试,可得出如下结论:
* 1.静态的方法只能调用到静态的成员方法。
* 2.非静态的方法可以调用到静态的和非静态的方法。
3 .成员方法调用另一成员方法取决于两者的static,与它们的public\private无关。
* */
}
5、step3:新建一个类(本例类名:MethodVisitVariable)
本类由4个成员变量,4个成员方法,1个主方法main()组成

6、代码如下
/**
* 本实例探究一个方法访问成员变量的规律
*/
public class methodVisitVariable {
public static void main(String[] args){
System.out.println("综合测试结果,可以得出结论:");
System.out.println("1.静态方法只能访问静态的成员变量。");
System.out.println("2.非静态的方法可以访问静态的和非静态的成员变量。");
}
//satement variable
public static String a1;
private static String a2;
public String a3;
private String a4;
//create method
public static void call_1(){
String a=a1;
String b=a2;
//String c=a3;
// String d=a4;
//说明公有、静态的方法只能访问静态的成员变量。
}
// create method
private static void call_2(){
String a=a1;
String b=a2;
// String c=a3;
// String d=a4;
//说明私有、静态的方法只能访问静态的成员变量。
}
// create method
public void call_3(){
String a=a1;
String b=a2;
String c=a3;
String d=a4;
//说明公有、非静态的方法可以访问静态的和非静态成员变量。
}
//create method
private void call_4(){
String a=a1;
String b=a2;
String c=a3;
String d=a4;
//说明私有、非静态的方法可以访问静态的和非静态成员变量。
}
}
/*测试方法是逐个方法进行测试,取消前各个被调用的方法前面的注释符//,运行main方法。对多次行动的结果进行归纳总结:得出如下规律:(如图所示)
在同一类中,成员方法想去调用其它的成员变量,权限是:
1.静态成员方法只能访问静态的成员变量。
2.非静态成员方法可以访问所有的成员变量
3.成员方法访问成员变量取决于两者的static,与它们的public\private无关。
*/

7、最后总结:
1、一个静态的成员方法只能访问(调用)静态的成员变量和静态的成员方法。
2、一个非静态的成员方法可以访问(调用 )静态和非静态的成就变量。也可以调用静态的和非静态的成员方法。