当前位置:  技术问答>java相关

难题

    来源: 互联网  发布时间:2015-07-04

    本文导语:  请问这段程序为十么结果是这样的 package myprojects.orderofinitialization; class Tag{ Tag(int marker){ System.out.println("Tag("+marker+")"); } } class Card{ Tag t1=new Tag(1); Card(){ System.out.println("Card()"); t3=new Tag(33); } Tag t2=new Tag(2)...

请问这段程序为十么结果是这样的
package myprojects.orderofinitialization;

class Tag{
Tag(int marker){
System.out.println("Tag("+marker+")");
}
}
class Card{
Tag t1=new Tag(1);
Card(){
System.out.println("Card()");
t3=new Tag(33);
}
Tag t2=new Tag(2);
void f(){
System.out.println("f()");
}
Tag t3=new Tag(3);
}
public class OrderOfInitialization{
public static void main(String[] args){
Card t=new Card();
t.f();
}
}
结果:
Tag(1)
Tag(2)
Tag(3)
Card()
Tag(33)
f()
我的意思是为是么是这个顺序?

|

Card t=new Card();
实例化一个class Card的时候,首先是运行的这个Class的外部变量的定义(顺序为静态变量先,其它按语句出现顺序),
此处无静态变量什么的,即按顺序执行为:
Tag t1=new Tag(1);
Tag t2=new Tag(2);
Tag t3=new Tag(3);
外部变量定义完成后
再执行构造函数Card() -->执行t3=new Tag(33);
完毕,回到main方法,执行t.f()
所以最终执行顺序是
Tag(1)
Tag(2)
Tag(3)
Card()
Tag(33)
f()
其实你可以试着改变一些东西看看执行顺序又是如何,比如Tag t2=new Tag(2);改为static Tag t2=new Tag(2);等

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3