- 相關(guān)推薦
java變量和常量是什么
java在程序中存在大量的數(shù)據(jù)來代表程序的狀態(tài),其中有些數(shù)據(jù)在程序的運(yùn)行過程中值會(huì)發(fā)生改變,有些數(shù)據(jù)在程序運(yùn)行過程中值不能發(fā)生改變,這些數(shù)據(jù)在程序中分別被叫做變量和常量。以下是小編為大家搜索整理的java變量和常量是什么,希望能給大家?guī)韼椭?
在實(shí)際的程序中,可以根據(jù)數(shù)據(jù)在程序運(yùn)行中是否發(fā)生改變,來選擇應(yīng)該是使用變量代表還是常量代表。
1.1變量
變量代表程序的狀態(tài)。程序通過改變變量的值來改變整個(gè)程序的狀態(tài),或者說得更大一些,也就是實(shí)現(xiàn)程序的功能邏輯。
為了方便的引用變量的值,在程序中需要為變量設(shè)定一個(gè)名稱,這就是變量名。例如在2D游戲程序中,需要代表人物的位置,則需要2個(gè)變量,一個(gè)是x坐標(biāo),一個(gè)是y坐標(biāo),在程序運(yùn)行過程中,這兩個(gè)變量的值會(huì)發(fā)生改變。
由于Java語言是一種強(qiáng)類型的語言,所以變量在使用以前必須首先聲明,在程序中聲明變量的語法格式如下:
數(shù)據(jù)類型 變量名稱;
例如:int x;
在該語法格式中,數(shù)據(jù)類型可以是Java語言中任意的類型,包括前面介紹到的基本數(shù)據(jù)類型以及后續(xù)將要介紹的復(fù)合數(shù)據(jù)類型。變量名稱是該變量的標(biāo)識(shí)符,需要符合標(biāo)識(shí)符的命名規(guī)則,在實(shí)際使用中,該名稱一般和變量的用途對(duì)應(yīng),這樣便于程序的閱讀。數(shù)據(jù)類型和變量名稱之間使用空格進(jìn)行間隔,空格的個(gè)數(shù)不限,但是至少需要1個(gè)。語句使用“;”作為結(jié)束。
也可以在聲明變量的同時(shí),設(shè)定該變量的值,語法格式如下:
數(shù)據(jù)類型 變量名稱 = 值;
例如:int x = 10;
在該語法格式中,前面的語法和上面介紹的內(nèi)容一致,后續(xù)的“=”代表賦值,其中的“值”代表具體的數(shù)據(jù)。在該語法格式中,要求值的類型需要和聲明變量的數(shù)據(jù)類型一致。
也可以一次聲明多個(gè)相同類型的變量,語法格式如下:數(shù)據(jù)類型 變量名稱1,變量名稱2,…變量名稱n;例如:int x,y,z;在該語法格式中,變量名之間使用“,”分隔,這里的變量名稱可以有任意多個(gè)。
也可以在聲明多個(gè)變量時(shí)對(duì)變量進(jìn)行賦值,語法格式如下:
數(shù)據(jù)類型 變量名稱1=值1,變量名稱2=值2,…變量名稱n=值n;
例如:int x = 10,y=20,z=40;
也可以在聲明變量時(shí),有選擇的進(jìn)行賦值,例如:int x,y=10,z;以上語法格式中,假如同時(shí)聲明多個(gè)變量,則要求這些變量的類型必須相同,假如聲明的變量類型不同,則只需要分開聲明即可,例如:
int n = 3;
boolean b = true;
char c;
在程序中,變量的值代表程序的狀態(tài),在程序中可以通過變量名稱來引用變量中存儲(chǔ)的值,也可以為變量重新賦值。例如:
int n = 5;
n = 10;
在實(shí)際開發(fā)過程中,需要聲明什么類型的變量,需要聲明多少個(gè)變量,需要為變量賦什么數(shù)值,都根據(jù)程序邏輯決定,這里列舉的只是表達(dá)的格式而已。
1.2 常量
常量代表程序運(yùn)行過程中不能改變的值。
常量在程序運(yùn)行過程中主要有2個(gè)作用:
代表常數(shù),便于程序的修改
增強(qiáng)程序的可讀性
常量的語法格式和變量類型,只需要在變量的語法格式前面添加關(guān)鍵字final即可。在Java編碼規(guī)范中,要求常量名必須大寫。
則常量的語法格式如下:
final 數(shù)據(jù)類型 常量名稱 = 值;
final 數(shù)據(jù)類型常量名稱1 = 值1, 常量名稱2 = 值2,……常量名稱n = 值n;
例如:
final double PI = 3.14;
final char MALE=‘M’,F(xiàn)EMALE=‘F’;
在Java語法中,常量也可以首先聲明,然后再進(jìn)行賦值,但是只能賦值一次,示例代碼如下:
final int UP;
UP = 1;
常量的兩種用途對(duì)應(yīng)的示例代碼分別如下:
代表常數(shù)
final double PI = 3.14;
int r =5;
double l = 2PIr;
double s = PIrr;
在該示例代碼中,常量PI代表數(shù)學(xué)上的∏值,也就是圓周率,這個(gè)是數(shù)學(xué)上的常數(shù),后續(xù)的變量r代表半徑,l代表圓的周長,s代表圓的面積。
則假如需要增加程序計(jì)算時(shí)的精度,則只需要修改PI的值3.14為3.1415926,重新編譯程序,則后續(xù)的數(shù)值自動(dòng)發(fā)生改變,這樣使代碼輕易修改,便于維護(hù)。
增強(qiáng)程序的可讀性
int direction;
final int UP = 1;
final int DOWN = 2;
final int LEFT = 3;
final int RIGHT = 4;
在該示例代碼中,變量direction代表方向的值,后續(xù)的四個(gè)常量UP、DOWN、LEFT和RIGHT分辨代表上下左右,其數(shù)值分別是1、2、3和4,這樣在程序閱讀時(shí),可以提高程序的可讀性。
1.3 語句塊
在程序中,使用一對(duì)大括號(hào)包含的內(nèi)容叫做語句塊,語句塊之間可以互相嵌套,嵌套的層次沒有限制,例如:
語句塊的嵌套:
}
以上代碼只是演示語法,沒有什么邏輯意義。在后續(xù)的語法介紹中,還會(huì)有語句塊的概念,就不再重復(fù)介紹了。
1.4 變量的作用范圍
每個(gè)變量都有特定的作用范圍,也叫做有效范圍或作用域,只能在該范圍內(nèi)使用該變量,否則將提示語法錯(cuò)誤。通常情況下,在一個(gè)作用范圍內(nèi)部,不能聲明名稱相同的變量。
變量的作用范圍指從變量聲明的位置開始,一直到變量聲明所在的語句塊結(jié)束的大括號(hào)為止。例如以下代碼:
char c;
}
在該代碼中,變量a的作用范圍即從第三行到第五行,變量c的作用范圍即從第六行到第七行。
Java 變量類型
在Java語言中,所有的變量在使用前必須聲明。聲明變量的基本格式如下:
type identifier [ = value][, identifier [= value] ...] ;
格式說明:type為Java數(shù)據(jù)類型。identifier是變量名?梢允褂枚禾(hào)隔開來聲明多個(gè)同類型變量。
以下列出了一些變量的聲明實(shí)例。注意有些包含了初始化過程。
int a, b, c; // 聲明三個(gè)int型整數(shù):a、 b、c int d = 3, e = 4, f = 5; // 聲明三個(gè)整數(shù)并賦予初值 byte z = 22; // 聲明并初始化 z String s = "runoob"; // 聲明并初始化字符串 s double pi = 3.14159; // 聲明了雙精度浮點(diǎn)型變量 pi char x = 'x'; // 聲明變量 x 的值是字符 'x'。
Java語言支持的變量類型有:
類變量:獨(dú)立于方法之外的變量,用 static 修飾。
實(shí)例變量:獨(dú)立于方法之外的變量,不過沒有 static 修飾。
局部變量:類的方法中的變量。
實(shí)例
public class Variable{ static int allClicks=0; // 類變量 String str="hello world"; // 實(shí)例變量 public void method(){ int i =0; // 局部變量 } }
Java 局部變量
局部變量聲明在方法、構(gòu)造方法或者語句塊中;
局部變量在方法、構(gòu)造方法、或者語句塊被執(zhí)行的時(shí)候創(chuàng)建,當(dāng)它們執(zhí)行完成后,變量將會(huì)被銷毀;
訪問修飾符不能用于局部變量;
局部變量只在聲明它的方法、構(gòu)造方法或者語句塊中可見;
局部變量是在棧上分配的。
局部變量沒有默認(rèn)值,所以局部變量被聲明后,必須經(jīng)過初始化,才可以使用。
實(shí)例 1
在以下實(shí)例中age是一個(gè)局部變量。定義在pupAge()方法中,它的作用域就限制在這個(gè)方法中。
package com.runoob.test; public class Test{ public void pupAge(){ int age = 0; age = age + 7; System.out.println("小狗的年齡是: " + age); } public static void main(String args[]){ Test test = new Test(); test.pupAge(); } }
以上實(shí)例編譯運(yùn)行結(jié)果如下:
小狗的年齡是: 7
實(shí)例 2
在下面的例子中 age 變量沒有初始化,所以在編譯時(shí)會(huì)出錯(cuò):
package com.runoob.test; public class Test{ public void pupAge(){ int age; age = age + 7; System.out.println("小狗的年齡是 : " + age); } public static void main(String args[]){ Test test = new Test(); test.pupAge(); } }
以上實(shí)例編譯運(yùn)行結(jié)果如下:
Test.java:4:variable number might not have been initialized
age = age + 7;
^
1 error
實(shí)例變量
實(shí)例變量聲明在一個(gè)類中,但在方法、構(gòu)造方法和語句塊之外;
當(dāng)一個(gè)對(duì)象被實(shí)例化之后,每個(gè)實(shí)例變量的值就跟著確定;
實(shí)例變量在對(duì)象創(chuàng)建的時(shí)候創(chuàng)建,在對(duì)象被銷毀的時(shí)候銷毀;
實(shí)例變量的值應(yīng)該至少被一個(gè)方法、構(gòu)造方法或者語句塊引用,使得外部能夠通過這些方式獲取實(shí)例變量信息;
實(shí)例變量可以聲明在使用前或者使用后;
訪問修飾符可以修飾實(shí)例變量;
實(shí)例變量對(duì)于類中的方法、構(gòu)造方法或者語句塊是可見的。一般情況下應(yīng)該把實(shí)例變量設(shè)為私有。通過使用訪問修飾符可以使實(shí)例變量對(duì)子類可見;
實(shí)例變量具有默認(rèn)值。數(shù)值型變量的默認(rèn)值是0,布爾型變量的默認(rèn)值是false,引用類型變量的默認(rèn)值是null。變量的值可以在聲明時(shí)指定,也可以在構(gòu)造方法中指定;
實(shí)例變量可以直接通過變量名訪問。但在靜態(tài)方法以及其他類中,就應(yīng)該使用完全限定名:ObejectReference.VariableName。
實(shí)例
Employee.java 文件代碼:
import java.io.*; public class Employee{ // 這個(gè)實(shí)例變量對(duì)子類可見 public String name; // 私有變量,僅在該類可見 private double salary; //在構(gòu)造器中對(duì)name賦值 public Employee (String empName){ name = empName; } //設(shè)定salary的值 public void setSalary(double empSal){ salary = empSal; } // 打印信息 public void printEmp(){ System.out.println("名字 : " + name ); System.out.println("薪水 : " + salary); } public static void main(String args[]){ Employee empOne = new Employee("RUNOOB"); empOne.setSalary(1000); empOne.printEmp(); } }
以上實(shí)例編譯運(yùn)行結(jié)果如下:
$ javac Employee.java
$ java Employee
名字 : RUNOOB
薪水 : 1000.0
類變量(靜態(tài)變量)
類變量也稱為靜態(tài)變量,在類中以static關(guān)鍵字聲明,但必須在方法構(gòu)造方法和語句塊之外。
無論一個(gè)類創(chuàng)建了多少個(gè)對(duì)象,類只擁有類變量的一份拷貝。
靜態(tài)變量除了被聲明為常量外很少使用。常量是指聲明為public/private,final和static類型的變量。常量初始化后不可改變。
靜態(tài)變量儲(chǔ)存在靜態(tài)存儲(chǔ)區(qū)。經(jīng)常被聲明為常量,很少單獨(dú)使用static聲明變量。
靜態(tài)變量在程序開始時(shí)創(chuàng)建,在程序結(jié)束時(shí)銷毀。
與實(shí)例變量具有相似的可見性。但為了對(duì)類的使用者可見,大多數(shù)靜態(tài)變量聲明為public類型。
默認(rèn)值和實(shí)例變量相似。數(shù)值型變量默認(rèn)值是0,布爾型默認(rèn)值是false,引用類型默認(rèn)值是null。變量的值可以在聲明的時(shí)候指定,也可以在構(gòu)造方法中指定。此外,靜態(tài)變量還可以在靜態(tài)語句塊中初始化。
靜態(tài)變量可以通過:ClassName.VariableName的方式訪問。
類變量被聲明為public static final類型時(shí),類變量名稱一般建議使用大寫字母。如果靜態(tài)變量不是public和final類型,其命名方式與實(shí)例變量以及局部變量的命名方式一致。
實(shí)例:
Employee.java 文件代碼:
import java.io.*; public class Employee { //salary是靜態(tài)的私有變量 private static double salary; // DEPARTMENT是一個(gè)常量 public static final String DEPARTMENT = "開發(fā)人員"; public static void main(String args[]){ salary = 10000; System.out.println(DEPARTMENT+"平均工資:"+salary); } }
以上實(shí)例編譯運(yùn)行結(jié)果如下:
開發(fā)人員平均工資:10000.0
注意:如果其他類想要訪問該變量,可以這樣訪問:Employee.DEPARTMENT。
本章節(jié)中我們學(xué)習(xí)了Java的變量類型,下一章節(jié)中我們將介紹Java修飾符的使用。
【java變量和常量是什么】相關(guān)文章:
Java常量和變量06-17
java常量和變量入門教程09-07
Java入門教程:常量和變量09-01
理解java和python類變量10-06