codecamp

static

static

非静态的可以访问静态的;
静态的不能访问非静态的。
静态的和类相关;
非静态和对象相关。

1.访问静态成员:

类名.静态成员;
对象名.静态成员;

2.关于带static代码执行顺序:

1 加载类:
    1.1 先将所有的静态属性做默认初始化。
    1.2 根据设置的值做显式的初始化。
    1.3 调用静态代码块。
    注意:系统调用StaticTest的main方法时必须先加载StaticTest类,
        而不是在main方法中StaticTest d才加载StaticTest类。
2 创建对象时:
    2.1 对所有的实例属性做默认的初始化。
    2.2 根据设置的值做显式的初始化。
    2.3 调用构造代码块。
    2.4 调用构造方法(如果有父类,先调用super())
3 系统在堆内存中给对象分配空间,确定对象的首地址。

3.小练习: 其中(1(1.1))代表第1次执行了1.1步骤。

public  class StaticTest {
    public static int i = 0;//(1(1.1))、(5(1.2))
    public static StaticTest s1 = new StaticTest("s1");//(2(1.1))、(6(1.2))
    public static int j = StaticTest.print("i");//(3(1.1))、(12(1.2))
    public static int k = 233;//(4(1.1))、(14(1.2))
    public int x = 10;//(7(2.1))、(8(2.2))、(16(2.1))、(17(2.2))
//  静态代码块:(15(1.3))
    static {
//      会着类的加载而调用,只会调用一次,某些程序中初始化的工作
        System.out.println("调用了静态代码块。");
    }
//  构造代码块:(9(2.3))、(18(2.3))
    {
//      当创建对象的时候会被调用,而且会被调用很多次,取决于创建了几个对象;
//      会在构造器之前调用.
        System.out.println("调用了构造代码块。");
    }
//  构造方法:(10(2.4))、(19(2.4))
    public StaticTest(String string) {
        System.out.println("调用了构造方法。");
        StaticTest.print(string);
    }
//  静态方法(11)、(13)、(20)
    public static int print(String s) {
        System.out.println("---------------");
        System.out.println("调用了静态方法。");
//      局部代码块
        {
//          会产生一个局部作用域
            int i = 233;
            System.out.println("调用了局部代码块。");
        }
        System.out.println(s);
        System.out.println("***************");
        return 666;
    }
    public static void main(String[] args) {
        StaticTest d = new StaticTest("S");
    }
}

4.输出结果:

调用了构造代码块。
调用了构造方法。
---------------
调用了静态方法。
调用了局部代码块。
s1
***************
---------------
调用了静态方法。
调用了局部代码块。
i
***************
调用了静态代码块。
调用了构造代码块。
调用了构造方法。
---------------
调用了静态方法。
调用了局部代码块。
S
***************
main
String
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }