I denne artikel skal vi forklare alle Java-elever, hvad Java-variabler er, og hvordan man arbejder med dem.
Hvad er Java-variabel
En variabel i Java kan opfattes som en boks. Denne "boks" har en vis størrelse: den hukommelse, der er allokeret til den. Hvor meget hukommelse der vil blive tildelt afhænger af typen af variabel, men vi skal tale om dette lidt senere. Samtidig kan størrelsen på selve kassen ikke ændres efter dens oprettelse, men indholdet kan. Kassen kan være tom. Du kan "indsætte" en eller anden værdi i den, og derefter udtrække og sætte en anden værdi. En variabel er således et felt, der gemmer dataværdier under udførelsen af et Java-program. Denne boks har vigtige funktioner:- den kan altid kun indeholde én værdi (eller kan være tom, i hvilket tilfælde den vil indeholde standardværdien),
- Det har en datatype. Dens størrelse afhænger af typen af data, såvel som af hvilket bestemt hukommelsesområde stedet er tildelt til det (hvor det ligger).
![Variabler i Java - 1](https://cdn.codegym.cc/images/article/b3c5ef2b-7f16-4b75-9b33-3acaa7dbbb7c/800.jpeg)
Sådan deklareres variabler
For at erklære variabler i Java skal du angive deres type og navn. Her er et eksempel på at erklære tre variable:
int myInt;
String s;
Object variableName;
Her er int , String og Object datatypen og myInt , s , variableName er variabelnavne. Datatypen skal vælges ud fra programmets behov, og det er bedre at vælge et navn, så det er tydeligt, hvad det handler om. For begyndere er det selvfølgelig ikke så strengt, men i store projekter kan variabelnavne som 's' forringe kodens læsbarhed. Så det er bedre at vænne sig til at navngive variabler på en måde, der gør det klart, hvad de er til for lige fra begyndelsen. Inden for rimelighedens grænser, selvfølgelig.
Sådan initialiseres variabler
Når du erklærer en variabel, allokerer du hukommelse til den. Initialisering betyder, at du "sætter" en bestemt værdi ind i "boksen". Dette kan gøres umiddelbart under deklarationen af variablen eller senere. Værdien af en variabel kan også ændre sig under programafvikling. Eksempel:
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);
}
}
Her erklærede og initialiserede vi myInt -variablen på én linje, og tildelte straks hukommelse til den (32 bit for hvert int-tal), gav den et navn og placerede derefter værdien 5 i den allokerede hukommelse. Så erklærede vi, at vi allokerede hukommelsesplads til strengen s , og allerede en separat kommando satte værdien "init" ind i den. Derefter printede vi strengen ud og ændrede værdien af variablen s . I dette program har vi printet linjerne ud, og hvis du kører det, vil du se følgende resultat:
init init5
Datatyper af variabler i Java: primitiv og ikke-primitiv
Datatyper af variabler i Java er opdelt i to grupper:- Primitive datatyper omfatter byte , short , int , long , float , double , boolean og char
- Ikke-primitive datatyper såsom String , Arrays og Classes
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 og float er primitiver. Streng er ikke-primitiv. Hvad med myStudent- variablen? Dette er et objekt af den brugeroprettede klasse Student . Den blev skabt for at illustrere arbejdet med ikke-primitive variable. De er flertallet i Java, da næsten alt i dette programmeringssprog er et objekt. For forståelse, her er koden for elevklassen :
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));
}
}
Variabletyper i Java: lokale, forekomster og statiske
Der er tre forskellige typer variabler i Java, vi har listet dem som følger:- Lokale variabler
- Forekomstvariabler
- Statiske variable
Lokale variabler
En variabel erklæret inde i metodens brødtekst kaldes en lokal variabel. Lokale variable er også erklæret inde i konstruktører og blokke. Du kan kun bruge lokale variabler inden for den metode, konstruktør eller blok, hvor de blev oprettet, og de andre metoder i klassen er ikke engang klar over, at variablen eksisterer. Så lokale variabler oprettes, når metoden, konstruktøren eller blokken indtastes, og variablen bliver ødelagt, når metoden, konstruktøren eller blokken ikke virker. En lokal variabel kan ikke defineres med det statiske nøgleord. Endnu mere: du kan ikke bruge adgangsmodifikatorer til lokale variabler. Her er et eksempel:
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;
}
}
Her er myOtherString en lokal variabel. Du kan ikke bruge det fra den anden metode, men myMethod . Lokale variabler kan ikke have standardværdier. Hvis mindst én lokal variabel ikke er initialiseret i programmet, vil programmet ikke fungere korrekt. Lad os lave en lille ændring i et af de foregående eksempler og "glemme" at initialisere myBool- variablen:
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);
}
}
Hvis vi prøver at køre programmet, vil det give en fejl:
Fejl:(10, 50) java: variabel myBool er muligvis ikke initialiseret
Forekomstvariabler
En variabel, der er erklæret inde i klassen, men uden for en hvilken som helst metode, konstruktør eller blok, kaldes en instansvariabel. Forekomstvariabler oprettes, når et objekt oprettes ved hjælp af det nye nøgleord. Det ødelægges, når objektet er ødelagt. Det kan ikke erklæres som statisk, men du kan bruge adgangsmodifikatorer til f.eks. variabler. Forekomstvariabler er synlige for alle metoder, konstruktører og blokke i klassen. Normalt er instansvariabler private, men du kan ændre synligheden for underklasser. Forekomstvariabler har i modsætning til lokale variabler standardværdier. For alle primitive taltyper er standardværdien 0, for booleaner er den falsk, og for objektreferencer er den null. Værdier kan tildeles under erklæringen eller inden for konstruktøren. Her er et eksempel:
//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());
}
}
Statiske variable
En variabel, der er erklæret som statisk, kaldes en statisk variabel. Java tilbyder dig at erklære sådanne variable uden for en metode, konstruktør eller blok. Det kan ikke være lokalt, de tilhører klassen, ikke til instanser. Det betyder, at en enkelt kopi af en statisk variabel en gang er oprettet og delt mellem alle forekomster af klassen. Hukommelseallokering for statiske variable sker kun én gang, når klassen er indlæst i hukommelsen. De kan have enhver synlighed, men normalt er de erklæret som offentlige. De har også standardværdier såsom instansvariabler.
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;
}
I eksemplet ovenfor oprettede vi en separat Storage- klasse, flyttede tælle- og sumvariablerne ind i den og erklærede dem statiske. Offentlige statiske variabler kan tilgås fra enhver programmetode (og ikke kun fra en metode). For at styrke det, du har lært, foreslår vi, at du ser en videolektion fra vores Java-kursus
GO TO FULL VERSION