Unterschied zwischen Sichtbarkeit und Gültigkeit der Variablen in JAVA

  • Hallo,

    ich hab das zwar verstanden was Sichtbarkeit und Gültigkeit der Variablen in JAVA bedeuten aber für mich sind die beide GLEICH??
    Wenn gültig dann sichtbar und wenn sichtbar dann gültig :p

    Wenn mir jem einen Gegenbeispiel zeigen könnte, wäre ich sehr dankbar :thumb:

    Danke :thumb:
    ciao :zwinker:

  • hier ein Beispiel fuer eine Variable, die meiner Meinung nach gueltig, aber nicht sichtbar ist:

    Die variable 'meaning' ist nach dem aufruf [1] solange gueltig, solange eine referenz auf das object, das mit 'new Life()' erzeugt wurde, existiert. Sie kann aber in [2] nicht angesprochen werden, da sie von aussen nicht sichtbar ist.

  • danke für die Antwort aber hab nicht viel verstanden, weil ich mit den Begriffen nichts anfangen kann :shinner: :confused: :ahhh: :rolleyes:

    Zitat von a9bejo

    ....
    Die variable 'meaning' ist nach dem aufruf [1] solange gueltig, solange eine referenz auf das object, das mit 'new Life()' erzeugt wurde, existiert. Sie kann aber in [2] nicht angesprochen werden, da sie von aussen nicht sichtbar ist.

    Danke :thumb:
    ciao :zwinker:

  • Irgendwo habe ich in diesem Zusammenhang einmal etwas von "nicht initialisierten Variablen" gehört.

    z.b.:

    Code
    1:  int i;
    2:  i = i + 1;
    3:  i = 4;
    4:  i = i + 1;


    in Zeile 2 ist die Variable sichtbar aber nicht gültig, da sie noch nicht initialisiert wurde (Initialisierung = erstmalige Wertzuweisung an eine Variable).
    in Zeile 4 ist sie sichtbar und gültig (aber ein Programm, welches diese Codezeilen beinhaltet würde natürlich nicht kompilieren)

  • WwoowW .. besser kann man das nicht erklären :thumb: :thumb: :thumb: DANKE!
    mmhhh... das mit der Gültigkeit hab ich jetzt Supi verstanden aber wann wäre dann eine Variable UNSICHTBAR?? ... oder gibts das gar nicht? :D

    Danke :thumb:
    ciao :zwinker:

  • in einem {}-block definierte variable wäre nur innerhalb des blocks "sichtbar"

    PHP
    public void fubar () { 
     int x =0;
     {
        int y=1;
     }
      System.out.println(x);
      System.out.println(y); /** geht nicht, weil y nur innerhalb der {} sichtbar ist. **/
    }

    2. beispiel

    PHP
    public void fubar () { 
     int x =0;
    for (int i=0;i<2;i++)
     {
        int y=i;
     }
      System.out.println(x);
      System.out.println(y); /** geht nicht, weil y nur innerhalb der {} sichtbar ist. **/
    }

    Otto: Apes don't read philosophy. - Wanda: Yes they do, Otto, they just don't understand
    Beleidigungen sind Argumente jener, die über keine Argumente verfügen.
    «Signanz braucht keine Worte.» | «Signanz gibts nur im Traum.» 

    Das neue MTB-Projekt (PO, Wiki, Mitschriften, Ausarbeitungen, Folien, ...) ist online
    http://mtb-projekt.at

  • ich hab noch eine Variante:

    Code
    public class Foo {
      private int x = 0;
     
      public void test() {
        int x = 99;
        System.out.println(x);
      }
    }



    Ausgabe: 99
    Die Klassenvariable x ist in der Methode test gültig aber nicht sichtbar, sie wird von der lokalen Variable x überdeckt.

    Four stages of acceptance:
    1.) this is worthless nonsense
    2.) this is interesting, but perverse, point of view
    3.) this is true, but quite unimportant
    4.) I alwas said so
    J.B.S. Haldane

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!