CodeGym /Blog Java /Aleatoriu /Variabile Java
John Squirrels
Nivel
San Francisco

Variabile Java

Publicat în grup
În acest articol, vom explica tuturor cursanților Java ce sunt variabilele Java și cum să lucrăm cu ele.

Ce este variabila Java

O variabilă în Java poate fi gândită ca o cutie. Această „cutie” are o anumită dimensiune: memoria care îi este alocată. Câtă memorie va fi alocată depinde de tipul variabilei, dar vom vorbi despre asta puțin mai târziu. În același timp, dimensiunea cutiei în sine nu poate fi schimbată după crearea acesteia, dar conținutul poate. Cutia poate fi goală. Puteți „insera” o anumită valoare în ea, apoi extrageți și puneți o altă valoare. Astfel, o variabilă este un câmp care stochează valorile datelor în timpul execuției unui program Java. Această cutie are caracteristici importante:
  • poate conține întotdeauna o singură valoare (sau poate fi goală, caz în care va conține valoarea implicită),
  • Are un tip de date. Mărimea sa depinde de tipul de date, precum și de ce zonă anume de memorie îi este alocat locul (unde se află).
Variabile în Java - 1

Cum se declară variabile

Pentru a declara variabile în Java, trebuie să specificați tipul și numele acesteia. Iată un exemplu de declarare a trei variabile:

int myInt;
String s;
Object variableName;
Aici int , String și Object sunt tipul de date și myInt , s , variableName sunt nume de variabile. Tipul de date trebuie ales în funcție de nevoile programului și este mai bine să alegeți un nume, astfel încât să fie clar despre ce este vorba. Desigur, pentru începători nu este atât de strict, dar în proiectele mari, nume variabile precum „s” pot afecta lizibilitatea codului. Deci, este mai bine să vă obișnuiți să numiți variabilele într-un mod care să clarifice pentru ce sunt acestea de la bun început. În limita rațiunii, desigur.

Cum să inițializați variabilele

Când declarați o variabilă, îi alocați memorie. Inițializarea înseamnă că „puneți” o anumită valoare în „casetă”. Acest lucru se poate face imediat în timpul declarării variabilei sau ulterior. De asemenea, valoarea unei variabile se poate modifica în timpul execuției programului. Exemplu:

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);
    }
}
Aici am declarat și inițializat variabila myInt într-o singură linie, alocându-i imediat memorie (32 de biți pentru fiecare număr int), i-am dat un nume și apoi am plasat valoarea 5 în memoria alocată. Apoi am declarat că alocam spațiu de memorie pentru șirul s și deja o comandă separată a pus valoarea „init” în el. După aceea, am tipărit șirul și am schimbat valoarea variabilei s . În acest program, am tipărit liniile, iar dacă îl rulați, veți vedea următorul rezultat:
init init5

Tipuri de date de variabile în Java: primitive și non-primitive

Tipurile de date ale variabilelor din Java sunt împărțite în două grupuri:
  • Tipurile de date primitive includ byte , short , int , long , float , double , boolean și char
  • Tipuri de date non-primitive, cum ar fi String , Arrays și Classes
Iată un exemplu de lucru cu variabile:

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 și float sunt primitive. String este non-primitiv. Dar variabila myStudent ? Acesta este un obiect al clasei creată de utilizator Student . A fost creat pur și simplu pentru a ilustra munca cu variabile non-primitive. Ei sunt majoritatea în Java, deoarece aproape totul în acest limbaj de programare este un obiect. Pentru înțelegere, iată codul clasei 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));
   }
}

Tipuri de variabile în Java: locale, instanță și statice

Există trei tipuri diferite de variabile în Java, le-am enumerat după cum urmează:
  1. Variabile locale
  2. Variabile de instanta
  3. Variabile statice

Variabile locale

O variabilă declarată în corpul metodei se numește variabilă locală. De asemenea, variabilele locale sunt declarate în interiorul constructorilor și blocurilor. Puteți utiliza variabile locale numai în cadrul acelei metode, constructor sau bloc în care au fost create, iar celelalte metode din clasă nici măcar nu știu că variabila există. Deci variabilele locale sunt create atunci când metoda, constructorul sau blocul sunt introduse și variabila este distrusă odată ce metoda, constructorul sau blocul nu funcționează. O variabilă locală nu poate fi definită cu cuvântul cheie static . Chiar mai mult: nu puteți folosi modificatori de acces pentru variabilele locale. Iată un exemplu:

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;
   }
}
Aici myOtherString este o variabilă locală. Nu îl puteți folosi din cealaltă metodă, ci din myMethod . Variabilele locale nu pot avea valori implicite. Dacă cel puțin o variabilă locală nu este inițializată în program, programul nu va funcționa corect. Să facem o mică modificare în unul dintre exemplele anterioare și să „uităm” să inițializam variabila 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);

   }
}
Dacă încercăm să rulăm programul, acesta va arăta o eroare:
Eroare:(10, 50) java: variabila myBool poate să nu fi fost inițializată

Variabile de instanta

O variabilă declarată în interiorul clasei, dar în afara corpului oricărei metode, constructor sau bloc se numește variabilă de instanță. Variabilele de instanță sunt create atunci când un obiect este creat folosind cuvântul cheie nou . Este distrus atunci când obiectul este distrus. Nu poate fi declarat ca static, dar puteți folosi modificatori de acces pentru variabile de exemplu. Variabilele de instanță sunt vizibile pentru toate metodele, constructorii și blocurile din clasă. De obicei, variabilele de instanță sunt private, dar puteți modifica vizibilitatea pentru subclase. Variabilele de instanță, spre deosebire de variabilele locale, au valori implicite. Pentru toate tipurile de numere primitive valoarea implicită este 0, pentru boolean este falsă, iar pentru referințele la obiect este nulă. Valorile pot fi atribuite în timpul declarației sau în cadrul constructorului. Iată un exemplu:

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

Variabile statice

O variabilă care este declarată ca fiind statică se numește variabilă statică. Java vă oferă să declarați astfel de variabile în afara unei metode, constructor sau bloc. Nu poate fi local, ei aparțin clasei, nu instanțelor. Aceasta înseamnă că o singură copie a unei variabile statice odată creată și partajată între toate instanțele clasei. Alocarea memoriei pentru variabilele statice are loc o singură dată când clasa este încărcată în memorie. Ele pot avea orice vizibilitate, dar de obicei sunt declarate publice. De asemenea, au valori implicite, cum ar fi variabilele de instanță.

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;
}
În exemplul de mai sus, am creat o clasă de stocare separată , am mutat variabilele de numărare și suma în ea și le-am declarat statice. Variabilele statice publice pot fi accesate din orice metodă de program (și nu numai dintr-o metodă). Pentru a consolida ceea ce ați învățat, vă sugerăm să urmăriți o lecție video de la Cursul nostru Java
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION