• 为 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("子类构造方法	"+p);
    	}
    	{
    		System.out.println("子类代码块	"+p);
    	}
    	
    	static {
    		System.out.println("子类静态代码块	"+p);
    	}
    	public static void m1() {
    		System.out.println("子类静态指令m1	"+p);
    	}
    	public void m2() {
    		System.out.println("子类指令m2	"+p);
    	}
    }
    

    tips:当类被加载时,类的所有信息(包名,类名,属性,方法等)都会被加载到方法区,而其中的静态属性方法又会被调进静态域,可通过类名直接调用出来

  • 相关阅读:
    BZOJ3672/UOJ7 [Noi2014]购票
    POJ3718 Facer's Chocolate Dream
    BZOJ1453:[WC]Dface双面棋盘
    BZOJ2957:楼房重建
    AtCoder Grand Contest 009 D:Uninity
    BZOJ2877:[NOI2012]魔幻棋盘
    BZOJ3065:带插入区间K小值
    BZOJ3489:A simple rmq problem
    浅谈主席树
    AtCoder Regular Contest 080 E:Young Maids
  • 原文地址:https://www.cnblogs.com/java1024/p/14375838.html
Copyright © 2020-2023  润新知