类的加载过程三:Initialization
生活随笔
收集整理的這篇文章主要介紹了
类的加载过程三:Initialization
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package com.leon.java;public class ClassInitTest {private static int num = 1;static{num = 2;number = 20;System.out.println(num);//System.out.println(number);//報錯:非法的前向引用。}private static int number = 10; //linking之prepare: number = 0 --> initial: 20 --> 10public static void main(String[] args) {System.out.println(ClassInitTest.num);//2System.out.println(ClassInitTest.number);//10}
}
package com.leon.java;public class ClinitTest {//任何一個類聲明以后,內部至少存在一個類的構造器private int a = 1;private static int c = 3;public static void main(String[] args) {int b = 2;}public ClinitTest(){a = 10;int d = 20;}}
package com.leon.java;public class ClinitTest1 {static class Father{public static int A = 1;static{A = 2;}}static class Son extends Father{public static int B = A;}public static void main(String[] args) {//加載Father類,其次加載Son類。System.out.println(Son.B);//2}
}
package com.leon.java;public class DeadThreadTest {public static void main(String[] args) {Runnable r = () -> {System.out.println(Thread.currentThread().getName() + "開始");DeadThread dead = new DeadThread();System.out.println(Thread.currentThread().getName() + "結束");};Thread t1 = new Thread(r,"線程1");Thread t2 = new Thread(r,"線程2");t1.start();t2.start();}
}class DeadThread{static{if(true){System.out.println(Thread.currentThread().getName() + "初始化當前類");while(true){}}}
}
?
總結
以上是生活随笔為你收集整理的类的加载过程三:Initialization的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类的加载过程二:Linking
- 下一篇: 几种类加载器的使用体会