java類中區域性變數,例項變數,類/靜態變數區別解析
區域性變數:
-
區域性變數的方法,建構函式或塊中宣告。
-
建立區域性變數的方法,建構函式或塊時進入,一旦退出方法,建構函式或塊中的變數將被銷燬。
-
訪問修飾符不能用於區域性變數。
-
區域性變數是可見的,只有內宣告的方法,建構函式或塊。
-
區域性變數在堆疊級別內部實現。
-
在這裡對區域性變數沒有預設值,因此區域性變數應該宣告和初始值應在第一次使用前分配。
在這裡,age 是一個區域性變數。這是定義裡面 pupAge() 方法,其範圍僅限於該方法。
public class Test{ public void pupAge(){ int age = 0; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args[]){ Test test = new Test(); test.pupAge(); } }
例項變數:
例項變數在類中宣告,但在方法的外面,建構函式或任何塊。
當空間分配給某個物件在堆中,插槽為每個例項變數建立值。
例項變數認為必須由一個以上的方法,建構函式或塊,或一個物件的狀態的關鍵部分必須出現在整個類中引用的值。
例項變數可以在使用前或後級的級別宣告。
訪問修飾符可以給出例項變數。
例項變數對於所有方法,建構函式和塊在類中可見。通常,建議,使這些變數私有(接入層)。然而能見度子類可以給這些變數與使用訪問修飾符。
例項變數有預設值。對於數字的預設值是0,為布林值是false和物件引用為null。值可以在宣告或建構函式中分配。
例項變數可以直接通過呼叫變數名的類的內部訪問。然而在靜態方法和不同的類(當例項變數被賦予訪問)應使用完全限定名呼叫 ObjectReference.VariableName.
例子:
import java.io.*; public class Employee{ // this instance variable is visible for any child class. public String name; // salary variable is visible in Employee class only. private double salary; // The name variable is assigned in the constructor. public Employee (String empName){ name = empName; } // The salary variable is assigned a value. public void setSalary(double empSal){ salary = empSal; } // This method prints the employee details. public void printEmp(){ System.out.println("name : " + name ); System.out.println("salary :" + salary); } public static void main(String args[]){ Employee empOne = new Employee("Ransika"); empOne.setSalary(1000); empOne.printEmp(); } }
這將產生以下結果:
name : Ransika salary :1000.0
類/靜態變數:
類變數也稱為靜態變數在類的static關鍵字宣告的,但在方法外面,建構函式或塊。
每個類變數只有一個副本,不管有多少物件從它被建立。
靜態變數很少使用不是被宣告為常量等。常量是被宣告為公共/私營,最終和靜態變數。常量變數從來沒有從他們的初始值改變。
靜態變數被儲存在靜態儲存器中。這是罕見的使用靜態變數以外宣告為final,用作公共或私有常數。
在程式啟動時的靜態變數被建立,在程式停止銷燬。
能見度類似於例項變數。然而,大多數靜態變數宣告為 public,因為它們必須可用於類的使用者。
預設值是相同的例項變數。對於數字,預設值是0;為布林值,它是假的,和物件引用,它為null。值可以在宣告或建構函式中分配。另外值可以在特殊的靜態初始化塊進行分配。
靜態變數可以通過呼叫與類名來訪問。 ClassName.VariableName.
當定義的變數為 public static final ,那麼變數的名稱(常量)都是大寫。如果靜態變數是不公開的和最終的命名語法是相同的例項變數和區域性變數。
例子:
import java.io.*;
public class Employee{
// salary variable is a private static variable
private static double salary;
// DEPARTMENT is a constant
public static final String DEPARTMENT = "Development ";
public static void main(String args[]){
salary = 1000;
System.out.println(DEPARTMENT+"average salary:"+salary);
}
}
這將產生以下結果:Development average salary:1000