Java Variablentypen verstehen: Ein umfassender Leitfaden
Eine Variable bietet uns benannten Speicher, den unsere Programme manipulieren können. Jede Variable in Java hat einen spezifischen Typ, der die Größe und das Layout des Variablenspeichers bestimmt; den Wertebereich, der in diesem Speicher gespeichert werden kann; und die Menge der Operationen, die auf die Variable angewendet werden können.
Sie müssen alle Variablen deklarieren, bevor sie verwendet werden können. Folgend die grundlegende Form einer Variablendeklaration:
datentyp variable [ = wert][, variable [ = wert] ...] ;
Hier ist datentyp einer von Javas Datentypen und variable der Name der Variable. Um mehr als eine Variable des angegebenen Typs zu deklarieren, können Sie eine kommagetrennte Liste verwenden.
Folgend gültige Beispiele für Variablendeklaration und Initialisierung in Java:
Beispiel
int a, b, c; // Deklariert drei ints: a, b, c int a = 10, b = 10; // Initialisierungsbeispiel byte B = 22; // Initialisiert Byte-Variable B double pi = 3.14159; // Deklariert und weist PI zu char a = 'a'; // Char-Variable a initialisiert mit 'a'
Dieses Kapitel erklärt die verschiedenen Variablentypen in Java. Es gibt drei Arten von Variablen in Java:
- Lokale Variablen
- Instanzvariablen
- Klassen-/Statische Variablen
Lokale Variablen
- Lokale Variablen werden in Methoden, Konstruktoren oder Blöcken deklariert.
- Sie werden erstellt, wenn die Methode, der Konstruktor oder der Block betreten wird, und zerstört, sobald er verlassen wird.
- Zugriffsmodifikatoren können nicht für lokale Variablen verwendet werden.
- Lokale Variablen sind nur innerhalb der deklarierten Methode, des Konstruktors oder Blocks sichtbar.
- Lokale Variablen werden intern auf Stack-Ebene implementiert.
- Es gibt keinen Standardwert für lokale Variablen – sie müssen vor der ersten Verwendung deklariert und initialisiert werden.
Beispiel
Hier ist age eine lokale Variable, definiert in der Methode pupAge(), deren Gültigkeitsbereich auf diese Methode beschränkt ist.
Live Demopublic 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 produziert folgendes Ergebnis:
Ausgabe
Puppy age is: 7
Beispiel
Folgendes Beispiel verwendet age ohne Initialisierung, was zur Kompilierzeit einen Fehler gibt.
Live Demopublic 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();
}
}
Dieser Fehler tritt beim Kompilieren auf:
Ausgabe
Test.java:4: variable number might not have been initialized age = age + 7; ^ 1 error
Instanzvariablen
- Instanzvariablen werden in einer Klasse, aber außerhalb einer Methode, eines Konstruktors oder Blocks deklariert.
- Wenn Speicher für ein Objekt im Heap allokiert wird, wird ein Slot für jeden Instanzvariablenwert erstellt.
- Instanzvariablen werden erstellt, wenn ein Objekt mit dem Schlüsselwort
newerstellt wird, und zerstört, wenn das Objekt zerstört wird. - Instanzvariablen halten Werte, die von mehr als einer Methode, einem Konstruktor oder Block referenziert werden müssen, oder wesentliche Teile des Objektzustands, die throughout der Klasse präsent sein müssen.
- Instanzvariablen können auf Klassenebene vor oder nach der Verwendung deklariert werden.
- Zugriffsmodifikatoren können für Instanzvariablen angegeben werden.
- Instanzvariablen sind für alle Methoden, Konstruktoren und Blöcke in der Klasse sichtbar. Normalerweise wird empfohlen, diese Variablen privat zu machen. Sichtbarkeit für Unterklassen kann über Zugriffsmodifikatoren gegeben werden.
- Instanzvariablen haben Standardwerte: Für Zahlen 0, für Booleans false, für Objektreferenzen null. Werte können bei der Deklaration oder im Konstruktor zugewiesen werden.
- Instanzvariablen können direkt durch Aufruf des Variablennamens innerhalb der Klasse zugegriffen werden. Innerhalb statischer Methoden (wenn Instanzvariablen zugänglich gemacht werden) sollten sie mit dem vollqualifizierten Namen aufgerufen werden: ObjectReference.VariableName.
Beispiel
Live Demoimport java.io.*;
public class Employee {
// Diese Instanzvariable ist für jede Kindklasse sichtbar
public String name;
// salary Variable nur in Employee Klasse sichtbar
private double salary;
// name Variable wird im Konstruktor zugewiesen
public Employee(String empName) {
name = empName;
}
// salary Variable wird einen Wert zugewiesen
public void setSalary(double empSal) {
salary = empSal;
}
// Diese Methode druckt Mitarbeiterdetails
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 produziert folgendes Ergebnis:
Ausgabe
name : Ransika salary :1000.0
Klassen-/Statische Variablen
- Klassenvariablen (auch statische Variablen genannt) werden mit dem Schlüsselwort
staticin einer Klasse, aber außerhalb einer Methode, eines Konstruktors oder Blocks deklariert. - Es gibt nur eine Kopie jeder Klassenvariable pro Klasse, unabhängig davon, wie viele Objekte davon erstellt werden.
- Statische Variablen werden selten außer als Konstanten deklariert. Konstanten sind Variablen, die als public/private, final und static deklariert sind. Konstante Variablen ändern nie ihren Initialwert.
- Statische Variablen werden im statischen Speicher gespeichert. Es ist selten, statische Variablen anders als als public oder private Konstanten deklariert zu verwenden.
- Statische Variablen werden beim Programmstart erstellt und beim Programmende zerstört.
- Sichtbarkeit ähnlich wie Instanzvariablen. Die meisten statischen Variablen werden jedoch public deklariert, da sie für Nutzer der Klasse verfügbar sein müssen.
- Standardwerte wie bei Instanzvariablen: Zahlen 0, Booleans false, Objektreferenzen null. Werte können bei Deklaration, im Konstruktor oder in speziellen statischen Initialisierungsblöcken zugewiesen werden.
- Statische Variablen können durch Aufruf mit dem Klassennamen zugegriffen werden: ClassName.VariableName.
- Bei Deklaration als public static final sind Variablennamen (Konstanten) in Großbuchstaben. Wenn statische Variablen nicht public und final sind, gilt die gleiche Namenskonvention wie bei Instanz- und lokalen Variablen.
Beispiel
Live Demoimport java.io.*;
public class Employee {
// salary Variable ist eine private 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 produziert folgendes Ergebnis:
Ausgabe
Development average salary:1000
Hinweis – Wenn die Variablen von einer externen Klasse zugegriffen werden, sollte die Konstante als Employee.DEPARTMENT angesprochen werden.
Was kommt als Nächstes?
Sie haben in diesem Kapitel bereits Zugriffsmodifikatoren (public & private) verwendet. Das nächste Kapitel erklärt Zugriffsmodifikatoren und Nicht-Zugriffsmodifikatoren im Detail.
Java
- C# Variablen & Primitive Datentypen meistern: Der komplette Guide
- C Variablen, Konstanten und Literale: Ein vollständiger Leitfaden
- C Speicherklassen verstehen: Gültigkeitsbereich, Lebensdauer und Performance
- Java Variablen und Literale: Umfassender Leitfaden
- Java Primitive Datentypen: Vollständiger Leitfaden mit Beispielen
- Java Operatoren meistern: Typen, Syntax und praktische Beispiele
- Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
- Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
- Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
- Java Annotation Types: Umfassender Leitfaden zu vordefinierten, benutzerdefinierten und Meta-Annotations