静态(static)
Java中被static修饰的成员称作静态成员或类成员,属于整个类所有,可以直接使用类名或对象名进行访问
静态方法与静态变量
用static修饰的方法叫做静态方法 ,用static形式的变量叫做 静态变量
以下是使用静态(static)使用的几个需要注意的点:
1、静态方法可以直接调用同类中的静态成员,不能调用非静态成员
2、静态方法可以直接调用同类中的静态方法,不能调用非静态方法
3、普通方法则都可以进行调用
下面通过一段代码解释下:
public class StaticDemo {
static String s = "Hello";
String s1 = " Tom";
public static void main(String[] args) {
StaticDemo sd = new StaticDemo();
System.out.println(StaticDemo.s+sd.s1);//前者为静态变量,可以直接调用,
//后者实例化后通过对象调用
sd.print1();
print2();//静态方法可以被直接调用
}
public void print1(){
System.out.println(s+s1);//普通方法可以直接调用各种成员
}
public static void print2(){
StaticDemo sd = new StaticDemo();
System.out.println(s+sd.s1);
}
}
静态代码块
类加载时的执行顺序:
1、首先执行静态初始化块;
2、然后执行普通初始化块;
3、最后执行构造方法。
上代码
public class StaticDemo2 {
int num1;
int num2;
static int num3;
public StaticDemo2(){ //构造方法
num1 = 1;
System.out.println(num1);
}
{
//普通初始化块
num2 =2;
System.out.println(num2);
}
static{
//静态初始化块
num3 = 3;
System.out.println(num3);
}
public static void main(String[] args) {
StaticDemo2 s1 = new StaticDemo2();
StaticDemo2 s2 = new StaticDemo2();
}
}
那么输出结果是什么呢?
感兴趣的可以自己试一下哦
那么我们可以从上面看出执行顺序
而且静态(static)只可以执行一次
參考 :https://www.imooc.com/article/15626