1、可以修饰属性
1.称为静态属性也叫做类的变量
2.在方法区(共享区)中存储,并且所有对象都可以访问
3.与类同生共死,类存在时static修饰的属性就存在
4.可以使用 类名.属性名称,也可以使用 引用名称.属性名称
注:当引用名称的值为null时,也可以访问静态属性,不会出现空指针异常
5.类优先于对象,类的生命周期比较长
Student03类
public class Student03 {
public Student03() {
}
public Student03(String name) {
this.name = name;
}
String name;//非静态属性,实例变量
static String address = "XX省XX市";//静态属性,类的变量
}
StudentTest03类
public class StudentTest03 {
public static void main(String[] args) {
System.out.println("Student03类直接调用:" + Student03.address);
Student03 stu03 = new Student03("张三");
System.out.println("引用名称调用:" + stu03.name);
System.out.println("引用名称调用:" + stu03.address);
stu03 = null;
System.out.println("引用名称赋值为null时调用:" + stu03.address);
}
}
输出结果为:
2、可以修饰方法
1.称为静态方法也叫做类的方法
2.在方法区(共享区)中存储,并且所有对象都可以访问
3.与类同生共死,类存在时static修饰的方法就存在
4.可以使用 类名.方法名称([参数列表]),也可以使用 引用名称.方法名称([参数列表])
注:当引用名称的值为null时,也可以访问静态方法,不会出现空指针异常
5.静态方法只能访问静态属性、静态方法
6.当方法体中只能访问静态属性、静态方法时,可以编写为静态方法
Student04类
public class Student04 {
public Student04() {
}
public Student04(String name) {
this.name = name;
}
String name;//非静态属性,实例变量
static String address = "XX省XX市";//静态属性,类的变量
//静态方法,也叫类的方法
public static void print01() {
System.out.println("执行了print01方法");
//System.out.println(name);静态方法中只能访问静态属性、静态方法
System.out.println(address);
print03();
}
public static void print03() {
System.out.println("执行了print03方法");
System.out.println(address);
}
//非静态方法,也叫实例方法
public void print02() {
System.out.println("执行了print02方法");
print03();//非静态方法也可以调用静态方法
}
}
StudentTest04类
public class StudentTest04 {
public static void main(String[] args) {
Student04.print01();
System.out.println("分界线--------------------------------");
Student04 stu04 = new Student04();
stu04.print02();
System.out.println("分界线--------------------------------");
//当stu04引用名称赋值为null时,仍然可以调用静态方法
stu04.print01();
}
}
输出结果为:
3、可以修饰代码块
1.主要完成对静态属性赋值
2.静态代码块在类第一次载入时被执行
static {
String address = "XX省XX市";//静态属性,类的变量
}