static关键字可以用来修饰类的成员,例如:成员变量,方法,代码块。
- 静态变量
在一个java类中可以使用static关键字修饰成员变量,该变量被称为静态变量。静态变量是被所用示列共享的,可以通过"类名.变量名"来访问。
实例:
public class Student {
static String schoolName;//静态变量
String name;//成员变量
public void print(){
System.out.println("我的名字叫:" + name + ",学校是" + schoolName);
}
public static void main(String[] args) {
//实例化student1,student2两个对象
Student student1 = new Student();
Student student2 = new Student();
student1.name = "张小明";
student2.name = "张小张";
//通过类名.变量名赋值静态变量
Student.schoolName = "北京大学";
student1.print();
student2.print();
}
}
运行结果:
从结果可以看出来静态变量只赋值一次被两个实例对象共享该变量。这是因为静态变量在内存中有切只有一份。注意:static关键字只能修饰成员变量不能修饰局部变量。
public class Student {
static String schoolName;//静态变量
String name;//成员变量
public void print(){
static int age = 10;//编译会报错
System.out.println("我的名字叫:" + name + ",学校是" + schoolName);
}
- 静态方法
我们在类中定义方法时,在方法前面使用static关键字修饰,我们称这种方法为静态方法。静态方法的调用是不需要对象的,调用方式是"类名.方法名"。
实例:
public class Example01 {
public static void main(String[] args) {
Person.print();//通过类名.方法名调用静态方法
}
}
class Person{
//定义一个静态方法
public static void print(){
System.out.println("我是静态方法.....");
}
}
注意:在一个静态方法中只能访问被static修饰的成员,原因是没有被static修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。
- 静态代码块
在java中被大括号围起来的代码就是被称作为代码块。用static关键字修饰的代码块称为静态代码块。当类在加载的时候,静态代码块就会执行,由于类只加载一次,因此静态代码块只会执行一次。
实例:
public class Example02 {
public static void main(String[] args) {
//创建person1,person2两个对象
Person2 person1 = new Person2();
Person2 person2 = new Person2();
}
//静态代码块
static {
System.out.println("测试静态代码块执行了......");
}
}
class Person2{
static String name;
//静态代码块
static {
name = "张小张";
System.out.println("Person类中的代码块执行了......");
}
}
运行结果:
加油吧!!!