public class Text
{
public static void main(String args[])
{
new Text(2L);
}
public Text(int x)
{
this();
System.out.print(x*3);
}
public Text(long x)
{
this((int)x);
System.out.print(x);
}
public Text()
{
System.out.print("A");
}
}
为什么程序执行出来是A62,而不是62A呢?
解决方案 »
- 关于Java 泛型 ?extends T的问题,搞不清楚
- 工程发布 高分帮忙?
- 如何从JAVA中取得特定文件的创建日期时间???
- 请问网络游戏自动补血,如何实现,请哪儿入手?
- 为什么我用import org.dom4j.Document;它报错呢?我用的是MyEclipes
- getTableCellRendererComponent 疑问
- 请教实现人机对战的五子棋的α-β剪枝算法代码,最好有注释,急用救命!
- 在股票分析模拟系统中关于选择无状态的Session Bean or有状态的Session Bean 还是实体Bean的问题
- 【怎样设置JOptionPane的外观??】
- 关于JAVA的打印问题
- 正则表达式
- 大伙都使用什么IDE编写JAVA?
根据参数类型判断,先调用public Text(long x)
该方法调用this((int)x);即public Text(int x)
这个方法又调用this();即public Text()
所以先System.out.print("A");
然后执行System.out.print(x*3);
再执行System.out.print(x);
A ->2*3 -> 2
最后输出A62
{
public static void main(String args[])
{
new Text(2L); //1:调用Text(Long x)转向2
}
public Text(int x) //3:执行
{
this(); //调用无参构造 转向4
System.out.print(x*3);//5: 输出X*3=6 回到2 执行2后面的语句
public Text(long x) //2:执行
{
this((int)x); //调用Text(int x) 转向3
System.out.print(x); //6:输出X=2 -- 程序结束
}
public Text() //4执行--输出'A' 回到3执行3后的语句
{
System.out.print("A");
}
}
{
public static void main(String args[])
{
new Text(2L); //第一步 ,进入Text(long x)
}
public Text(int x)
{
this(); //第三步,进入Text()
System.out.print(x*3); //第五步
}
public Text(long x)
{
this((int)x); //第二步,进入Text(int x)
System.out.print(x); //第六步
}
public Text()
{
System.out.print("A"); //第四步
}
}详细说明:
首先进入main函数体
执行new Text(2L),因为传入的是long类型参数,因此进入Text(long x)构造方法:
public Text(long x)
{
this((int)x);
System.out.print(x);
}
执行Text(long x)方法中第一句this((int)x),调用参数类型为int的构造方法,因此进入Text(int x)方法:
public Text(int x)
{
this();
System.out.print(x*3);
}
执行Text(int x)方法第一句this()调用无参构造方法Text(),打印"A";
Text(int x)第一句执行完毕,然后执行Text(int x)方法第二句,打印"6";
Text(long x)第一句执行完毕,然后执行Text(long x)方法第二句,打印"2".
执行完毕!