2017-09-26 180 views
1
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 }构造Oput不来

+2

'INT A = 5 ;;'重新初始化在构造器变量'A'。将该行更改为'a = 5;'。查找成员变量及其范围 – XtremeBaumer

+5

请避免添加“快速回复”等内容,但通常不会达到预期的效果。 – Berger

+0

请在格式化,标点符号和拼写方面加倍努力,写这样的帖子对读者是不尊重的。 –

回答

0

这里

Constr(){ 
    int a=5; 
} 

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

1

默认情况下,int基元的实例变量的默认值设置为0 。

现在既然在你的构造你重新声明变量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(); 

    } 
} 
0

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

class Constr { int a;

Constr() 
{ 
    int a=5; 
    this.a = a; 
} 

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

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

}

+0

这不是全球性的。我猜你认为Global的意思是“实例变量”。 Java不支持全局变量:)。 – nagendra547

+0

我的意思是全局var是类自己的,本地var是方法或构造函数自己的var。 – Myo