java中static关键字
static可以修饰成员变量、成员方法,被修饰的成员属于类。被static修饰的成员变量、成员方法随类的加载而加载,只加载一次;存储在静态区;先于对象存在。
-
修饰成员变量
static修饰的成员变量,称为类变量。每个对象共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。类变量一般使用
类名.变量名
的方式访问。public class Test{ public static void main(String [] args){ Student.stuCount = 1; System.out.println("Total number of students " + Student.stuCount); // 1 Student stu0 = new Student("jack"); Student stu1 = new Student("tom"); System.out.println("Total number of students " + Student.stuCount); // 3 } } public class Student { public static int stuCount; private String name; public Student() { stuCount += 1; } public Student(String name) { this.name = name; stuCount += 1; } }
-
修饰成员方法
static修饰的方法,称为类方法(习惯称为静态方法)。静态方法一般使用
类名.方法名
的方式掉用// 在Student类中定义静态方法 public static void show () { System.out.println("Total number of students " + Student.stuCount); }
注意:
- 静态方法可以直接访问类变量和静态方法
- 静态方法 不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
- 静态方法中,不能使用 this关键字。
-
修饰代码块
static修饰的代码块称为静态代码块。静态代码块定义在定义成员的地方。
public class Test { static { System.out.println("静态代码块"); } { System.out.println("代码块"); } } public class Main { public static void main(String[] args) { new Test(); new Test(); // 静态代码 代码块 代码块 } }
静态代码块随着类的加载而执行,且只执行一次。执行优先与main和构造方法。
非static代码块在类实例化之前执行,每次实例化都执行。
本文来自博客园,作者:遥远的相似性,转载请注明原文链接:https://www.cnblogs.com/z212021/p/13874444.html