【问题标题】:Constructor Oput Not Coming构造函数输出未出现
【发布时间】:2018-03-07 06:47:20
【问题描述】:
class Constr
{
    int a;

    Constr()
    {
        int a=5;;
    }

    public void sd()
    {
        System.out.println(a);
    }

    public static void main()
    {       
        Constr obj=new Constr();
        obj.sd();       
    }
}

当我们运行这段代码时,我们会得到一个输出:{ 0 }

【问题讨论】:

  • int a=5;; 在构造函数中重新初始化变量a。将行更改为a=5;。查找成员变量及其作用域
  • 请避免添加“快速回复”之类的内容,通常不会达到预期的效果。
  • 请在格式、标点和拼写上多下功夫,写这样的帖子是对读者的不尊重。

标签: java bluej


【解决方案1】:

int 原语的实例变量的默认值设置为 0 默认情况下。

现在,由于您在构造函数中重新声明变量 a 而不是将值分配给实例变量,因此您无法获得所需的输出(即变量 a 的值应设置为 0)。

相反,试试这个:

 class Constr {
  int a;
  Constr() {
   a = 5; // Assigning the value to the instance variable.

  }

  public void sd() {
   System.out.println(a);
  }

  public static void main() {

   Constr obj = new Constr();
   obj.sd();

  }
 }

【讨论】:

    【解决方案2】:

    这里

    Constr(){
        int a=5;  
    }
    

    您创建了一个新变量,而不是将 5 分配给您在外部创建的变量。删除声明,只留下a=5

    【讨论】:

      【解决方案3】:

      全局变量和局部变量是不同的。在类中,未初始化“a”是全局变量,而在构造函数中“a”是局部变量。如果需要显示局部变量值 5 。修改如下。

      类构造 { 一个;

      Constr()
      {
          int a=5;
          this.a = a;
      }
      
      public void sd()
      {
          System.out.println(a);
      }
      
      public static void main()
      {       
          Constr obj=new Constr();
          obj.sd();       
      }
      

      }

      【讨论】:

      • 它不是全球性的。我猜你所说的 Global 作为“实例变量”是什么意思。 Java 不支持全局变量 :)。
      • 我的意思是全局变量是类自己的,本地变量是方法或构造函数自己的变量。
      猜你喜欢
      • 2015-09-03
      • 2014-03-12
      • 1970-01-01
      • 2013-11-07
      • 2016-11-15
      • 1970-01-01
      • 2014-11-29
      • 2014-11-17
      • 2016-11-08
      相关资源
      最近更新 更多