在本文中,我們將向所有 Java 學習者解釋什麼是 Java 變量以及如何使用它們。
什麼是Java變量
Java 中的變量可以被認為是一個盒子。這個“盒子”有一定的大小:分配給它的內存。分配多少內存取決於變量的類型,但我們稍後會討論這個問題。同時,框本身的大小在創建後不能更改,但內容可以。盒子可能是空的。您可以向其中“插入”一些值,然後提取並放入其他一些值。由此可見,變量是Java程序執行過程中存儲數據值的字段。這個盒子有重要的特點:- 它總是只能包含一個值(或者可以為空,在這種情況下它將包含默認值),
- 它有一個數據類型。它的大小取決於數據的類型,以及為它分配位置的內存的哪個特定區域(它位於何處)。

如何聲明變量
要在 Java 中聲明變量,您需要指定其類型和名稱。這是聲明三個變量的示例:
int myInt;
String s;
Object variableName;
這裡int、String和Object是數據類型,myInt、s、variableName是變量名。數據類型一定要根據程序的需要來選擇,而且最好選擇一個名字,讓人一目了然。當然,對於初學者來說並沒有那麼嚴格,但是在大型項目中,像's'這樣的變量名會損害代碼的可讀性。因此,最好習慣於以一種從一開始就清楚它們的用途的方式命名變量。當然,在合理範圍內。
如何初始化變量
當你聲明一個變量時,你就為它分配了內存。初始化就是你把某個值“放入”到“盒子”中。這可以在變量聲明期間或之後立即完成。此外,變量的值可以在程序執行期間更改。例子:
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);
}
}
在這裡,我們在一行中聲明並初始化了 myInt變量,立即為其分配內存(每個 int 數字 32 位),為其命名,然後將值 5 放入分配的內存中。然後我們聲明我們正在為字符串s分配內存空間,並且已經有一個單獨的命令將值“init”放入其中。之後,我們打印出字符串並更改變量s的值。在這個程序中,我們打印出了這些行,如果你運行它,你會看到以下結果:
初始化初始化5
Java中變量的數據類型:原始和非原始
Java 中變量的數據類型分為兩組:- 原始數據類型包括byte、short、int、long、float、double、boolean和char
- 非原始數據類型,例如String、Arrays和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和float是原語。字符串是非原始的。myStudent變量呢?這是用戶創建的類Student的對象。它的創建只是為了說明非原始變量的工作。它們在 Java 中佔多數,因為在這種編程語言中幾乎所有東西都是對象。為了便於理解,這裡是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));
}
}
Java 中的變量類型:局部變量、實例變量和靜態變量
Java 中存在三種不同類型的變量,我們將它們列舉如下:- 局部變量
- 實例變量
- 靜態變量
局部變量
在方法體內聲明的變量稱為局部變量。此外,局部變量在構造函數和塊中聲明。您只能在創建局部變量的方法、構造函數或塊中使用局部變量,而類中的其他方法甚至不知道該變量的存在。因此,局部變量是在方法、構造函數或塊進入時創建的,一旦方法、構造函數或塊不起作用,變量就會被銷毀。不能使用static關鍵字定義局部變量。更重要的是:您不能對局部變量使用訪問修飾符。這是一個例子:
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;
}
}
這裡myOtherString是一個局部變量。您不能從其他方法使用它,但myMethod。局部變量不能有默認值。如果程序中至少有一個局部變量沒有被初始化,程序將無法正常運行。讓我們對前面的一個示例做一個小改動,並“忘記”初始化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);
}
}
如果我們嘗試運行該程序,它會拋出一個錯誤:
錯誤:(10, 50) java: 變量 myBool 可能尚未初始化
實例變量
在類內部但在任何方法、構造函數或塊的主體之外聲明的變量稱為實例變量。實例變量是在使用new關鍵字創建對象時創建的。它在對像被銷毀時被銷毀。它不能聲明為靜態的,但您可以對實例變量使用訪問修飾符。實例變量對於類中的所有方法、構造函數和塊都是可見的。通常實例變量是私有的,但您可以更改子類的可見性。與局部變量相反的實例變量具有默認值。對於所有數字原始類型,默認值為 0,對於布爾值,默認值為 false,對於對象引用,默認值為 null。可以在聲明期間或在構造函數中分配值。這是一個例子:
//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());
}
}
靜態變量
聲明為靜態的變量稱為靜態變量。Java 允許您在方法、構造函數或塊之外聲明此類變量。它不能是本地的,它們屬於類,而不是實例。這意味著靜態變量的單個副本一旦創建並在類的所有實例之間共享。當類加載到內存中時,靜態變量的內存分配只會發生一次。它們可以具有任何可見性,但通常它們被聲明為公開的。它們也有默認值,例如實例變量。
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;
}
在上面的示例中,我們創建了一個單獨的Storage類,將 count 和 sum 變量移入其中,並將它們聲明為靜態。公共靜態變量可以從任何程序方法訪問(而不僅僅是從一個方法)。 為了鞏固您所學的知識,我們建議您觀看我們的 Java 課程中的視頻課程
GO TO FULL VERSION