Aktionen

Variable Typen

Aus Java Tutorial - Java lernen

Eine Variable bietet uns einen benannten Speicherplatz, den unsere Programme manipulieren können. Jede Variable in Java hat einen bestimmten Typ, der die Größe und das Layout des Speichers der Variable, den Wertebereich, der in diesem Speicher gespeichert werden kann, und den Satz von Operationen, die auf die Variable angewendet werden können, bestimmt.

Sie müssen alle Variablen deklarieren, bevor diese verwendet werden können. Es folgt die Grundform einer Variablendeklaration:

data type variable [ = value][, variable [ = value] ...] ;

Hier ist der Datentyp einer von Javas Datentypen und 'variable' ist der Name der Variable. Um mehr als eine Variable des angegebenen Typs zu deklarieren, können Sie eine kommagetrennte Liste verwenden.

Nachfolgend finden Sie gültige Beispiele für die Deklaration und Initialisierung von Variablen in Java:

Beispiel

int a, b, c;         // Deklariert drei Ints: a, b und c
int a = 10, b = 10;  // Beispiel einer Initialisierung
byte B = 22;         // Initialisiert eine Variable vom Byte-Typ B.
double pi = 3.14159; // deklariert und weist einen Wert von PI zu.
char a = 'a';        // die char-Variable a ist mit dem Wert 'a' initialisiert

In diesem Kapitel werden verschiedene Variablentypen erläutert, die in der Sprache Java verfügbar sind. Es gibt drei Arten von Variablen in Java:

  • Lokale Variablen
  • Instanzvariablen
  • Klasse/Statische Variablen

Lokale Variablen

  • Lokale Variablen werden in Methoden, Konstruktoren oder Blöcken deklariert.
  • Lokale Variablen werden bei der Eingabe der Methode, des Konstruktors oder des Blocks erstellt, und die Variable wird zerstört, sobald sie die Methode, den Konstruktor oder den Block verlässt.
  • Zugriffsmodifikatoren können nicht für lokale Variablen verwendet werden.
  • Lokale Variablen sind nur innerhalb der deklarierten Methode, des Konstruktors oder des Blocks sichtbar.
  • Lokale Variablen werden intern auf Stack-Ebene implementiert.
  • Es gibt keinen Standardwert für lokale Variablen, daher sollten lokale Variablen deklariert und vor der ersten Verwendung ein Initialwert zugewiesen werden.

Beispiel

Hier ist das Alter eine lokale Variable. Diese wird innerhalb der Methode pupAge() definiert und ihr Anwendungsbereich ist auf diese Methode beschränkt.

