Java - typy zmiennych
Zmienna zapewnia nam nazwane miejsce do przechowywania, którym nasze programy mogą manipulować. 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, zanim będą mogły zostać użyte. Poniżej znajduje się podstawowa forma deklaracji zmiennej -
data type variable [ = value][, variable [ = value] ...] ;
Tutaj typ danych to jeden z typów danych Javy, a zmienna to nazwa zmiennej. Aby zadeklarować więcej niż jedną zmienną określonego typu, możesz użyć listy oddzielonej przecinkami.
Poniżej znajdują się prawidłowe przykłady deklaracji zmiennych i inicjalizacji w Javie -
Przykład
int a, b, c; // Declares three ints, a, b, and c.
int a = 10, b = 10; // Example of initialization
byte 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'
W tym rozdziale wyjaśniono różne typy zmiennych dostępne w języku Java. W Javie istnieją trzy rodzaje zmiennych -
- Zmienne lokalne
- Zmienne instancji
- Zmienne klasowe / statyczne
Zmienne lokalne
Zmienne lokalne są deklarowane w metodach, konstruktorach lub blokach.
Zmienne lokalne są tworzone po wprowadzeniu metody, konstruktora lub bloku, a zmienna zostanie zniszczona po wyjściu z metody, konstruktora lub bloku.
Modyfikatorów dostępu nie można używać do zmiennych lokalnych.
Zmienne lokalne są widoczne tylko w zadeklarowanej metodzie, konstruktorze lub bloku.
Zmienne lokalne są implementowane wewnętrznie na poziomie stosu.
Nie ma wartości domyślnej dla zmiennych lokalnych, dlatego przed pierwszym użyciem należy zadeklarować zmienne lokalne i przypisać wartość początkową.
Przykład
Tutaj wiek jest zmienną lokalną. Jest to zdefiniowane w metodzie pupAge () , a 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();
}
}
To da następujący wynik -
Wynik
Puppy age is: 7
Przykład
Poniższy przykład używa age bez inicjowania go, więc wystąpił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 -
Wynik
Test.java:4:variable number might not have been initialized
age = age + 7;
^
1 error
Zmienne instancji
Zmienne instancji są deklarowane w klasie, ale poza metodą, konstruktorem lub dowolnym blokiem.
Kiedy miejsce jest przydzielane dla obiektu w stercie, tworzony jest boks dla wartości zmiennej każdej instancji.
Zmienne instancji są tworzone, gdy obiekt jest tworzony przy użyciu słowa kluczowego „nowy” i niszczony, gdy obiekt jest niszczony.
Zmienne instancji przechowują wartości, do których musi się odwoływać więcej niż jedna metoda, konstruktor lub blok, lub istotne części stanu obiektu, które muszą być obecne w całej klasie.
Zmienne instancji można zadeklarować na poziomie klasy przed lub po użyciu.
Dla zmiennych instancji można podać modyfikatory dostępu.
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żna zapewnić dla tych zmiennych za pomocą modyfikatorów dostępu.
Zmienne instancji mają wartości domyślne. W przypadku liczb wartością domyślną jest 0, dla wartości logicznych jest to fałsz, a dla odniesień do obiektów jest to zero. Wartości można przypisać podczas deklaracji lub w konstruktorze.
Dostęp do zmiennych instancji można uzyskać bezpośrednio, wywołując nazwę zmiennej wewnątrz klasy. Jednak w przypadku metod statycznych (gdy zmienne instancji są dostępne) powinny być wywoływane przy użyciu w pełni kwalifikowanej nazwy. ObjectReference.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();
}
}
To da następujący wynik -
Wynik
name : Ransika
salary :1000.0
Zmienne klasowe / statyczne
Zmienne klas, znane również jako zmienne statyczne, są deklarowane za pomocą słowa kluczowego static w klasie, ale poza metodą, konstruktorem lub blokiem.
W każdej klasie istniałaby tylko jedna kopia każdej zmiennej klasowej, niezależnie od tego, ile obiektów zostało z niej utworzonych.
Zmienne statyczne są rzadko używane inaczej niż deklarowane jako stałe. Stałe to zmienne zadeklarowane jako publiczne / prywatne, końcowe i statyczne. Zmienne stałe nigdy nie zmieniają swojej wartości początkowej.
Zmienne statyczne są przechowywane w pamięci statycznej. Rzadko stosuje się zmienne statyczne inne niż zadeklarowane jako ostateczne 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 deklarowanych jako publiczne, ponieważ muszą być dostępne dla użytkowników klasy.
Wartości domyślne są takie same, jak zmienne instancji. W przypadku liczb wartość domyślna to 0; dla Booleów to fałsz; a dla odniesień do obiektów jest zerowa. Wartości można przypisać podczas deklaracji lub w konstruktorze. Ponadto wartości można przypisać w specjalnych statycznych blokach inicjalizujących.
Dostęp do zmiennych statycznych można uzyskać, wywołując nazwę klasy ClassName.VariableName .
Podczas deklarowania zmiennych klas jako publiczne statyczne końcowe nazwy zmiennych (stałe) są pisane wielkimi literami. Jeśli zmienne statyczne nie są publiczne i ostateczne, składnia nazewnictwa jest taka sama, jak zmienne instancji i zmiennych lokalnych.
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);
}
}
To da następujący wynik -
Wynik
Development average salary:1000
Note - Jeśli dostęp do zmiennych jest uzyskiwany z zewnętrznej klasy, do stałej należy mieć dostęp jako Employee.DEPARTMENT
Co jest następne?
Użyłeś już modyfikatorów dostępu (publicznych i prywatnych) w tym rozdziale. W następnym rozdziale szczegółowo omówimy modyfikatory dostępu i modyfikatory braku dostępu.