修饰符
1.static修饰符
1.static变量
在类中,使用static修饰的成员变量,就是静态变量,反之为非静态变量。
静态变量和非静态变量的区别
静态变量属于类的,“可以”使用类名来访问。
非静态变量属于对象,“必须”使用对象来访问
1 public class Student { 2 private static int age; 3 private double score; 4 5 public static void main(String[] args) { 6 //对象 7 Student s = new Student(); 8 //静态变量可以使用类名 9 System.out.println(Student.age); 10 System.out.println(s.age); 11 //非静态变量使用对象来访问 12 System.out.println(s.score); 13 } 14 }
静态变量对于类而言在内存中只有一个,能被类的所有实例所共享。
实例变量对于类的每一个实例都有一份,它们之间互不影响
1 public class Student2 { 2 private static int count; 3 private int num; 4 public Student2(){ 5 count++; 6 num++; 7 } 8 9 public static void main(String[] args) { 10 Student2 s1 = new Student2(); 11 Student2 s2 = new Student2(); 12 Student2 s3 = new Student2(); 13 Student2 s4 = new Student2(); 14 //因为还是在类中,所以可以直接访问私有属性 15 System.out.println(s1.num); 16 System.out.println(s2.num); 17 System.out.println(s3.num); 18 System.out.println(s4.num); 19 //全部输出的值为1 20 System.out.println(Student2.count); 21 System.out.println(s1.count); 22 System.out.println(s2.count); 23 System.out.println(s3.count); 24 System.out.println(s4.count); 25 //全部输出的值为8 26 } 27 }
在加载类的过程中为静态变量分配内存,实例变量在创建对象时分配内存,所以静态变量可以使用类名来直接访问,而不需要使用对象来访问.
2121