java 中, static 关键字修饰的方法或者变量不需要实例就可以访问,只要类被加载了,就可以通过类名去进行访问。
static 修饰变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。
这里直接粘代码:
public class TestStaicVariable {
private static String name = "ll";
public void setName(String value){
name = value;
}
public String getName(){
return name;
}
public static void main(String[] ages){
System.out.println(TestStaicVariable.name);
TestStaicVariable t = new TestStaicVariable();
TestStaicVariable t1 = new TestStaicVariable();
t.setName("lijingou");
System.out.println(TestStaicVariable.name);
System.out.println(t1.getName());
}
/*运行输出的结构lllijingoulijingou*/
}
这里用一句话来形容一下 静态变量:牵一发而动全身 。
static修饰方法
static 方法一般称为静态方法,静态方法不依赖于任何类的实例就可以进行访问,即通过类就可以执行方法。静态方法中不能访问 this 的,因为它不需要实例就可以执行。静态方法需要记住两点:在静态方法中不能访问类的 非静态成员变量和 非静态成员方法。
非静态成员方法中是可以访问 静态成员方法/变量的
粘下代码大家体会一下:
public class TestStaticFunction {
private static String name="lilong";
private int age= 10;
public void ShowName(){
System.out.println(name);
System.out.println("调用静态方法");
Show();
}
public static void Show(){
System.out.println("我是静态方法");
// System.out.println(age); # 报错了 ,静态方法中访问非静态变量 }
public static void main(String[] args){
TestStaticFunction t = new TestStaticFunction();
t.ShowName();
t.Show();
}
/*输出结果:lilong调用静态方法我是静态方法我是静态方法*/
}
static 修饰代码块
static 可以形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。static 代码块的特性:只会在类加载的时候执行一次。代码如下:
public class TestStaticKuai {
static {
System.out.println("我是static 代码块");
System.out.println("只会执行一次在类加载的时候");
}
public static void main(String[] args){
TestStaticKuai t = new TestStaticKuai();
TestStaticKuai t1 = new TestStaticKuai();
TestStaticKuai t2 = new TestStaticKuai();
TestStaticKuai t3 = new TestStaticKuai();
}
/*我是static 代码块只会执行一次在类加载的时候*/
}
关于 static 关键字的介绍就到这里,希望大家可以理解。
下一篇文章我们将讲解如何使用 static 关键字 实现单例模式。
谢谢