CodeGym /Java Blog /Random-IT /Variabili Java
John Squirrels
Livello 41
San Francisco

Variabili Java

Pubblicato nel gruppo Random-IT
In questo articolo, spiegheremo a tutti gli studenti di Java cosa sono le variabili Java e come lavorare con esse.

Cos'è la variabile Java

Una variabile in Java può essere pensata come una scatola. Questa "scatola" ha una certa dimensione: la memoria che le è allocata. La quantità di memoria allocata dipende dal tipo di variabile, ma ne parleremo un po' più avanti. Allo stesso tempo, la dimensione della scatola stessa non può essere modificata dopo la sua creazione, ma il contenuto sì. La casella potrebbe essere vuota. Puoi "inserire" un valore in esso, quindi estrarre e inserire un altro valore. Pertanto, una variabile è un campo che memorizza i valori dei dati durante l'esecuzione di un programma Java. Questa scatola ha caratteristiche importanti:
  • può sempre contenere un solo valore (o può essere vuoto, nel qual caso conterrà il valore predefinito),
  • Ha un tipo di dati. La sua dimensione dipende dal tipo di dati, nonché da quale particolare area di memoria è assegnata al posto (dove si trova).
Variabili in Java - 1

Come dichiarare le variabili

Per dichiarare le variabili in Java, è necessario specificarne il tipo e il nome. Ecco un esempio di dichiarazione di tre variabili:

int myInt;
String s;
Object variableName;
Qui int , String e Object sono il tipo di dati e myInt , s , variableName sono nomi di variabile. Il tipo di dati deve essere scelto in base alle esigenze del programma, ed è meglio scegliere un nome in modo che sia chiaro di cosa si tratta. Naturalmente, per i principianti non è così rigido, ma in progetti di grandi dimensioni, nomi di variabili come 's' possono compromettere la leggibilità del codice. Quindi è meglio abituarsi a nominare le variabili in un modo che renda chiaro a cosa servono fin dall'inizio. Entro limiti ragionevoli, ovviamente.

Come inizializzare le variabili

Quando dichiari una variabile, allochi memoria per essa. Inizializzazione significa che "metti" un certo valore nella "scatola". Questo può essere fatto immediatamente durante la dichiarazione della variabile o successivamente. Inoltre, il valore di una variabile può cambiare durante l'esecuzione del programma. Esempio:

public class VariableTest {
    public static void main(String[] args) {
        int myInt = 5;
        String s;
        s = "init";
        System.out.println(s);
        s = s+5;
        System.out.println(s);
    }
}
Qui abbiamo dichiarato e inizializzato la variabile myInt in una riga, allocando immediatamente memoria per essa (32 bit per ogni numero int), assegnandole un nome e quindi inserendo il valore 5 nella memoria allocata. Quindi abbiamo dichiarato che stavamo allocando spazio di memoria per la stringa s e già un comando separato vi ha inserito il valore "init". Successivamente, abbiamo stampato la stringa e modificato il valore della variabile s . In questo programma, abbiamo stampato le righe e, se lo esegui, vedrai il seguente risultato:
iniz init5

Tipi di dati delle variabili in Java: primitivi e non primitivi

I tipi di dati delle variabili in Java sono divisi in due gruppi:
  • I tipi di dati primitivi includono byte , short , int , long , float , double , boolean e char
  • Tipi di dati non primitivi come String , Arrays e Classes
Ecco un esempio di lavoro con le variabili:

public class VariableTest {
   public static void main(String[] args) {

       int myInt = - 5;               // integer (whole number)
       float myFloat = 2.718281828459045f;    // Floating point number
       char myLetter = 'a';         // character
       boolean myBool = true;       // boolean
       String myText = "Hero";     // String
       System.out.println(myInt + " " +
               myFloat +" " + myLetter + " " +  myBool + " " + myText);
       Student myStudent = new Student("Walker","Johnny", "Kyle", null);
      
   }
}
int , char , boolean e float sono primitive. La stringa non è primitiva. E la variabile myStudent ? Questo è un oggetto della classe creata dall'utente Student . È stato creato semplicemente per illustrare il lavoro con variabili non primitive. Sono la maggioranza in Java, poiché quasi tutto in questo linguaggio di programmazione è un oggetto. Per capire, ecco il codice della classe Student :

import java.util.Date;

public class Student {
   String surname;
   String name;
   String secondName;
   Long birthday; // Long instead of long is used by Gson/Jackson json parsers and various orm databases

   public Student(String surname, String name, String secondName, Date birthday ){
       this.surname = surname;
       this.name = name;
       this.secondName = secondName;
       this.birthday = birthday == null ? 0 : birthday.getTime();
   }

   @Override
   public int hashCode(){
       //TODO: check for nulls
       //return surname.hashCode() ^ name.hashCode() ^ secondName.hashCode() ^ (birthday.hashCode());
       return (surname + name + secondName + birthday).hashCode();
   }
   @Override
   public boolean equals(Object other_) {
       Student other = (Student)other_;
       return (surname == null || surname.equals(other.surname) )
               && (name == null || name.equals(other.name))
               && (secondName == null || secondName.equals(other.secondName))
               && (birthday == null || birthday.equals(other.birthday));
   }
}

