5分鐘快速掌握Java變量

作者 | 吳懿罡

出品 | 百數雲課(專注互聯網知識共享,官方公眾號:百數雲課)

背景引入

  • 變量提供了程序可以操作的命名存儲。 Java中的每個變量都有一個類型,它決定了變量內存的大小和佈局; 可以存儲在該存儲器中的值的範圍; 以及可以應用於變量的操作集。
  • 變量需要先聲明才能使用,以下是變量聲明的基本形式 -
data type variable [ = value][, variable [ = value] ...] ;
  • 這裡data type是Java的數據類型之一,variable是變量的名稱。要聲明具有相同類型的多個變量,可以使用逗號分隔列表。
  • 對開發人員來說,變量是用來描述一條信息的別名,可以在程序代碼中使用一個或多個變量。變量中可以存儲各種類型的信息,如登錄信息、版本名稱、文件的大小、某個英文單詞以及飛機票價格等。


變量賦值

  • 初始化變量是指為變量指定一個明確的初始值。初始化變量有兩種方式:一種是聲明時直接賦值,一種是先聲明、後賦值。如下代碼分別使用兩種方式對變量進行了初始化。
1. char usersex='女'; //直接賦值

或者

1. String username; //先聲明
2. username ="琪琪"; //後賦值
  • 另外,多個同類型的變量可以同時定義或者初始化,但是多個變量中間要使用逗號分隔,聲明結束時用分號分隔。
1. String username,address,phone,tel; //聲明多個變量
2. int num1=12,num2=23,result=35; //聲明並初始化多個變量
  • Java 中初始化變量時需要注意以下事項:

變量是類或者結構中的字段,如果沒有顯式地初始化,默認狀態下創建變量並默認初始值為 0。

方法中的變量必須顯式地初始化,否則在使用該變量時就會出錯。

  • 以下是Java中變量聲明和初始化的示例 -

int a, b, c; // 聲明三個int類型變量:a, b 和 c
int a = 10, b = 10; // 初始化它們的值
byte B = 22; // 聲明並初始化一個 byte 類型的變量:B
double pi = 3.14159; // 聲明並賦值一個 double 類型的變量:PI
char a = 'a'; // 聲明char類型變量 a,並初始化值為:'a'

  • 本章將解釋Java語言中的各種變量類型。Java中有三種變量
  • 局部變量
  • 實例變量
  • 類/靜態變量

1. 局部變量

  • 局部變量一般在方法,構造函數或塊中聲明。
  • 程序進入方法,構造函數或塊時會創建局部變量,並且一旦退出方法,構造函數或塊,變量就會銷燬。
  • 訪問修飾符不能用於局部變量。
  • 局部變量僅在聲明的方法,構造函數或塊中可見。
  • 局部變量在內部實現堆棧級別。
  • 局部變量沒有默認值,因此應聲明局部變量後,在第一次使用之前為它分配初始值。

示例

在這裡,age是一個局部變量。 這是在dogAge()方法中定義的,它的範圍僅限於此方法。

public class Test {
public void dogAge() {
int age = 0;
age = age + 5;
System.out.println("Dog age is : " + age);
}

public static void main(String args[]) {
Test test = new Test();
test.dogAge();
}
}

執行上面示例代碼,得到以下結果:

Dog age is : 5

示例

下面示例中使用變量 age ,但不初始化它,因此在編譯時會出錯。

public class Test {
public void dogAge() {
int age;
age = age + 5;
System.out.println("Dog age is : " + age);
}

public static void main(String args[]) {
Test test = new Test();
test.dogAge();
}
}

執行上面示例代碼,得到以下結果(出錯):

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


2. 實例變量

  • 實例變量在類中聲明,但在方法,構造函數或塊之外。
  • 為堆中的對象分配空間時,將為每個實例變量值創建一個槽。
  • 使用關鍵字new創建對象時會創建實例變量,並在銷燬對象時銷燬實例變量。
  • 實例變量包含由多個方法,構造函數或塊引用的值,或者在整個類中存在的對象狀態的基本部分。
  • 實例變量可以在使用之前或之後在類級別中聲明。
  • 可以為實例變量給出訪問修飾符。
  • 實例變量對於類中的所有方法,構造函數和塊都是可見的。 通常,建議將這些變量設為私有(訪問級別)。 但是,可以使用訪問修飾符為這些變量提供子類的可見性。
  • 實例變量具有默認值。 對於數字,默認值為0,對於布爾值,它為false,對於對象引用,它為null。 可以在聲明期間或構造函數中指定值。
  • 可以通過調用類中的變量名來直接訪問實例變量。 但是,在靜態方法中(當實例變量具有可訪問性時),應使用完全限定名稱調用它們,如:ObjectReference.VariableName。

示例代碼

import java.io.*;
public class Employee {

// 此實例變量對於子類都是可見的。
public String name;



// salary 變量僅在Employee類中可見。
private double salary;

// name變量在構造函數中指定。
public Employee (String empName) {
name = empName;
}

// 為 salary 變量賦值
public void setSalary(double empSal) {
salary = empSal;
}

// 此方法打印員工詳細信息。
public void printEmp() {
System.out.println("name : " + name );
System.out.println("salary :" + salary);
}

public static void main(String args[]) {
Employee empOne = new Employee("Maxsu");
empOne.setSalary(15999);
empOne.printEmp();
}
}

執行上面示例代碼,得到以下結果:

name : Maxsu
salary :15999.0


3. 類/靜態變量

  • 類變量(也稱為靜態變量)在類中使用static關鍵字聲明,但在方法,構造函數或塊之外。
  • 每個類只有一個每個類變量的副本,無論從中創建多少個對象。
  • 除了聲明為常量之外,很少使用靜態變量。常量是聲明為public/private,final和static的變量。常量的初始值不能更改。
  • 靜態變量存儲在靜態存儲器中。 除了聲明的final之外,很少使用靜態變量,並將其用作公共或私有常量。
  • 程序啟動時會創建靜態變量,程序停止時會銷燬靜態變量。
  • 可見性類似於實例變量。 但是,大多數靜態變量都是公共的,因為它們必須可供該類用戶使用。
  • 默認值與實例變量相同。 對於數字,默認值為0; 對於布爾類型來說,默認值為false; 對於對象引用,默認值為null。 可以在聲明期間或構造函數中指定值。 此外,可以在特殊的靜態初始化程序塊中分配值。
  • 可以通過使用類名ClassName.VariableName調用來訪問靜態變量。
  • 將類變量聲明為public static final時,變量名(常量)都是大寫的。 如果靜態變量不是public和final,則命名語法與實例和局部變量命名規則相同。

示例

import java.io.*;
public class Employee {

// salary變量是一個私有靜態變量
private static double salary;

// DEPARTMENT是一個常量
public static final String DEPARTMENT = "研發部";

public static void main(String args[]) {
salary = 19999;
System.out.println(DEPARTMENT + "平均薪水:" + salary);
}
}

執行上面示例代碼,得到以下結果 -

研發部平均薪水:19999

注 - 如果從外部類訪問變量,則應作為:Employee.DEPARTMENT。


分享到:


相關文章: