文章插图
大家好,小跳来为大家解答以上的问题 。java面试题高级,JAVA面试题这个很多人还不知道,现在让我们一起来看看吧!
1、这个是类的初始化顺序问题 类只有在使用New调用创建的时候才会被JAVA类装载器装入 2、JAVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的 , 静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同 。
2、 先初始化父类的静态代码--->初始化子类的静态代码--> 初始化父类的非静态代码--->初始化父类构造函数---> 初始化子类非静态代码--->初始化子类构造函数 3、创建类实例时,首先按照父子继承关系进行初始化 4、类实例创建时候,首先初始化块部分先执行,然后是构造方法;然后从 本类继承的子类的初始化块执行,最后是子类的构造方法 上例中类A类B都有静态代码static从main函数开始: System.out.println(" ");输出空格 A ab = new B();声明为类A但初始化为类B 因为编译器是从左向右进行的,所以先是A ab; 执行System.out.print("1"); 因为没有new A(); 所以不执行类A的构造函数.那为什么会输出2呢? 是因为B类是继承A类的,所是在执行new B(); 的时候,执行顺序是初始化System.out.print("a");然后先父类后子类,static代码只执行一次(已执行过); 执行System.out.print("2");执行System.out.print("b");执行System.out.println(" ");之后是ab = new B(); A,B中的static都已被执行过, 所以只执行构造函数,因B类有父类A,所以先执行A 类的构 造函数System.out.print("2");再执行B类的构造函数 System.out.print("b"); 。
【JAVA面试题 java面试题高级】本文到此分享完毕,希望对大家有所帮助 。
- 月子鞋如何挑选
- 谁知道原汤蚬子面的做法哦
- 苹果11怎么设置指纹解锁 苹果11怎么设置指纹解锁只有面容
- 在哪里打开电脑的USB功能
- 企业并购后整合涉及哪几个方面
- 饺子皮用凉水和面还是冷水 饺子皮用凉水和面还是用温水
- 抖音关注的人在直播为什么上面显示不出来
- 面条过凉水是直接拿自来水冲吗 面条可以用凉水冲吗
- 装修家时 墙面用什么材料好 装修墙面用什么材料经济实惠
- 用酵母发面还用小苏打吗 用酵母发的面还用小苏打吗