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