话不多说直接上代码:
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:当类被加载时,类的所有信息(包名,类名,属性,方法等)都会被加载到方法区,而其中的静态属性方法又会被调进静态域,可通过类名直接调用出来