前言:
今天小伙伴们对“javay”大致比较注意,同学们都想要分析一些“javay”的相关知识。那么小编也在网络上汇集了一些对于“javay””的相关内容,希望看官们能喜欢,姐妹们快快来学习一下吧!————下课后————
结论
类的加载顺序。
(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )(4) 父类构造函数(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )(6) 子类构造函数
例子1
运行下面代码,输出的结果是()
class A { public A() {//构造函数 System.out.println("class A"); } { //代码块 System.out.println("I'm A class"); } static { //静态代码块 System.out.println("class A static"); }}public class B extends A { public B() {//构造函数 System.out.println("class B"); } { //代码块 System.out.println("I'm B class"); } static { System.out.println("class B static"); } //静态代码块 public static void main(String[] args) { new B(); }}
A
class A static class B static I'm A class class AI'm B class class B
B
class A staticI'm A classclass Aclass B staticI'm B classclass B
C
class A staticclass B staticclass AI'm A class class BI'm B class
D
class A staticclass AI'm A classclass B staticclass BI'm B class
例子2
class Print{ Print(){ System.out.println("haha"); }}public class Cats { static { System.out.println("static Casts"); } static Print test1 = new Print();}class qiaoGeli extends Cats{ public static void main(String [] args) { qiaoGeli t1 = new qiaoGeli(); }}
以上程序输出:
static Castshaha
换一下静态变量和静态代码块的执行顺序。
class Print{ Print(){ System.out.println("haha"); }}public class Cats { static Print test1 = new Print(); static { System.out.println("static Casts"); }}class qiaoGeli extends Cats{ public static void main(String [] args) { qiaoGeli t1 = new qiaoGeli(); }}以上程序输出:hahastatic Casts
例子3
class Print{ Print(){ System.out.println("haha"); }}public class Cats { Print test = new Print(); Cats(){ System.out.println("I'm qiaoGeLi"); } { System.out.println("I'm xiaoMeng"); } public static void main(String [] args) { Cats cat = new Cats(); }}
以上程序输出:
hahaI'm xiaoMengI'm qiaoGeLi
例子4
class Print{ Print(){ System.out.println("haha"); }}public class Cats { Cats(){ System.out.println("I'm qiaoGeLi"); } { System.out.println("I'm xiaoMeng"); } Print test = new Print(); public static void main(String [] args) { Cats cat = new Cats(); }}
以上程序输出:
I'm xiaoMenghahaI'm qiaoGeLi
结论
类的执行顺序。
(1)父类静态变量和静态代码块(先声明的先执行);(2)子类静态变量和静态代码块(先声明的先执行);(3)父类的非静态属性(变量)和非静态代码块(先声明的先执行);(4)父类构造函数(5)子类的非静态属性(变量)和非静态代码块(先声明的先执行);(6) 子类构造函数
小萌:乔哥辛苦了,给你按摩!
这篇文章和小编写的一篇原创文章很类似,比这篇文章多了一些内容
让你清清楚楚理解Java中成员变量,代码块,构造函数的加载顺序
作者:乔戈里qgl原文:转载自公众号,程序员乔戈里,已获作者授权
标签: #javay