Static关键字
关于static关键字的使用,它可以修饰成员变量和成员方法,被修饰的成员称为类成员。
而不单单属于某一个对象,也就是说,既然属于类,就可以不创建对象去使用。
定义和使用格式:
类变量:
当static修饰成员变量的时候,该变量称为类变量,该类的每一个对象都共享同一个类变量的值,任何的对象可以改变这个类变量,但是也可以在不创建对象的情况对类变量进行操作。
类变量:使用static关键字修饰的成员变量
static 数据类型 变量名;
static int numberId;
比如我们的开新班,学员来报到,现在想为每一个学生报到的时候为学生编号,从第一个同学开始,sid1,依次类推,学号是唯一的一个值,连续的。
public class Student {
private String name;
private int age;
private int sid;
private static int number=0;
public Student(String name,int age){
this.name=name;
this.age=age;
this.sid=++number;
}
public void show(){
System.out.println("student:name="+name+",age="+age+",sid="+sid);
}
}
public class test08 {
public static void main(String[] args) {
Student student=new Student("张三",18);
student.show();
Student student1=new Student("王五",20);
student1.show();
}
}
静态方法:
当static修饰成员方法的时候,该方法成为类方法,静态方法在申明的时候有static,建议使用类名来调用,而不需要创建类的对象,调用方式非常简单。
格式:
其实就是在定义方法的时候,在返回值类型前面加static关键字即可
修饰符 static 返回值类型 方法名(参数列表){
方法体
}
public static void showNum(){
System.out.println(“num:”+number);
}
静态方法调用注意事项:
1、静态方法可以直接访问类变量和静态方法,非静态方法中可以直接访问静态成员和非静态成员
2、静态方法不能直接访问普通的成员方法,反过来,我们成员方法可以在直接访问静态方法。静态方法中只能直接访问静态成员,不能直接访问非静态成员
3、静态方法中,不能是用this关键字
4、静态成员:包含静态成员变量和静态成员方法。非静态成员:包含非静态成员变量和非静态成员方法
静态代码块:
静态代码块:定义在成员变量的位置,使用static关键字修饰的代码块
格式:static{ 代码块 }
执行:随着类的加载而执行且执行一次,优先于main方法和构造方法。第一次使用类的使用就会加载该类,并且只会加载一次
作用:给类变量进行初始化赋值
位置:类中方法外
import java.util.ArrayList;
public class test09 {
public static int number;
public static ArrayList<String> list;
static {
number=2;
list=new ArrayList<>();
list.add("212");
list.add("123");
}
}