关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单属于某个对象的。
用 static 关键字修饰的,属于类,就可以不依靠创建对象来调用了。
当 static 修饰成员变量时,该变量称为 类变量。该类的每个对象都共享同一个类变量的值。
任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。
类变量:使用 static 关键字修饰的成员变量。
定义格式:
static 数据类型 变量名;
Demo:
1 public class Student {
2 private String name;
3 private int age;
4 private int sid;
5 private static int numberOfStudent = 0;
6
7 public Student(String name, int age){
8 this.name = name;
9 this.age = age;
10 // 通过 numberOfStudent 给学生分配学号
11 this.sid = ++numberOfStudent;
12 }
13
14 }
当 static 修饰成员方法时,该方法称为 类方法。
静态方法在声明中有 static,建议使用类名来调用,而不需要创建类的对象来调用。
类方法:使用 static 关键字修饰的成员方法,习惯称为 静态方法。
定义格式:
修饰符 static 返回值类型 方法名 (参数列表){
// 执行语句
}
Demo:在上面的 Student 类中定义一个静态方法
1 public static void showNum() {
2 System.out.println("num:" + numberOfStudent);
3 }
注意事项:
小结:静态方法只能访问静态成员,非静态方法即可以访问非静态成员也可以访问静态成员。
被 static 修饰的成员可以并且建议通过 类名直接访问。虽然也可以通过对象名访问静态成员,原因即多个对象均属于一个类,共享使用同一个静态成员,但是不建议,会出现警告信息。
调用格式:
// 访问类变量
类名.类变量名;
// 调用静态方法
类名.静态方法名(参数);
static 修饰的内容:
图解:
静态代码块:定义在成员位置,使用 static 修饰的代码块 { }。
位置:类中方法外。
执行:随着类的加载而执行切执行一次,优先于 main 方法和构造方法的执行。
特点:当第一次用来本类时,静态代码块执行唯一的一次。
定义格式:
public class ClassName{
static {
// 静态代码块的内容
}
}
作用:用来一次性给静态成员变量进行初始化赋值。
Demo:
1 public class Game {
2 public static int number;
3 public static ArrayList<String> list;
4 static {
5 // 给类变量赋值
6 number = 2;
7 list = new ArrayList<String>();
8 // 添加元素到集合中
9 list.add("张三");
10 list.add("李四");
11 }
12 }
小结:static 关键字,可以修饰变量、方法和代码块。在使用的过程中,其主要目的还是想在不创建对象的情况下,去调用方法。
原文:https://www.cnblogs.com/niujifei/p/11353244.html