Java變量類型
在Java中,所有的變量必須先聲明才能使用它們。變量聲明的基本形式如下:
type identifier [ = value][, identifier [= value] ...] ;
type 是Java 的數據類型之一。該標識符是該變量的名稱。申報指定類型的多個變量,用逗號分隔的列表。
下麵是各種類型的變量聲明的幾個例子。需要注意的是它們可能也包括初始化。
int a, b, c; // declares three ints, a, b, and c. int d = 3, e, f = 5; // declares three more ints, initializing // d and f. byte z = 22; // initializes z. double pi = 3.14159; // declares an approximation of pi. char x = 'x'; // the variable x has the value 'x'.
本章將解釋各種變量類型Java語言提供。有三種類型的變量在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(); } }
這將產生以下結果:
Puppy age is: 7
例如:
下麵的示例使用 age 冇有初始化它,所以它會在編譯時給出錯誤信息。
public class Test{ public void pupAge(){ int age; age = age + 7; System.out.println("Puppy age is : " + age); } public static void main(String args[]){ Test test = new Test(); test.pupAge(); } }
編譯它,這將產生以下錯誤:
Test.java:4:variable number might not have been initialized age = age + 7; ^ 1 error
實例變量:
-
實例變量在類中聲明,但在方法的外麵,構造函數或任何塊。
-
當空間分配給某個對象在堆中,插槽為每個實例變量創建值。
-
當一個對象與使用關鍵字 “new” 來創建,在對象被銷毀銷毀創建的實例變量。
-
實例變量認為必須由一個以上的方法,構造函數或塊,或一個對象的狀態的關鍵部分必須出現在整個類中引用的值。
-
實例變量可以在使用前或後級的級彆聲明。
-
訪問修飾符可以給出實例變量。
-
實例變量對於所有方法,構造函數和塊在類中可見。通常,建議,使這些變量私有(接入層)。然而能見度子類可以給這些變量與使用訪問修飾符。
-
實例變量有默認值。對於數字的默認值是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
注意:如果變量是從外部類訪問的常數應被訪問 Employee.DEPARTMENT
下一節學習什麼?
在本章中所使用的訪問修飾符 ( public & private )。下一章將介紹訪問修飾符和非訪問修飾符。