static关键字的特性:
1,在一个类中,有static修饰的成员不能直接访问没有static修饰的成员,没有static修饰的成员可以访问有static修饰的。
2,没有static修饰的叫普通成员,有static修饰的叫静态成员。
3,静态的成员只能访问静态的成员,普通的成员可以访问静态的成员也可以访问普通的成员。
4,静态成员已经不是对象级别的成员了,变成类级别的成员。静态的成员可以由类名直接调用,而不需要创建对象。
5,静态成员是在类加载的时候即分配内存空间,而普通的成员是创建对象的时候才会分配内存空间,类的加载要早于对象的创建。
6,所以当静态成员想访问普通成员的时候,普通成员不一定分配了内存空间,静态无法访问普通成员。
7,而普通成员在创建对象后分配空间,此时静态成员肯定已经分配了内存空间。所以普通成员可以访问静态成员。
// 本类用于演示static的属性和方法
public class ThreeTest {
public static int one;
public int two;
public static void main(String[] args) {
// Student.study();
// Student stu = new Student();
// stu.sayHello();
// stu.stuName = "Tom";
// Student stu1 = new Student();
// stu1.stuName = "Jerry";
// Student stu2 = new Student();
// stu2.stuName = "Mary";
// System.out.println(stu.stuName);
// System.out.println(stu1.stuName);
// System.out.println(stu2.stuName);
// System.out.println(stu.country);
// stu.country = "中国";
// System.out.println(stu.country);
// System.out.println(stu1.country);
// System.out.println(stu2.country);
// stu1.country = "俄罗斯";
// System.out.println(stu.country);
// System.out.println(stu1.country);
// System.out.println(stu2.country);
// stu.stuName = "sanmao";
// System.out.println(stu.stuName);
// System.out.println(stu1.stuName);
// System.out.println(stu2.stuName);
// System.out.println(one);
ThreeTest tt = new ThreeTest();
tt.methodOne();// 静态的成员也可以访问普通的成员,但是需要创建对象并由对象名调用。
}
public void methodOne(){
System.out.println(one);
System.out.println("in methodOne()");
}
public void methodTwo(){
System.out.println(one);
methodOne();
}
}