zmienna zapewnia nam nazwaną pamięć masową, którą mogą manipulować nasze programy. Każda zmienna w Javie ma określony typ, który określa rozmiar i układ pamięci zmiennej; zakres wartości, które mogą być przechowywane w tej pamięci; oraz zestaw operacji, które można zastosować do zmiennej.
musisz zadeklarować wszystkie zmienne przed ich użyciem. Poniżej znajduje się podstawowa forma deklaracji zmiennej −
data type variable ...] ;
tutaj typ danych jest jednym z typów danych Javy, a zmienna jest nazwą zmiennej. Aby zadeklarować więcej niż jedną zmienną określonego typu, można użyć listy rozdzielanej przecinkami.
poniżej znajdują się poprawne przykłady deklaracji i inicjalizacji zmiennych w języku Java −
przykład
int a, b, c; // Declares three ints, a, b, and c.int a = 10, b = 10; // Example of initializationbyte B = 22; // initializes a byte type variable B.double pi = 3.14159; // declares and assigns a value of PI.char a = 'a'; // the char variable a iis initialized with value 'a'
Ten rozdział wyjaśni różne typy zmiennych dostępne w języku Java. Istnieją trzy rodzaje zmiennych w Javie −
- zmienne lokalne
- zmienne instancji
- zmienne klasy/statyczne
zmienne lokalne
-
zmienne lokalne są deklarowane w metodach, konstruktorach lub blokach.
-
zmienne lokalne są tworzone podczas wprowadzania metody, konstruktora lub bloku, a zmienna zostanie zniszczona po wyjściu z metody, konstruktora lub bloku.
-
modyfikatory dostępu nie mogą być używane dla zmiennych lokalnych.
-
zmienne lokalne są widoczne tylko wewnątrz zadeklarowanej metody, konstruktora lub bloku.
-
zmienne lokalne są wewnętrznie implementowane na poziomie stosu.
-
nie ma domyślnej wartości dla zmiennych lokalnych, więc zmienne lokalne powinny być zadeklarowane, a wartość początkowa powinna być przypisana przed pierwszym użyciem.
przykład
tutaj age jest zmienną lokalną. Jest to zdefiniowane wewnątrz metody pupAge () i jej zakres jest ograniczony tylko do tej metody.
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(); }}
spowoduje to następujący wynik −
wyjście
Puppy age is: 7
przykład
poniższy przykład używa age bez inicjowania go, więc dałby błąd w czasie kompilacji.
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(); }}
spowoduje to następujący błąd podczas kompilacji −
wyjście
Test.java:4:variable number might not have been initializedage = age + 7; ^1 error
zmienne instancji
-
zmienne instancji są zadeklarowane w klasie, ale poza metodą, konstruktorem lub dowolnym blokiem.
-
gdy obiektowi w stercie przydzielana jest przestrzeń, tworzony jest slot dla każdej wartości zmiennej instancji.
-
zmienne instancji są tworzone, gdy obiekt jest tworzony za pomocą słowa kluczowego 'new’ i niszczone, gdy obiekt jest niszczony.
-
zmienne instancji zawierają wartości, do których należy odwoływać się za pomocą więcej niż jednej metody, konstruktora lub bloku, lub istotnych części stanu obiektu, które muszą być obecne w całej klasie.
-
zmienne instancji mogą być zadeklarowane na poziomie klasy przed lub po użyciu.
-
modyfikatory dostępu mogą być podane na przykład dla zmiennych.
-
zmienne instancji są widoczne dla wszystkich metod, konstruktorów i bloków w klasie. Zwykle zaleca się, aby te zmienne były prywatne (poziom dostępu). Jednak widoczność dla podklas może być podana dla tych zmiennych za pomocą modyfikatorów dostępu.
-
zmienne instancji mają wartości domyślne. Dla liczb wartością domyślną jest 0, dla wartości logicznych jest to false, A dla odniesień do obiektów jest to null. Wartości można przypisać podczas deklaracji lub wewnątrz konstruktora.
-
dostęp do zmiennych instancji można uzyskać bezpośrednio przez wywołanie nazwy zmiennej wewnątrz klasy. Jednak w metodach statycznych (gdy zmienne instancji są dostępne), powinny być wywoływane przy użyciu w pełni kwalifikowanej nazwy. Obiektywizm.VariableName.
przykład
import java.io.*;public class Employee { // this instance variable is visible for any child class. public String name; // salary variable is visible in Employee class only. private double salary; // The name variable is assigned in the constructor. public Employee (String empName) { name = empName; } // The salary variable is assigned a value. public void setSalary(double empSal) { salary = empSal; } // This method prints the employee details. 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(); }}
spowoduje to następujący wynik −
wyjście
name : Ransikasalary :1000.0
zmienne klasy/statyczne
-
zmienne klasy znane również jako zmienne statyczne są zadeklarowane za pomocą słowa kluczowego static w klasy, ale poza metodą, konstruktorem lub blokiem.
-
w każdej klasie byłaby tylko jedna kopia każdej zmiennej klasowej, niezależnie od tego, ile obiektów zostanie z niej wytworzonych.
-
zmienne statyczne są rzadko używane poza zadeklarowanymi jako stałe. Stałe są zmiennymi zadeklarowanymi jako public / private, final i static. Zmienne stałe nigdy nie zmieniają się od wartości początkowej.
-
zmienne statyczne są przechowywane w pamięci statycznej. Rzadko stosuje się zmienne statyczne inne niż zadeklarowane końcowe i używane jako stałe publiczne lub prywatne.
-
zmienne statyczne są tworzone podczas uruchamiania programu i niszczone, gdy program się zatrzymuje.
-
widoczność jest podobna do zmiennych instancji. Jednak większość zmiennych statycznych jest zadeklarowana jako Publiczna, ponieważ muszą być dostępne dla użytkowników klasy.
-
wartości domyślne są takie same jak zmienne instancji. Dla liczb domyślną wartością jest 0; dla wartości logicznych jest to false; A dla odniesień do obiektów jest to null. Wartości można przypisać podczas deklaracji lub wewnątrz konstruktora. Dodatkowo, wartości mogą być przypisane w specjalnych statycznych blokach inicjujących.
-
do zmiennych statycznych można uzyskać poprzez wywołanie z nazwą klasy ClassName.VariableName.
-
przy deklarowaniu zmiennych klasowych jako public static final, wtedy nazwy zmiennych (stałe) są pisane wielkimi literami. Jeśli zmienne statyczne nie są publiczne i ostateczne, składnia nazw jest taka sama jak instancja i zmienne lokalne.
przykład
import java.io.*;public class Employee { // salary variable is a private static variable private static double salary; // DEPARTMENT is a constant public static final String DEPARTMENT = "Development "; public static void main(String args) { salary = 1000; System.out.println(DEPARTMENT + "average salary:" + salary); }}
spowoduje to następujący wynik −
wyjście
Development average salary:1000
Uwaga − Jeśli zmienne są dostępne z zewnętrznej klasy, stała powinna być dostępna jako pracownik.Dział
co dalej?
w tym rozdziale zostały już użyte modyfikatory dostępu (publiczne& prywatne). W następnym rozdziale szczegółowo wyjaśnimy modyfikatory dostępu i modyfikatory braku dostępu.