Java - Tipi di variabili

Una variabile ci fornisce una memoria con nome che i nostri programmi possono manipolare. Ogni variabile in Java ha un tipo specifico, che determina la dimensione e il layout della memoria della variabile; l'intervallo di valori che possono essere memorizzati all'interno di quella memoria; e l'insieme di operazioni che possono essere applicate alla variabile.

È necessario dichiarare tutte le variabili prima che possano essere utilizzate. Di seguito è riportata la forma base di una dichiarazione di variabile:

data type variable [ = value][, variable [ = value] ...] ;

Qui il tipo di dati è uno dei tipi di dati di Java e la variabile è il nome della variabile. Per dichiarare più di una variabile del tipo specificato, puoi utilizzare un elenco separato da virgole.

Di seguito sono riportati esempi validi di dichiarazione e inizializzazione di variabili in Java:

Esempio

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'

Questo capitolo spiegherà i vari tipi di variabili disponibili in Java Language. Esistono tre tipi di variabili in Java:

  • Variabili locali
  • Variabili di istanza
  • Variabili di classe / statiche

Variabili locali

  • Le variabili locali vengono dichiarate in metodi, costruttori o blocchi.

  • Le variabili locali vengono create quando si immette il metodo, il costruttore o il blocco e la variabile verrà distrutta una volta che esce dal metodo, dal costruttore o dal blocco.

  • I modificatori di accesso non possono essere utilizzati per le variabili locali.

  • Le variabili locali sono visibili solo all'interno del metodo, costruttore o blocco dichiarato.

  • Le variabili locali vengono implementate internamente a livello di stack.

  • Non esiste un valore predefinito per le variabili locali, quindi è necessario dichiarare le variabili locali e assegnare un valore iniziale prima del primo utilizzo.

Esempio

Qui l' età è una variabile locale. Questo è definito all'interno del metodo pupAge () e il suo ambito è limitato solo a questo metodo.

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();
   }
}

Questo produrrà il seguente risultato:

Produzione

Puppy age is: 7

Esempio

L'esempio seguente usa age senza inizializzarlo, quindi darebbe un errore al momento della compilazione.

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();
   }
}

Questo produrrà il seguente errore durante la compilazione:

Produzione

Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

Variabili di istanza

  • Le variabili di istanza sono dichiarate in una classe, ma al di fuori di un metodo, un costruttore o qualsiasi blocco.

  • Quando uno spazio viene allocato per un oggetto nell'heap, viene creato uno slot per ogni valore della variabile di istanza.

  • Le variabili di istanza vengono create quando un oggetto viene creato con l'uso della parola chiave "nuovo" e distrutte quando l'oggetto viene distrutto.

  • Le variabili di istanza contengono valori che devono essere referenziati da più di un metodo, costruttore o blocco, o parti essenziali dello stato di un oggetto che devono essere presenti in tutta la classe.

  • Le variabili di istanza possono essere dichiarate a livello di classe prima o dopo l'uso.

  • Possono essere forniti modificatori di accesso per variabili di istanza.

  • Le variabili di istanza sono visibili per tutti i metodi, costruttori e blocchi nella classe. Normalmente, si consiglia di rendere private queste variabili (livello di accesso). Tuttavia, la visibilità per le sottoclassi può essere data per queste variabili con l'uso di modificatori di accesso.

  • Le variabili di istanza hanno valori predefiniti. Per i numeri, il valore predefinito è 0, per i booleani è falso e per i riferimenti a oggetti è nullo. I valori possono essere assegnati durante la dichiarazione o all'interno del costruttore.

  • È possibile accedere alle variabili di istanza direttamente chiamando il nome della variabile all'interno della classe. Tuttavia, all'interno dei metodi statici (quando viene fornita l'accessibilità alle variabili di istanza), dovrebbero essere chiamate utilizzando il nome completo. ObjectReference.VariableName .

Esempio

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();
   }
}

Questo produrrà il seguente risultato:

Produzione

name  : Ransika
salary :1000.0

Variabili di classe / statiche

  • Le variabili di classe note anche come variabili statiche vengono dichiarate con la parola chiave static in una classe, ma al di fuori di un metodo, un costruttore o un blocco.

  • Ci sarebbe solo una copia di ogni variabile di classe per classe, indipendentemente dal numero di oggetti creati da essa.

  • Le variabili statiche sono usate raramente oltre a essere dichiarate come costanti. Le costanti sono variabili dichiarate come pubbliche / private, finali e statiche. Le variabili costanti non cambiano mai dal loro valore iniziale.

  • Le variabili statiche vengono archiviate nella memoria statica. È raro utilizzare variabili statiche diverse da quelle dichiarate final e utilizzate come costanti pubbliche o private.

  • Le variabili statiche vengono create all'avvio del programma e distrutte quando il programma si interrompe.

  • La visibilità è simile alle variabili di istanza. Tuttavia, la maggior parte delle variabili statiche sono dichiarate pubbliche poiché devono essere disponibili per gli utenti della classe.

  • I valori predefiniti sono gli stessi delle variabili di istanza. Per i numeri, il valore predefinito è 0; per i booleani è falso; e per i riferimenti a oggetti, è nullo. I valori possono essere assegnati durante la dichiarazione o all'interno del costruttore. Inoltre, i valori possono essere assegnati in speciali blocchi di inizializzazione statici.

  • È possibile accedere alle variabili statiche chiamando con il nome della classe ClassName.VariableName .

  • Quando si dichiarano le variabili di classe come finale statico pubblico, i nomi delle variabili (costanti) sono tutti in maiuscolo. Se le variabili statiche non sono pubbliche e finali, la sintassi dei nomi è la stessa delle variabili istanza e locali.

Esempio

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);
   }
}

Questo produrrà il seguente risultato:

Produzione

Development average salary:1000

Note - Se si accede alle variabili da una classe esterna, è necessario accedere alla costante come Employee.DEPARTMENT

Cosa c'è dopo?

Hai già utilizzato i modificatori di accesso (pubblico e privato) in questo capitolo. Il prossimo capitolo spiegherà in dettaglio i modificatori di accesso e quelli non di accesso.