2016-11-29 8 views
-3
mit

Here I Schlüsselwort static bin mit einem Variable zu instanziiert Und ich rufe die Variable zwei verschiedene Objects.I mit wollen das Ergebnis als 1 und 2 ohne Verwendung des statischen keyword.Thanks im Voraus drucken .Erhöhungsschritte eine Variable ohne statisches Schlüsselwort

public class Test { 
    static int a = 1; 

    public void meth() { 
     System.out.println(a); 
     a = a + 1; 
    } 

    public static void main(String[] args) { 
     Test a = new Test(); 
     Test b = new Test(); 
     a.meth(); //prints 1 
     b.meth(); //prints 2 
    } 

} 
+1

Zuordnung Frage? –

+0

Wenn Sie das Schlüsselwort static, der Wert von a entfernen, ist nicht geteilt länger amon die beiden Instanzen von '' Test''. Daher wird Ihre Ausgabe "1 1" sein, da jede Instanz ihre eigene Zählvariable hat. – f1sh

+1

'a' wird unter allen Instanzen geteilt. Wenn Sie 'static' entfernen, wird es jeder Instanz zugeordnet. Erstellen Sie eine Instanz und rufen Sie zweimal "meth" auf - Der erste Anruf wird 1, der zweite 2 drucken. – Maroun

Antwort

0

Wenn Sie das static Schlüsselwort entfernen, benötigen Sie eine int Variable in zwei Instanzen von Test zu teilen.

Zum Beispiel mit AtomicInteger als wandelbar Wrapper für int und Bereitstellen des Objekts bei der Konstruktion Test:

public class Test { 
    private final AtomicInteger a; 
    // + constructor setting a + getter 

    public void increment() { 
     a.incrementAndGet(); 
    } 

} 

public class Main { 
    public static void main(String[] args) { 
     AtomicInteger i = new AtomicInteger() 
     Test a = new Test(i); 
     Test b = new Test(i); 

     System.out.println(i.get()); // prints 0 
     a.increment(); 
     System.out.println(i.get()); // prints 1 
     b.increment(); 
     System.out.println(i.get()); // prints 2 

    } 
} 
Verwandte Themen