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.