In der Java-Sprache müssen alle Variablen vor der Verwendung deklariert werden. Das Grundformat für die Deklaration von Variablen ist wie folgt:
type identifier [ = value][, identifier [= value] ...] ;
Formatbeschreibung: Typ ist ein Java-Datentyp. Bezeichner ist der Variablenname. Mehrere Variablen desselben Typs können durch Kommas getrennt deklariert werden.
Nachfolgend sind einige Beispiele für Variablendeklarationen aufgeführt. Beachten Sie, dass einige einen Initialisierungsprozess beinhalten.
int a, b, c; // 声明三个int型整数:a、b、c。 int d = 3, e, f = 5; // 声明三个整数并赋予初值。 byte z = 22; // 声明并初始化z。 double pi = 3.14159; // 声明了pi。 char x = 'x'; // 变量x的值是字符'x'。
Die von der Java-Sprache unterstützten Variablentypen sind:
- Lokale Variablen: Variablen in Methoden einer Klasse.
- Instanzvariablen: Methodenunabhängige Variablen, jedoch ohne statische Modifikation.
- Klassenvariablen: Methodenunabhängige Variablen, die mit Static modifiziert werden.
public class Variable{ static int allClicks=0; // 类变量String str="hello world"; // 实例变量public void method(){ int i =0; // 局部变量} }
Lokale Java-Variablen
- Lokale Variablen werden in Methoden, Konstruktoren oder Anweisungsblöcken deklariert;
- Lokale Variablen werden erstellt, wenn Methoden, Konstruktoren oder Anweisungsblöcke ausgeführt werden. Bei ihrer Ausführung werden die Variablen zerstört.
- Zugriffsmodifikatoren können nicht für lokale Variablen verwendet werden;
- Lokale Variablen sind nur in der Methode, dem Konstruktor oder dem Anweisungsblock sichtbar, in der sie deklariert sind.
- Lokale Variablen werden auf dem Stapel zugewiesen.
- Lokale Variablen haben keinen Standardwert. Nachdem eine lokale Variable deklariert wurde, muss sie daher initialisiert werden, bevor sie verwendet werden kann.
Beispiel 1
Im folgenden Beispiel ist „Alter“ eine lokale Variable. Es wird in der pupAge()-Methode definiert und sein Geltungsbereich 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(); } }
Die Kompilierungs- und Ausführungsergebnisse des obigen Beispiels lauten wie folgt:
Puppy age is: 7
Beispiel 2
Im folgenden Beispiel ist die Altersvariable nicht initialisiert, sodass beim Kompilieren ein Fehler auftritt.
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(); } }
Die Kompilierungs- und Ausführungsergebnisse des obigen Beispiels lauten wie folgt:
Test.java:4:variable number might not have been initialized age = age + 7; ^ 1 error
Instanzvariablen
- Instanzvariablen werden innerhalb einer Klasse deklariert, jedoch außerhalb von Methoden, Konstruktoren und Anweisungsblöcken;
- Wenn ein Objekt instanziiert wird, wird der Wert jeder Instanzvariablen bestimmt;
- Instanzvariablen werden erstellt, wenn das Objekt erstellt wird, und zerstört, wenn das Objekt zerstört wird.
- Der Wert einer Instanzvariablen sollte von mindestens einer Methode, einem Konstruktor oder einem Anweisungsblock referenziert werden, damit die Außenseite über diese Methoden Informationen zur Instanzvariablen erhalten kann.
- Instanzvariablen können vor oder nach der Verwendung deklariert werden;
- Zugriffsmodifikatoren können Instanzvariablen ändern.
- Instanzvariablen sind für Methoden, Konstruktoren oder Anweisungsblöcke in einer Klasse sichtbar. Im Allgemeinen sollten Instanzvariablen privat gemacht werden. Instanzvariablen können mithilfe von Zugriffsmodifikatoren für Unterklassen sichtbar gemacht werden.
- Instanzvariablen haben Standardwerte. Der Standardwert numerischer Variablen ist 0, der Standardwert boolescher Variablen ist falsch und der Standardwert von Referenztypvariablen ist null. Der Wert einer Variablen kann zum Zeitpunkt der Deklaration oder im Konstruktor angegeben werden;
- Auf Instanzvariablen kann direkt über den Variablennamen zugegriffen werden. In statischen Methoden und anderen Klassen sollten Sie jedoch den vollständig qualifizierten Namen verwenden: ObjectReference.VariableName.
Beispiel:
import java.io.*; public class Employee{ // 这个成员变量对子类可见public String name; // 私有变量,仅在该类可见private double salary; //在构造器中对name赋值public Employee (String empName){ name = empName; } //设定salary的值public void setSalary(double empSal){ salary = empSal; } // 打印信息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(); } }
Die Kompilierungs- und Ausführungsergebnisse des obigen Beispiels lauten wie folgt:
name : Ransika salary :1000.0
Klassenvariablen (statische Variablen)
- Klassenvariablen werden auch als statische Variablen bezeichnet und mit dem Schlüsselwort static in einer Klasse deklariert, müssen sich jedoch außerhalb von Methoden, Konstruktoren und Anweisungsblöcken befinden.
- Unabhängig davon, wie viele Objekte eine Klasse erstellt, verfügt die Klasse nur über eine Kopie der Klassenvariablen.
- Statische Variablen werden selten verwendet, außer wenn sie als Konstanten deklariert sind. Konstanten beziehen sich auf Variablen, die als öffentliche/private, endgültige und statische Typen deklariert sind. Konstanten können nach der Initialisierung nicht mehr geändert werden.
- Statische Variablen werden im statischen Speicherbereich gespeichert. Variablen werden oft als Konstanten deklariert, selten jedoch nur mit statischen Variablen.
- Statische Variablen werden am Anfang des Programms erstellt und am Ende des Programms zerstört.
- Hat eine ähnliche Sichtbarkeit wie Instanzvariablen. Um jedoch für Benutzer der Klasse sichtbar zu sein, werden die meisten statischen Variablen als öffentliche Typen deklariert.
- Standardwerte ähneln Instanzvariablen. Der Standardwert numerischer Variablen ist 0, der Standardwert boolescher Variablen ist falsch und der Standardwert von Referenztypen ist null. Der Wert einer Variablen kann bei der Deklaration oder im Konstruktor angegeben werden. Darüber hinaus können statische Variablen auch in statischen Anweisungsblöcken initialisiert werden.
- Auf statische Variablen kann zugegriffen werden über: ClassName.VariableName.
- Wenn eine Klassenvariable als öffentlicher statischer Endtyp deklariert wird, muss der Klassenvariablenname Großbuchstaben enthalten. Wenn die statische Variable nicht vom öffentlichen und endgültigen Typ ist, stimmt ihre Benennungsmethode mit der Benennungsmethode von Instanzvariablen und lokalen Variablen überein.
Beispiel:
import java.io.*; public class Employee{ //salary是静态的私有变量private static double salary; // DEPARTMENT是一个常量public static final String DEPARTMENT = "Development "; public static void main(String args[]){ salary = 1000; System.out.println(DEPARTMENT+"average salary:"+salary); } }
Die Kompilierungs- und Ausführungsergebnisse des obigen Beispiels lauten wie folgt:
Development average salary:1000
Hinweis: Wenn andere Klassen auf diese Variable zugreifen möchten, können sie wie folgt darauf zugreifen: Employee.DEPARTMENT.
In diesem Kapitel haben wir etwas über Java-Variablentypen gelernt und im nächsten Kapitel werden wir die Verwendung von Java-Modifikatoren vorstellen.