變數提供了程式可以操作的命名存盤, Java中的每個變數都有一個型別,它決定了變數記憶體的大小和布局; 可以存盤在該存盤器中的值的范圍; 以及可以應用于變數的操作集,
變數需要先宣告才能使用,以下是變數宣告的基本形式 -
data type variable [ = value][, variable [ = value] ...] ;
Java
這里data type是Java的資料型別之一,variable是變數的名稱,要宣告具有相同型別的多個變數,可以使用逗號分隔串列,
以下是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語言中的各種變數型別,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();
}
}
Java
執行上面示例代碼,得到以下結果:
Dog age is : 5
Shell
示例
下面示例中使用變數 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();
}
}
Java
執行上面示例代碼,得到以下結果(出錯):
Test.java:4:variable number might not have been initialized
age = age + 5;
^
1 error
Shell
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();
}
}
Java
執行上面示例代碼,得到以下結果:
name : Maxsu
salary :15999.0
Shell
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);
}
}
Java
執行上面示例代碼,得到以下結果 -
研發部平均薪水:19999
Shell
注 - 如果從外部類訪問變數,則應作為:
Employee.DEPARTMENT,
完整的Java初級,高級對應的學習路線和資料!專注于java開發,分享java基礎、原理性知識、JavaWeb實戰、spring全家桶、設計模式、分布式及面試資料、開源專案,助力開發者成長!
歡迎關注微信公眾號:碼邦主

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/209838.html
標籤:Java
上一篇:深入理解JAVA并發鎖
下一篇:技術點7:Servlet程式
