2017-09-26 179 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