Tipi di variabili in Java: locale, istanza e statica

Esistono tre diversi tipi di variabili in Java, le abbiamo elencate come segue:
  1. Variabili locali
  2. Variabili di istanza
  3. Variabili statiche

Variabili locali

Una variabile dichiarata all'interno del corpo del metodo è chiamata variabile locale. Inoltre, le variabili locali sono dichiarate all'interno di costruttori e blocchi. È possibile utilizzare le variabili locali solo all'interno di quel metodo, costruttore o blocco in cui sono state create e gli altri metodi nella classe non sono nemmeno a conoscenza dell'esistenza della variabile. Quindi le variabili locali vengono create quando viene inserito il metodo, il costruttore o il blocco e la variabile viene distrutta una volta che il metodo, il costruttore o il blocco non funziona. Non è possibile definire una variabile locale con la parola chiave static . Ancora di più: non puoi usare i modificatori di accesso per le variabili locali. Ecco un esempio:

public class VariableTest {
   public static void main(String[] args) {
       System.out.println(myMethod("C plus "));
   }
           private static String myMethod(String myString) {
       String myOtherString = "plus";
       return myString + myOtherString;
   }
}
Qui myOtherString è una variabile locale. Non puoi usarlo dall'altro metodo, ma myMethod . Le variabili locali non possono avere valori predefiniti. Se almeno una variabile locale non è inizializzata nel programma, il programma non funzionerà correttamente. Facciamo una piccola modifica in uno degli esempi precedenti e "dimentichiamo" di inizializzare la variabile myBool :

public class VariableTest {
   public static void main(String[] args) {

       int myInt = - 5;               // integer (whole number)
       float myFloat = 2.718281828459045f;    // Floating point 
       char myLetter = 'a';         // character
       boolean myBool;       // boolean
       String myText = "Hero";     // String
       System.out.println(myInt + " " +
               myFloat +" " + myLetter + " " +  myBool + " " + myText);
       Student myStudent = new Student("Walker","Johnny", "Kyle", null);

   }
}
Se proviamo a eseguire il programma, genererà un errore:
Error:(10, 50) java: la variabile myBool potrebbe non essere stata inizializzata

Variabili di istanza

Una variabile dichiarata all'interno della classe ma al di fuori del corpo di qualsiasi metodo, costruttore o blocco è chiamata variabile di istanza. Le variabili di istanza vengono create quando viene creato un oggetto utilizzando la nuova parola chiave. Viene distrutto quando l'oggetto viene distrutto. Non può essere dichiarato statico, ma puoi utilizzare i modificatori di accesso per le variabili di istanza. Le variabili di istanza sono visibili per tutti i metodi, costruttori e blocchi nella classe. Di solito le variabili di istanza sono private, ma puoi modificare la visibilità per le sottoclassi. Le variabili di istanza al contrario delle variabili locali hanno valori predefiniti. Per tutti i tipi numerici primitivi il valore predefinito è 0, per i booleani è falso e per i riferimenti agli oggetti è nullo. I valori possono essere assegnati durante la dichiarazione o all'interno del costruttore. Ecco un esempio:

//instance variable example
public class Employee {

   // here we have a public instance variable. It is visible for this class and child classes
   public String name;

   //this instance variable is private so it’s visible for the Employee class only. You can use setters and getters to get it
   private double salary;

   public Employee (String empName) {
       name = empName;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public double getSalary() {
       return salary;
   }

   public void setSalary(double employeeSalary) {
       salary = employeeSalary;
   }

   public static void main(String args[]) {
       Employee employee = new Employee("Johnny");
       employee.setSalary(1500);
       System.out.println("name = " + employee.getName());
       System.out.println("salary = " + employee.getSalary());
   }
}

Variabili statiche

Una variabile dichiarata come statica è chiamata variabile statica. Java ti offre di dichiarare tali variabili al di fuori di un metodo, costruttore o blocco. Non può essere locale, appartengono alla classe, non alle istanze. Ciò significa che una singola copia di una variabile statica una volta creata e condivisa tra tutte le istanze della classe. L'allocazione della memoria per le variabili statiche avviene solo una volta quando la classe viene caricata nella memoria. Possono avere qualsiasi visibilità, ma di solito sono dichiarati pubblici. Hanno anche valori predefiniti come le variabili di istanza.

public class Box
{
   public void add(int data)
   {
       Storage.sum = Storage.sum + data;
       Storage.count++;
   }

   public void remove(int data)
   {
       Storage.sum = Storage.sum - data;
       Storage.count--;
   }
}

public class Storage
{
   public static int count = 0;
   public static int sum = 0;
}
Nell'esempio sopra, abbiamo creato una classe Storage separata , abbiamo spostato le variabili count e sum al suo interno e le abbiamo dichiarate statiche. È possibile accedere alle variabili statiche pubbliche da qualsiasi metodo del programma (e non solo da un metodo). Per rafforzare ciò che hai imparato, ti suggeriamo di guardare una lezione video dal nostro corso Java
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION