Klassenfeld und Instanzfeld in Java

Shikha Chaudhary 12 Oktober 2023
  1. die lokale Variable in Java
  2. der Eingabeparameter in Java
  3. das Klassenfeld in Java
  4. die Eigenschaften von Klassenfeldern in Java
  5. das Instanzfeld in Java
  6. die Eigenschaften von Instanzfeld in Java
Klassenfeld und Instanzfeld in Java

In diesem Artikel lernen Sie grundlegende Begriffe der Java-Programmiersprache wie lokale Variablen, Eingabeparameter, Klassenfelder und Instanzfelder in Java kennen.

die lokale Variable in Java

Eine Variable, deren Gültigkeitsbereich an den Block, die Methode oder den Konstruktor gebunden ist, wird als lokale Variable bezeichnet. Sagen wir, wir haben eine Methode, Testen.

Wir deklarieren eine val-Variable und weisen dieser Methode 10 zu. Schreiben Sie die print-Anweisung in den main-Block.

public class Experiment {
  public static void testing() {
    int val = 10;
  }

  public static void main(String[] args) {
    // try printing the local variable of the function demo
    System.out.printf("%d", val);
  }
}

Ausgabe:

error: cannot find symbol
      System.out.printf("%d", val);
                              ^
  symbol:   variable val
  location: class Experiment
1 error

Obwohl die Variable val in diesem Code vorhanden ist, erhalten wir einen Fehler. Hier ist die Variable val eine lokale Variable der Methode testing().

Da es innerhalb der Methode testing definiert ist, ist sein Anwendungsbereich begrenzt. Wir erhalten eine Fehlermeldung, wenn die Anweisung print versucht, auf diese Variable außerhalb dieses Gültigkeitsbereichs zuzugreifen.

Deklarieren Sie nun die print-Anweisung innerhalb der Methode testing und rufen Sie die Methode aus dem main-Block auf.

public class Experiment {
  public static void testing() {
    int val = 10;
    System.out.printf("%d", val);
  }

  public static void main(String[] args) {
    // call the method
    testing();
  }
}

Ausgabe:

10

Diesmal greift die print-Anweisung auf die Variable innerhalb ihres Gültigkeitsbereichs zu.

Versuchen Sie nun, die lokale Variable in diesem Code herauszufinden.

public class Treat {
  public static void main(String[] args) {
    for (int i = 0, i < 1; i++) {
      System.out.println("You will get a Cake if you answer correctly!");
    }
  }
}

Die Variable i ist eine lokale Variable. Sein Geltungsbereich ist auf die for-Schleife beschränkt.

Beachten Sie die folgenden Punkte zu lokalen Variablen:

  • Wir können keine Zugriffsmodifikatoren wie public, protected und private verwenden, um lokale Variablen zu deklarieren.
  • Diese Variablen werden intern auf Stack-Ebene implementiert.

der Eingabeparameter in Java

Einige Informationen müssen ausgeführt werden, andere möglicherweise nicht. Sehen Sie sich diese Methode Willkommen an.

public class Greet {
  // a function that does not need any parameter or information
  public static void welcome() {
    System.out.println("Hello, we are happy you visited.");
  }
  public static void main(String[] args) {
    // call the function
    welcome();
  }
}

Ausgabe:

Hello, we are happy you visited.

Wir rufen die Methode auf, ohne ihr irgendwelche Werte zu übergeben. Wir geben keine Informationen zu dieser Methode und sie wird ordnungsgemäß ausgeführt.

public class Test {
  // a function that needs some information/parameter
  public static void hello(int x) {
    int a;
    System.out.println("Hello, we are happy you visited.");
    if (x < 18) {
      a = 18 - x;
      System.out.printf("Please come back after %d years.", a);
    }
  }
  public static void main(String[] args) {
    int age = 2;

    // call the function
    hello(age);
  }
}

Ausgabe:

Hello, we are happy you visited.
Please come back after 16 years.

Die Methode hello wird nicht richtig ausgeführt, wenn wir keinen Wert für age übergeben.

Die Methode erhält diesen Wert durch die in der Klammer definierte Variable x. Die Variable x ist nichts anderes als ein Eingabeparameter oder einfach ein Parameter.

Ein Eingabeparameter oder ein Parameter in Java ist eine Variable, die zum Definieren einer Methode verwendet wird, um die Ausführung der Methode zu unterstützen.

Mischen Sie keine Parameter mit Argumenten. Sie haben denselben Wert, aber sie sind nicht dasselbe.

public class Test {
  // function to add ages
  public static int totalAge(int age1, int age2) {
    return age1 + age2;
  }
  public static void main(String[] args) {
    int a1 = 10;
    int a2 = 12;

    int total = totalAge(a1, a2);
    System.out.println("Sum of ages: " + total);
  }
}

Ausgabe:

Sum of ages: 22

Hier sind age1 und age2 die Eingabeparameter.

das Klassenfeld in Java

Jede Variable innerhalb einer Klasse kann in Java als field bezeichnet werden. Alle Variablen wie price, quantity und name sind Felder.

Beachten Sie jedoch, dass die Variable quantity mit dem Schlüsselwort static beginnt. Solche Felder mit dem Schlüsselwort static in ihrer Definition werden in Java als Klassenfelder bezeichnet.

Klassenfelder werden in Java auch als class-Variablen oder statische Felder bezeichnet.

class Cake {
  int price;
  static int quantity;
  string name;
}

die Eigenschaften von Klassenfeldern in Java

Die folgenden Punkte sind ein Klassenfeld:

  • Ein Klassenfeld muss mit dem Schlüsselwort static deklariert werden.
public static NameOfClass {
  static datatype name_of_variable;
}
  • Viele Instanzen einer Klasse teilen sich das Klassenfeld, und daher sind Klassenfelder speichereffizient. In sehr einfachen Worten ist der Wert eines Instanzfelds für alle Instanzen einer Klasse in Java gleich.
  • Wir können auf ein Klassenfeld in Java zugreifen, indem wir eine Instanz der Klasse und den Klassennamen selbst verwenden. Beachten Sie, dass für den Zugriff auf statische Felder nicht unbedingt eine Instanz erforderlich ist.
class Cake {
  int price;
  static int quantity = 10;
  String name;

  public static void main(String[] args) {
    // create the object of Cake class
    Cake c1 = new Cake();

    // Access the class field using the object
    System.out.println(c1.quantity);

    // Access the class field using the class
    System.out.println(Cake.quantity);
  }
}

Ausgabe:

10
10

Im obigen Beispiel greifen wir auf das Klassenfeld mit einem Objekt zu, das den Operator Punkt wie folgt verwendet: c1.quantity. Um auf die Variable nach Klasse zuzugreifen, verwenden Sie auf ähnliche Weise den Klassennamen Cake.quantity.

das Instanzfeld in Java

public class Cake {
  int cost;
  String flavor;

  public Cake(int cost, String flavor) {
    this.cost = cost;
    this.flavor = flavor;
  }

  public int expense() {
    return cost;
  }

  public static void main(String[] args) {
    Cake cake1 = new Cake(1000, "Choco lava");
    Cake cake2 = new Cake(2000, "Pineapple");

    System.out.println(cake1.expense());
    System.out.println(cake2.expense());
  }
}

Ausgabe:

1000
2000

Innerhalb der Klasse Cake haben wir zwei Variablen – cost und flavor. Wir erstellen cake1 und cake2.

Diese Variablen, die für verschiedene Objekte unterschiedliche Werte annehmen können, werden Instanzvariablen oder Instanzfelder genannt.

die Eigenschaften von Instanzfeld in Java

Die Instanzfelder in Java werden auch als nicht statische Variablen bezeichnet. Hier sind ein paar Punkte zu Instanzfeldern.

  • Instanzfelder werden nicht mit dem static-Schlüsselwort von Java deklariert.
public class ClassName {
  datatype variable_name;
}
  • Sie werden nicht mit allen Instanzen geteilt. Jede Instanz kann ihren eindeutigen Wert für ein Instanzfeld in Java haben.
  • Sie haben gesehen, wie wir mit Hilfe der Klasse selbst auf ein Klassenfeld zugreifen können. Nun, das gilt nicht für ein Instanzfeld in Java. Wir brauchen eine Instanz/ein Objekt, um auf ein Instanzfeld in Java zuzugreifen.
  • Wir können jeden Zugriffsbezeichner mit einem Instanzfeld in Java verwenden. Weitere Informationen zu Feldern in Java finden Sie in dieser Dokumentation.