爲 static 變量分配空間,設置默認值(準備階段)

話不多說直接上代碼:

package com.beyond.dhl;


class Singleton {
    private static Singleton instance;   // 懶漢式所以不會進行實例化對象

    private Singleton() {
        System.out.println("構造方法:" + Thread.currentThread().getName());
    }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }


}

public class Test {
    public static void main(String[] args) {
        new Thread(() -> Singleton.getInstance(), "線程A").start();
        new Thread(() -> Singleton.getInstance(), "線程B").start();
        new Thread(() -> Singleton.getInstance(), "線程C").start();
        new Thread(() -> Singleton.getInstance(), "線程D").start();
        new Thread(() -> Singleton.getInstance(), "線程E").start();
    }
}

public class Demo01 {
    public static void main(String[] args) {
        int i = 10;  //十進制
        int i2 = 010;  //八進制0
        int i3 = 0x10;  //十六進制0x
        int i4 = 0b10;  //二進制0b

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
    }
}


public class Demo02 {
    public static void main(String[] args) {
        float f = 0.1f;
        double d = 1.0/10;

        System.out.println(f == d);
        System.out.println(f);
        System.out.println(d);

        System.out.println("========================================");

        float d1 = 233333333333333333F;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);
    }
}

public class MyClass {
	static int num;
}
public class Test_MyClass {
	public static void main(String[] args) {
		//可直接通過  類名.屬性名  進行訪問
		MyClass.num=10;
		
		MyClass m1 = new MyClass();
		m1.num=20;
		System.out.println(m1.num);//num=20
		
		MyClass m2 = new MyClass();
		m2.num=30;
		System.out.println(m2.num);//num=30
		System.out.println(m1.num);//num=30
	}
}


package com.soder;
public class Soder1 extends Soders{
	
	public Soder1() {
		p--;
		System.out.println("子類構造方法\t"+p);
	}
	{
		System.out.println("子類代碼塊\t"+p);
	}
	
	static {
		System.out.println("子類靜態代碼塊\t"+p);
	}
	public static void m1() {
		System.out.println("子類靜態指令m1\t"+p);
	}
	public void m2() {
		System.out.println("子類指令m2\t"+p);
	}
}

tips:當類被加載時,類的所有信息(包名,類名,屬性,方法等)都會被加載到方法區,而其中的靜態屬性方法又會被調進靜態域,可通過類名直接調用出來

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章