public class Test {
   public void pupAge() {
      int age = 0;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

Dies wird zu folgendem Ergebnis führen:

Ausgabe

Puppy age is: 7

Beispiel

Das folgende Beispiel verwendet das Alter, ohne es zu initialisieren, so dass es zum Zeitpunkt der Kompilierung einen Fehler ergeben würde.

public class Test {
   public void pupAge() {
      int age;
      age = age + 7;
      System.out.println("Puppy age is : " + age);
   }

   public static void main(String args[]) {
      Test test = new Test();
      test.pupAge();
   }
}

Dies führt beim Kompilieren zu folgendem Fehler:

Ausgabe

Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

Instanzvariablen

  • Instanzvariablen werden in einer Klasse deklariert, aber außerhalb einer Methode, eines Konstruktors oder irgendeines Blocks.
  • Wenn ein Platz für ein Objekt im Heap zugewiesen wird, wird ein Slot für jeden Instanzvariablenwert erzeugt.
  • Instanzvariablen werden erzeugt, wenn ein Objekt mit dem Schlüsselwort "new" erzeugt wird, und zerstört, wenn das Objekt zerstört wird.
  • Instanzvariablen enthalten Werte, die von mehr als einer Methode, einem Konstruktor oder Block referenziert werden müssen, oder wesentliche Teile des Zustands eines Objekts, die in der gesamten Klasse vorhanden sein müssen.
  • Instanzvariablen können vor oder nach der Verwendung auf Klassenebene deklariert werden.
  • Zugriffsmodifikatoren können beispielsweise Instanzvariablen angegeben werden.
  • Die Instanzvariablen sind für alle Methoden, Konstruktoren und Blöcke in der Klasse sichtbar. Normalerweise wird empfohlen, diese Variablen privat zu machen (Zugriffsebene). Die Sichtbarkeit für Unterklassen kann jedoch für diese Variablen durch die Verwendung von Zugriffsmodifikatoren gegeben werden.
  • Instanzvariablen haben Standardwerte. Für Zahlen ist der Standardwert 0, für Booleans ist er falsch, und für Objektreferenzen ist er null. Werte können während der Deklaration oder innerhalb des Konstruktors zugewiesen werden.
  • Auf Instanzvariablen kann direkt durch Aufruf des Variablennamens innerhalb der Klasse zugegriffen werden. Innerhalb statischer Methoden (wenn Instanzvariablen zugänglich gemacht werden) sollten sie jedoch unter Verwendung des voll qualifizierten Namens aufgerufen werden. ObjektReferenz.VariablenName.

Beispiel

Live Demo

import java.io.*;
public class Employee {

   // Diese Instanzvariable ist für jede Unterklasse sichtbar.
   public String name;

   // Die Variable salary ist nur in der Klasse Employee sichtbar.
   private double salary;

   // Die Variable name wird im Konstruktor zugewiesen.
   public Employee (String empName) {
      name = empName;
   }

   // Der Variable salary wird ein Wert zugewiesen.
   public void setSalary(double empSal) {
      salary = empSal;
   }

   // Diese Methode gibt die Detail des Employees aus
   public void printEmp() {
      System.out.println("name  : " + name );
      System.out.println("salary :" + salary);
   }

   public static void main(String args[]) {
      Employee empOne = new Employee("Ransika");
      empOne.setSalary(1000);
      empOne.printEmp();
   }
}

Dies wird zu folgendem Ergebnis führen:

Ausgabe

name  : Ransika
salary :1000.0

Klasse/Statische Variablen

  • Klassenvariablen, auch als statische Variablen bekannt, werden mit dem Schlüsselwort static in einer Klasse deklariert, jedoch außerhalb einer Methode, eines Konstruktors oder eines Blocks.
  • Es gäbe nur eine Kopie jeder Klassenvariablen pro Klasse, unabhängig davon, wie viele Objekte daraus erzeugt werden.
  • Statische Variablen werden nur selten verwendet, es sei denn, sie werden als Konstanten deklariert. Konstanten sind Variablen, die als öffentlich/privat, final und statisch deklariert sind. Konstante Variablen ändern sich nie von ihrem Anfangswert.
  • Statische Variablen werden im statischen Speicher gespeichert. Es ist selten, statische Variablen zu verwenden, die nicht als final deklariert sind und entweder als öffentliche oder private Konstanten verwendet werden.
  • Statische Variablen werden beim Start des Programms erstellt und beim Stoppen des Programms zerstört.
  • Die Sichtbarkeit ist ähnlich wie bei Instanzvariablen. Die meisten statischen Variablen werden jedoch als öffentlich deklariert, da sie für Benutzer der Klasse verfügbar sein müssen.
  • Standardwerte sind den Instanzvariablen gleich. Für Zahlen ist der Standardwert 0, für Booleans ist er falsch und für Objektreferenzen ist er null. Werte können während der Deklaration oder innerhalb des Konstruktors zugewiesen werden. Zusätzlich können Werte in speziellen statischen Initialisierungsblöcken zugewiesen werden.
  • Auf statische Variablen kann durch Aufruf mit dem Klassennamen ClassName.VariableName zugegriffen werden.
  • Wenn Klassenvariablen als öffentliches statisches Finale deklariert werden, dann sind Variablennamen (Konstanten) alle in Großbuchstaben. Wenn die statischen Variablen nicht öffentlich und endgültig sind, ist die Namenssyntax die gleiche wie bei Instanz- und lokalen Variablen.

Beispiel

import java.io.*;
public class Employee {

   // Die Variable salary ist eine private und statische Variable
   private static double salary;

   // DEPARTMENT ist eine Konstante
   public static final String DEPARTMENT = "Development ";

   public static void main(String args[]) {
      salary = 1000;
      System.out.println(DEPARTMENT + "average salary:" + salary);
   }

Dies wird zu folgendem Ergebnis führen:

Ausgabe

Development average salary:1000

Hinweis - Wenn auf die Variablen von einer externen Klasse zugegriffen wird, sollte auf die Konstante als Mitarbeiter.ABTEILUNG zugegriffen werden