黑马程序员技术交流社区

标题: 关于this关键字的使用问题 [打印本页]

作者: 梦龙0201    时间: 2015-9-6 09:19
标题: 关于this关键字的使用问题
昨天跟同桌创建了一个关于构造方法的小程序,类里面有一个无参构造函数,一个int类型的构造函数,一个String类型的构造函数;由于关于构造函数互相调用只能放在第一行,无参调用了int类型的构造函数,int 调用了String类型的构造函数,程序可以输出三个函数对应的输出语句;但是当无参调用Sting类型,int调用无参构造函数,输出结果却是int的语句不能输出。这是什么原因
作者: 史柯    时间: 2015-9-6 10:08
楼主把代码贴出来
你这样我也看不太明白
作者: Ralap军    时间: 2015-9-6 11:08
这应该就是你说的第一种情况:能正常输出
  1. class Demo {
  2.         Demo(){
  3.                 this(8);
  4.                 System.out.println("这是无参构造");
  5.         }
  6.         Demo(int num){
  7.                 this("s");
  8.                 System.out.println("这是int类型构造");
  9.         }
  10.         Demo(String str){
  11.                 System.out.println("这是String类型构造");
  12.         }
  13. }
  14. class Test {
  15.         public static void main(String[] args){
  16.                 new Demo();
  17.         }
  18. }
复制代码

而这是第二种情况:
  1. class Demo {
  2.         Demo(){
  3.                 this("s");
  4.                 System.out.println("这是无参构造");
  5.         }
  6.         Demo(int num){
  7.                 this();
  8.                 System.out.println("这是int类型构造");
  9.         }
  10.         Demo(String str){
  11.                 System.out.println("这是String类型构造");
  12.         }
  13. }
  14. class Test {
  15.         public static void main(String[] args){
  16.                 new Demo();
  17.         }
  18. }
复制代码

因为创建对象使用的是无参构造,进入无参构造后,先执行String构造,再回到自身执行无参构造的语句。
int构造就没有执行到。
如果你要全部都执行一次,可以再创建对象时,穿入一个int类型参数,使用new Demo(8);
作者: purgatory    时间: 2015-9-6 13:39
int 完全没有调用到
作者: mah707    时间: 2015-9-6 15:55
是不是死循环了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2