1. static可以修饰的内容?
- 可以修饰类变量及方法,随着类加载而加载,不需要创建实例即可获取。
- 可以修饰代码块,同修饰变量及方法。
- 可以修饰类,只能是静态内部类。
2. 其他
- static修饰的变量或方法属于类的静态资源,所有新建的实例共享。
- 静态方法内部不能调用非静态方法,加载顺序不一致。静态资源在类创建时即建立好,非静态方法是在new实例时才进行创建。
- 修饰变量,等同于变量变成了内存地址,无论new多少对象,都是公用一个地址。
- 静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
- 类下面可以有普通类变量及静态类变量,普通类变量需要new对象来获取,而静态类变量只能通过类点的方式。
- 普通类变量每次new对象都会重新赋值,而静态类变量不需要new,故一处改变全局改变。
3. static代码块与普通代码块及构造函数的加载顺序。
package com.fangk.juc;
class Parent{
{System.out.println("父类普通代码块");}
static {System.out.println("父类静态代码块");}
Parent(){System.out.println("父类构造方法");}
}
class Children extends Parent{
{System.out.println("子类普通代码块");}
static {System.out.println("子类静态代码块");}
Children(){System.out.println("子类构造方法");}
}
public class TestNne {
public static void main(String[] args) {
Children children1 = new Children();
System.out.println("============");
Children children = new Children();
}
}
输出结果如下:
父类静态代码块
子类静态代码块
父类普通代码块
父类构造方法
子类普通代码块
子类构造方法
============
父类普通代码块
父类构造方法
子类普通代码块
子类构造方法
4. 静态内部类
待写
网友评论