1.类变量与实例变量
public class Student {
public static String name;
public int age;
}
-
类变量: 属于类 内存中只有一份 被类和所有类对象共享,这里指的是Student类
Student s1 = new Student();
System.out.println(Student.name);
System.out.println(s1.name);
不会产生报错
Student s1 = new Student();
System.out.println(Student.age);
System.out.println(s1.age);
System.out.println(Student.age);
会产生报错 原因是实例变量不能用类方法访问的方式去访问
2.类方法与实例方法
public class A {
public static void printHelloWorld(){
System.out.println("Hello World!");
}
public static void printPass(){
System.out.println("Hello World!");
}
}
A a1 = new A();
System.out.println(A.printHelloWorld);
System.out.println(a1.printHelloWorld);
不会产生报错
A s1 = new A();
System.out.println(A.age);
System.out.println(a1.age);
System.out.println(Student.age);
会产生报错 原因是实例变量不能用类方法访问的方式去访问
3.使用static的注意事项
1. 类方法中可以直接方法类成员,但不可以直接方法实例成员
public static void printName(){
Student.name = "张三";
}
2.实例方法中即可访问类成员,也可直接访问实例成员
public void printName(){
Student.name = "张三";
System.out.println(age);
}
3.实例方法中可以出现this关键字,但类方法中不可以出现this关键字
因为类方法不是属于对象的
报错
public static void printA(){
}
4.静态代码块
-
特点: 类加载时自动执行,由于类只会加载一,所以静态代码块也只会执行一次
-
注意: 在实例化前就会执行,一般用于初始化变量
public class Student{
static{
System.out.println("创建对象");
}
}
执行代码
public static void main(String args[]){
Student s1 = new Student();
Student s2 = new Student();
}
结果:只会打印一次"创建对象"字符串