static修饰属性
1.1)被static修饰的属性称
静态属性或类属性
1.2)该类的所有对象共享同一个
静态属性的值
1.3)静态属性保存在JVM内存中的
方法区,只保存一份
1.4)使用类名打.调用静态属性
1.5)多个对象共享同一个资源时使用
静态属性
列子:
public class Test {
static String name;
int age;
public void show() {
System.out.println(name);
}
public static void main(String[] args) {
Test t=new Test();
Test.name="gg";//类名打点调用静态属性
t.show();
Test t1=new Test();
t1.show();//两个不同对象名t/t1结果共享一个name
}
}
2.1)被static修饰的方法称为
静态方法或类方法
2.2)静态方法使用类名调用
不需要实例化对象
2.3)静态方法中不能使用类中的
实例成员,因为静态方法中没有
隐式的this
2.4)如果一个方法中不涉及类中的
实例成员,或只涉及静态成员
就可以定义为静态方法
列子:
public class Test {
static String name;//String name
int age;
public static void show() {
System.out.println(name);
//System.out.println(this.name);编译报错静态方法/类方法
}
public static void main(String[] args) {
Test.show();
}
}
3.1)初始化块
在代码中直接编写{}
其中的语句会在构造方法之前运行
3.2)static修饰初始化块
被称为静态初始化块或静态块
3.3)JVM在使用一个类之前要先加载
这个类,如果这个类有静态块
会在加载时运行
JVM在程序运行一次的过程中
只会加载一个类一次.所以导致
静态块也只运行一次
public class Test {
{
System.out.println("初始化块");
}
static {
System.out.println("静态初始化块");
}
String name;
int age;
public Test() {
System.out.println("无参数构造方法");
}
public static void main(String[] args) {
Test t=new Test();//实例化Test类对象
System.out.println();
Test t1=new Test();
}
}
静态初始化块
初始化块
无参数构造方法
初始化块
无参数构造方法