更新時間:2022-09-29 11:18:48 來源:動力節(jié)點(diǎn) 瀏覽1226次
變量為我們提供了程序可以操作的命名存儲。Java中的每個變量都有一個特定的類型,它決定了變量內(nèi)存的大小和布局;可存儲在該存儲器中的值的范圍;以及可以應(yīng)用于變量的操作集。
必須先聲明所有變量,然后才能使用它們。以下是變量聲明的基本形式
data type variable [ = value][, variable [ = value] ...] ;
這里的數(shù)據(jù)類型是Java的數(shù)據(jù)類型之一,變量是變量的名稱。要聲明指定類型的多個變量,可以使用逗號分隔的列表。
以下是Java中變量聲明和初始化的有效示例
實(shí)例
int a, b, c; // Declares three ints, a, b, and c.
int a = 10, b = 10; // Example of initialization
byte B = 22; // initializes a byte type variable B.
double pi = 3.14159; // declares and assigns a value of PI.
char a = 'a'; // the char variable a iis initialized with value 'a'
局部變量
實(shí)例變量
類/靜態(tài)變量
局部變量在方法、構(gòu)造函數(shù)或塊中聲明。
局部變量是在輸入方法、構(gòu)造函數(shù)或塊時創(chuàng)建的,變量一旦退出方法、構(gòu)造函數(shù)或者塊就會被銷毀。
訪問修飾符不能用于局部變量。
局部變量僅在聲明的方法、構(gòu)造函數(shù)或塊中可見。
局部變量在內(nèi)部堆棧級別實(shí)現(xiàn)。
局部變量沒有默認(rèn)值,因此應(yīng)聲明局部變量,并在首次使用前分配初始值。
實(shí)例
在這里,年齡是一個局部變量。這是在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();
}
}
這將產(chǎn)生以下結(jié)果
輸出
Puppy age is: 7
實(shí)例
下面的示例使用age而不進(jìn)行初始化,因此在編譯時會給出錯誤。
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();
}
}
這將在編譯時產(chǎn)生以下錯誤
輸出
Test.java:4:variable number might not have been initialized
age = age + 7; ^
1 error
實(shí)例變量在類中聲明,但在方法、構(gòu)造函數(shù)或任何塊之外。
當(dāng)為堆中的對象分配空間時,將為每個實(shí)例變量值創(chuàng)建一個槽。
使用關(guān)鍵字“new”創(chuàng)建對象時創(chuàng)建實(shí)例變量,銷毀對象時銷毀實(shí)例變量。
實(shí)例變量包含必須由多個方法、構(gòu)造函數(shù)或塊引用的值,或者必須在整個類中出現(xiàn)的對象狀態(tài)的基本部分。
實(shí)例變量可以在使用之前或之后在類級別聲明。
可以為實(shí)例變量提供訪問修飾符。
實(shí)例變量對于類中的所有方法、構(gòu)造函數(shù)和塊都可見。通常,建議將這些變量設(shè)置為私有(訪問級別)。但是,可以使用訪問修飾符為這些變量提供子類的可見性。
實(shí)例變量具有默認(rèn)值。對于數(shù)字,默認(rèn)值為0,對于布爾值為false,對于對象引用為null。值可以在聲明期間或在構(gòu)造函數(shù)內(nèi)賦值。
通過在類內(nèi)調(diào)用變量名,可以直接訪問實(shí)例變量。然而,在靜態(tài)方法中(當(dāng)實(shí)例變量被賦予可訪問性時),應(yīng)該使用完全限定名來調(diào)用它們。對象引用.VariableName。
實(shí)例
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();
}
}
這將產(chǎn)生以下結(jié)果
輸出
name : Ransika
salary :1000.0
類變量也稱為靜態(tài)變量,在類中用static關(guān)鍵字聲明,但在方法、構(gòu)造函數(shù)或塊之外。
每個類只能有一個類變量的副本,而不管從中創(chuàng)建了多少個對象。
除了聲明為常量之外,很少使用靜態(tài)變量。常量是聲明為public/private、final和static的變量。常量變量從不改變其初始值。
靜態(tài)變量存儲在靜態(tài)內(nèi)存中。很少使用聲明為final以外的靜態(tài)變量,并將其用作公共或私有常量。
靜態(tài)變量在程序啟動時創(chuàng)建,在程序停止時銷毀。
可見性類似于實(shí)例變量。然而,大多數(shù)靜態(tài)變量被聲明為公共變量,因?yàn)樗鼈儽仨殞︻惖挠脩艨捎谩?/p>
默認(rèn)值與實(shí)例變量相同。對于數(shù)字,默認(rèn)值為0;對于布爾人來說,這是錯誤的;對于對象引用,它為空。值可以在聲明期間或在構(gòu)造函數(shù)內(nèi)賦值。此外,可以在特殊的靜態(tài)初始值設(shè)定項(xiàng)塊中分配值。
可以通過調(diào)用類名ClassName.VariableName來訪問靜態(tài)變量。
當(dāng)將類變量聲明為publicstaticfinal時,變量名(常量)都是大寫的。如果靜態(tài)變量不是public和final,則命名語法與實(shí)例和局部變量相同。
實(shí)例
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);
}
}
這將產(chǎn)生以下結(jié)果
輸出
Development average salary:1000
如果變量是從外部類訪問的,則常量應(yīng)作為Employee.DEPARTMENT訪問。如果大家想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細(xì)致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743