static关键字的作用:
1 静态变量
在定义一个类时,只是在描述某类事物的特征和行为,并没有产生具体的数据。只有通过new关键字创建类的实例对象后,系统才能为每个对象分配空间,存储各自的数据,有时候我们希望某些特定的数据在内存中只有一份,而且被一个类的所有实例所共享,这是java中提供了static关键字来修饰成员变量,给变量被称为静态变量。静态变量被所有实例所共享,可以使用类名.变量名来访问。 如下例:
class Student{
static String schoolName;
}
public class Demo{
public static void mian(String[] args){
Student.schoolName="java";
Student s1=new Student();
Student s2=new Studengt();
Sysotem.out.println("s1.schoolName");
Sysotem.out.println("s2.schoolName");
}
}
运行结果:java
java
注意:static只能用于修饰成员变量,不能用于修饰局部变量,否则编译报错。
2静态代码块
在java类中,用一对大括号括起来的代码称为代码块,用static修饰的代码块称为静态代码块。。当类被加载时静态代码块执行,由于类只加载一次,所以静态代码块只执行一 次。 例:
class Demo {
static{
Sysotem.out.println("静态代码块");
}
public static void mian(String[] args){
Person p1=new Person();
Person p2=new Person();
}
}
class Person{
static{
Sysotem.out.println("person类的静态代码块");
}
}
结果:静态代码块
person类的静态代码块
3静态方法
有时我们希望在不创建对象时就可以调用某个方法,要实现这样的效果,只需要在类中定义的方法前面加上static关键字即可,即为静态方法。例:
class Person{
public void eat(){
Sysotem.out.println("吃饭");
}
class Demo{
public static void main(String[] args){
Person.eat();
}
}
结果:吃饭
4单例模式(饿汉单例设计模式)
class Single{
//自己创建一个对象
private static Single INSTANCE=new Single();
private Single(){ //类的构造方法使用private修饰,这样就不能再类的外部使用new关键字来创建实例对象了。
}
public static Single getInstance(){
return INSTANCE;
}
}
class Demo{
public static void main(String[] args){
Single s1=Single.getInstance();
Single s2=Single.getInstance();
Sysotem.out.println(s1==s2);
}
}
结果:true。
说明只创建了一个对象