2017-09-26 6 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();  
    } 
} 

Quand nous courons ce code, nous obtenons une sortie: { 0 }Constructor Oput Not Coming

+2

'int a = 5 ;;' initialiser la variable 'dans le contructor a'. changez la ligne en 'a = 5;'. recherche variable membre et leur portée – XtremeBaumer

+5

S'il vous plaît éviter d'ajouter des choses comme "répondre rapidement", il n'aura généralement pas l'effet désiré. – Berger

+0

S'il vous plaît mettre plus d'effort dans votre mise en forme, la ponctuation et l'orthographe, l'écriture de tels messages est irrespectueux pour les lecteurs. –

Répondre

0

Ici

Constr(){ 
    int a=5; 
} 

vous créez une nouvelle variable au lieu d'attribuer 5 à celui que vous avez créé à l'extérieur. Supprimez la déclaration, en laissant juste a=5.

1

La valeur par défaut de la variable d'instance de primitive est fixé un int 0 à par défaut.

Maintenant, puisque dans votre Constructor vous redéclarant la variable a au lieu d'attribuer la valeur à la variable d'instance, vous ne recevez pas votre sortie désirée (à savoir la valeur de la variable d'un doit être réglé sur 0).

Au lieu de cela, essayez ceci:

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

variable globale et variable locale est différente. En classe, non initialiser "a" est global et dans le constructeur "a" est variable locale. Si vous devez afficher la valeur de la variable locale 5. Modifié le suivant.

classe 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

Ce n'est pas global. Je suppose que vous vouliez dire ce que Global entendait par «variable d'instance». Java ne supporte pas la variable globale :). – nagendra547

+0

je veux dire global var est propre à la classe et local var est la méthode ou le constructeur propre var. – Myo