話不多說直接上代碼:
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:當類被加載時,類的所有信息(包名,類名,屬性,方法等)都會被加載到方法區,而其中的靜態屬性方法又會被調進靜態域,可通過類名直接調用出來