A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梦龙0201 中级黑马   /  2015-9-6 09:19  /  719 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

昨天跟同桌创建了一个关于构造方法的小程序,类里面有一个无参构造函数,一个int类型的构造函数,一个String类型的构造函数;由于关于构造函数互相调用只能放在第一行,无参调用了int类型的构造函数,int 调用了String类型的构造函数,程序可以输出三个函数对应的输出语句;但是当无参调用Sting类型,int调用无参构造函数,输出结果却是int的语句不能输出。这是什么原因

4 个回复

倒序浏览
楼主把代码贴出来
你这样我也看不太明白
回复 使用道具 举报
这应该就是你说的第一种情况:能正常输出
  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);
回复 使用道具 举报
int 完全没有调用到
回复 使用道具 举报
是不是死循环了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马