Java面向對象(OOP)概念
Java面向對象(OOP)概念
Java命名約定
Java對象和類
Java構造器(構造方法)
Java static關鍵字
Java this關鍵字
Java繼承
Java聚合
Java方法重載
Java方法重寫
Java super關鍵字
Java實例初始化程序塊
Java final關鍵字
Java多態
Java靜態綁定和動態綁定
Java instanceof運算符
Java抽象類
Java接口
Java抽象類和接口的區別
Java包
Java訪問修飾符
Java封裝
Java Object類
Java對象克隆
Java數組
Java包裝類
Java按值調用和引用調用
Java strictfp關鍵字
Java命令行參數
對象和類之間的區別
java中方法重載和方法重寫的區別
Java變量類型
變量提供了程序可以操作的命名存儲。 Java中的每個變量都有一個類型,它決定了變量內存的大小和佈局; 可以存儲在該存儲器中的值的範圍; 以及可以應用於變量的操作集。
變量需要先聲明才能使用,以下是變量聲明的基本形式 -
data type variable [ = value][, variable [ = value] ...] ;
這裏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中有三種變量 -
- 局部變量
- 實例變量
- 類/靜態變量
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
。