当前位置: 技术问答>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()
我的意思是为是么是这个顺序?
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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。