请各位大侠帮忙分析一下下面的这个程序,详细说明这里this的用法。先谢过了!
publicclassdiaoyong{publicstaticvoidmain(Stringargs[]){newdiaoyong(3L);}publicdiaoyon...
public class diaoyong
{
public static void main(String args[])
{
new diaoyong(3L);
}
public diaoyong(long x)
{
this((int)x);
System.out.println("a");
}
public diaoyong(int x)
{
this();
System.out.println("b");
}
public diaoyong()
{
System.out.println("c");
}
} 展开
{
public static void main(String args[])
{
new diaoyong(3L);
}
public diaoyong(long x)
{
this((int)x);
System.out.println("a");
}
public diaoyong(int x)
{
this();
System.out.println("b");
}
public diaoyong()
{
System.out.println("c");
}
} 展开
3个回答
展开全部
首先你应该明确,下面的3个方法,都是3个重载的构造方法.这个应该没问题吧?
我们从main方法来看.首先main方法里,是new diaoyong(3L); 也就是实例化一个diaoyong类.那么是去找哪个构造方法呢?
因为参数是3L,也就是一个long类型的值,所以程序就跳到public diaoyong(long x)这里了.
这里是关键的this的用法.this本身表示对当前对象的引用,也就是实例化的diaoyong实例.但是在构造函数里,this的作用是调用另外段察一个构造函数.java中在一个构造方法中可以调用一次其他的构造方法,并且这条语句必须在这个构造方法的第一行.
现在再来看this((int)x); 你可以握氏茄分开来看,首先括号里面 (int)x ,这里的x是public diaoyong(long x)的参数:long x,将一个long 类型的参数转成int ,也就是实际上,这一行就相当于作了一个this(3);的调用.
因为是int类型的参数,所以程序就跳转到public diaoyong(int x),这里执行了一个无参构造方法的调用,也就是执行 输出c的动作.这个执行完了,也就是public diaoyong(int x)的核察第一行执行结束,那么执行public diaoyong(int x)的第2行,也就是输出1个b.然后public diaoyong(int x)也结束了,就返回执行public diaoyong(long x)的第二行,也就是输出一个a
你能把这上面的好好理解之后,你也就自己发现了,实际上在构造方法里的this的用法,也是一样的"当前对象的引用"
PS: 一开始学的时候,建议设一个断点,然后一路F5,跟着去理解程序的执行流程.会很容易加深印象.
我们从main方法来看.首先main方法里,是new diaoyong(3L); 也就是实例化一个diaoyong类.那么是去找哪个构造方法呢?
因为参数是3L,也就是一个long类型的值,所以程序就跳到public diaoyong(long x)这里了.
这里是关键的this的用法.this本身表示对当前对象的引用,也就是实例化的diaoyong实例.但是在构造函数里,this的作用是调用另外段察一个构造函数.java中在一个构造方法中可以调用一次其他的构造方法,并且这条语句必须在这个构造方法的第一行.
现在再来看this((int)x); 你可以握氏茄分开来看,首先括号里面 (int)x ,这里的x是public diaoyong(long x)的参数:long x,将一个long 类型的参数转成int ,也就是实际上,这一行就相当于作了一个this(3);的调用.
因为是int类型的参数,所以程序就跳转到public diaoyong(int x),这里执行了一个无参构造方法的调用,也就是执行 输出c的动作.这个执行完了,也就是public diaoyong(int x)的核察第一行执行结束,那么执行public diaoyong(int x)的第2行,也就是输出1个b.然后public diaoyong(int x)也结束了,就返回执行public diaoyong(long x)的第二行,也就是输出一个a
你能把这上面的好好理解之后,你也就自己发现了,实际上在构造方法里的this的用法,也是一样的"当前对象的引用"
PS: 一开始学的时候,建议设一个断点,然后一路F5,跟着去理解程序的执行流程.会很容易加深印象.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询