static修饰符:
static:关键字是静态的意思,可以修饰成员方法,成员变量
修饰特点:被类的所有对象共享 ,这也是我们判断是否使用静态关键字的条件
public class Student {
public String name;
public int age;
public String university;
public void show(){
System.out.println(name+","+age+","+university);
}
}
public class StudentTest {
public static void main(String[] args) {
Student s1 = new Student();
s1.name="张三";
s1.age=21;
s1.university="北京大学";
s1.show();
Student s2=new Student();
s2.name="李四";
s2.age=22;
s2.university="北京大学";
s2.show();
}
}
以上代码没有static的修饰:张三和李四两位同学是同一所大学,在输入信息时每次都要重复输入大学名称,如果想要只输入一次被多人利用就可以再变量前加一个static修饰
public class Student {
public String name;
public int age;
public static String university;//这里被修饰 静态成员变量
public void show(){
System.out.println(name+","+age+","+university);
}
}
public class StudentTest {
public static void main(String[] args) {
Student.university="北京大学";//这里直接调用
Student s1 = new Student();
s1.name="张三";
s1.age=21;
// s1.university="北京大学";
s1.show();
Student s2=new Student();
s2.name="李四";
s2.age=22;
// s2.university="北京大学";
s2.show();
}
}
这样就也可以达到相同的目的
static:访问特点
非静态成员方法:
- 能访问非静态成员变量
- 能访问静态成员变量
- 能访问非静态成员方法
- 能访问静态成员方法
静态成员方法:
- 能访问静态成员变量
- 能访问静态成员方法
- 不能访问非静态成员变量
- 不能访问非静态成员方法
一句话总结:静态的只能访问静态的
public class Student2 {
//非静态成员变量
private String name="张三";
//静态成员变量
private static String university="北京大学";
//非静态成员方法
public void show1(){
}
//非静态成员方法
public void show2(){
//非静态成员方法即可以调用非静态成员方法及变量也可以调用静态成员方法及变量
System.out.println(name);
System.out.println(university);
show1();
show4();
}
//静态成员方法
public static void show3(){
show4();//调用静态成员方法
}
//静态成员方法
public static void show4(){
System.out.println(name);//静态成员方法调用非静态成员变量报错
System.out.println(university);
show3();
show1();//静态成员方法调用非静态成员方法也会报错
}
}