天天看點

《21天學通Java(第7版)》—— 2.2 變量和資料類型

本節書摘來異步社群《21天學通java(第7版)》一書中的第2章,第2.2節,作者: 【美】rogers cadenhead(羅格斯 卡登海德),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

在第1章建立的應用程式marsrobot中,您使用變量來跟蹤資訊。變量是程式運作時能夠存儲資訊的地方。可在程式的任何地方對其中的值進行修改——是以被稱為變量。

要建立變量,必須提供名稱并指定它存儲的資訊類型。還可以在建立變量的同時給它指定初始值。

在java中,有3種變量:執行個體變量、類變量和局部變量。

正如第1章中指出的,執行個體變量用于定義對象的屬性。

類變量定義類的屬性,适用于類的所有執行個體。

局部變量用于方法定義乃至方法中更小的語句塊中。僅當java虛拟機執行這些方法或語句塊時,它們才被使用,離開方法或塊之後,它們将不複存在。

雖然這3種變量的建立方式極其相似,但在使用方式上,類變量和執行個體變量不同于局部變量。本章介紹局部變量,而執行個體變量和類變量将在第3章介紹。

2.2.1 建立變量

在java程式中使用變量之前必須先建立它——聲明其名稱和存儲的資訊類型。首先指出資訊類型,然後是變量名,下面是一些變量聲明的例子:

int loanlength;

string message;

boolean gameover;

在上述示例中,int類型表示整數,string是用來存儲文本的對象,boolean用來存儲true/false值。

就像其他java語句一樣,局部變量可在方法的任何地方聲明,但必須在使用前聲明。

下面的示例在程式的main()方法開頭聲明了3個變量:

public static void main(string[] arguments) {

}

建立多個類型相同的變量時,可在同一條語句中聲明它們,并用逗号将各個變量分開。下面的語句聲明了3個名為street、city和state的string變量:

string street, city, state;

聲明變量時,可以使用等号給它指派。下面的語句建立新變量并給它們指定初始值:

string zipcode = "02134";

int box = 350;

boolean pbs = true;

string name = "zoom", city = "boston", state = "ma";

正如最後一條語句表明的,可以使用逗号分隔的方式給多個類型相同的變量指派。

對于局部變量,在程式中使用它之前,必須給它指派,否則程式将無法通過編譯。是以,良好的習慣是給所有局部變量指定初始值。

預設情況下,執行個體變量和類變量的初始值取決于其資料類型。

數值變量:0。

字元變量:"0"。

布爾變量:false。

對象:null。

2.2.2 給變量命名

在java中,變量名必須是以字母、下劃線(_)或美元符($)打頭。

變量名不能以數字打頭。在第一個字元之後,變量名可包含任何字母、數字、下劃線和美元符号的組合。

注意

另外,java語言使用unicode字元集,該字元集包括标準字元集,外加幾千個用于表示國際字母的字元。有unicode字元号的重音字元和其他符号也可用于變量名中。

在程式中給變量命名并使用它時,别忘了java是區分大小寫的——字母的大小寫必須一緻。是以,同一個程式中可以有變量x和x,而rose、rose和rose是不同的變量。

在本書或其他地方的程式中,java變量都被賦予一個有意義的名稱,它們由多個單詞組合而成。為友善辨識,可使用下述通用規則:

變量名的第一個字母小寫;

變量名中其他單詞的第一個字母大寫;

其他字母都小寫。

下面的變量聲明遵循了上述命名規則:

button loadfile;

int localareacode;

boolean quitgame;

雖然在變量名中可以使用下劃線,但除非在如下情況下,否則不應使用它:整個變量名都是大寫時,使用下劃線将各個單詞分開,如下所示:

static int days_in_week = 7;

本章後面将介紹要将整個變量名都大寫的原因。

雖然在變量名中可以使用美元符号,但在任何情況下都不應這樣做。java官方文檔建議不要使用它,是以程式員都遵循這種約定。

2.2.3 變量類型

除名稱外,變量聲明還必須包括存儲的資訊類型,這可以是:

基本資料類型,如int或boolean;

類名或接口名;

數組。

關于如何聲明和使用數組變量,将在第4章介紹。本章重點介紹其他變量類型。

1.資料類型

java提供了8種基本資料類型,用于存儲整數、浮點數、字元和布爾值。它們通常被稱為簡單類型(primitive type),因為它們是java内置的而不是對象,這使得它們更容易建立和使用。不管在什麼作業系統和平台上,這些資料類型的長度和特征都相同,這與其他程式設計語言的某些資料類型不同。

用于存儲整數的資料類型有4種,如表2.1所示。具體使用哪種類型取決于要存儲的整數大小。

表2.1  整型

類型

長度(bit)

取值範圍

byte

8

−128~127

short

16

−32768~32767

int

32

−2147483648~2147483647

long

64

−9223372036854775808~9223372036854775807

所有這些類型都是有符号的,這意味着它們既可以存儲正數,也可以存儲負數。給變量指定哪種類型取決于需要存儲的值的範圍。所有這些整型變量都不能正确存儲超出其取值範圍的值,是以在指定類型時一定要小心。

另一種數值是浮點數,其類型為float或double。浮點數是帶小數的數字。float類型的取值範圍為1.4e-45到2.4e+38;double類型的精度更高,其取值範圍為4.9e-324到1.7e+308。鑒于double的精度更高,是以它通常比float更佳。

char類型用于存儲單個字元,如字母、數字、标點和其他符号。

最後一種基本類型是boolean。正如前面介紹過的,其取值為true或false。

所有這些變量類型名都是小寫的,在程式中必須這樣使用它們。存在與這些資料類型名稱相同,但大小寫不同的類,如boolean和double。在java程式中,建立和引用它們的方式不同,是以大多數情況下不能互換。下一章将介紹如何使用這些特殊的類。

如果算上void,java中實際上有9種基本類型。void表示“空”(nothing),用于指出方法不傳回任何值。

2.類的類型

除基本資料類型外,變量的類型還可以是類,如下所示:

string lastname = "hopper";

color hair;

marsrobot robbie;

當變量的類型為類時,它指的是這種類或其子類的一個對象。

在上述代碼中,最後一條語句聲明一個名為robbie的變量,用于存儲mars robot對象。下一章将介紹如何将對象和變量關聯起來。

2.2.4 給變量指派

聲明變量後,可以用指派運算符(=,等号)給它指派。下面是兩個指派語句的例子:

idcode = 8675309;

accountoverdrawn = false;

2.2.5 常量

如果需要存儲在程式運作時可以修改的資訊,使用變量很有用。

對于在程式運作過程中一直不變的值,可以用一種特殊的變量——常量。常量是值保持不變的變量。這裡的“變量”有些用詞不當。

為對象的所有方法定義共享值時,常量很有用。在java中,可以建立各種類型的常量:執行個體常量、類常量和局部常量。

要聲明常量,可在變量聲明前加上關鍵字final,并指定初始值,如下所示:

final double pi = 3.141592;

final boolean debug = false;

final int penalty = 25;

可使用常量來表示對象的不同狀态,然後測試這些狀态。假設有一個這樣的程式,它直接從數字鍵盤讀取方向輸入——8表示向上,4表示向左,6表示向右,2表示向下等,則您可以将這些值定義為整型常量:

final int left = 4;

final int right = 6;

final int up = 8;

final int down = 2;

常量讓程式更容易了解。為了說明這一點,請看下面哪條語句更清楚地說明了其功能:

guide.direction = 4;

guide.direction = left;

在上述語句中,常量名都為大寫,如debug和left。java程式員都這樣做,以表明這是常量而不是變量;雖然java并未要求常量名必須大寫,但您最好遵循這種做法。

常量名由多個單詞組成時,将整個常量名都大寫将導緻各個單詞難以區分開來,如escapecode。在這種情況下,應使用下劃線将各個單詞分開,如下所示:

final int escape_code = 27;

本章要介紹的第一個項目是一個這樣的java應用程式:建立多個變量,給它們賦初始值,然後顯示其中兩個變量的值。請啟動netbeans,并按如下步驟建立一個java程式(其中有個步驟與第1章不同)。

1.選擇菜單“檔案”>“建立檔案”打開“建立檔案”對話框。

2.在“類别”窗格中選擇java。

3.在“檔案類型”窗格中選擇“空java檔案”,再單擊“下一步”按鈕,這将打開“空java檔案”對話框。

4.在文本框“類名”中輸入variables,這将把源代碼檔案命名為variables.java。

5.在文本框“包”中輸入com.java21days(這就是與前一章不同的步驟)。

6.單擊“完成”按鈕。

在這裡,您指定了類名和包名。包用于将相關的java程式放在一起,類似于檔案系統中的檔案夾。在源代碼編輯器中,輸入程式清單2.1所示的代碼。

程式清單2.1 variables.java的完整源代碼

1: package com.java21days;

2:

3: public class variables {

4:

5: public static void main(string[] arguments) {

6: final char up = 'u';

7: byte initiallevel = 12;

8: short location = 13250;

9: int score = 3500100;

10: boolean newgame = true;

11:

12: system.out.println("level: " + initiallevel);

13: system.out.println("up: " + up);

14: }

15: }

選擇菜單“檔案”>“儲存”将該檔案存盤。netbeans将自動編譯該應用程式——如果沒有錯誤。選擇菜單“運作”>“運作檔案”以運作該程式,其輸出如圖2.1所示。

....16-0940yds排版16-0940yds排版21天學通java(第7版) a20151938螢幕截圖ch022.1.tif{}

圖2.1 建立變量并顯示它們的值

類所屬的包是使用package語句指定的,這種語句必須位于類的最前面:

package com.java21days;

這個類使用了4個局部變量和1個常量,并在第12~13行使用system.out.println()來生成輸出。

system.out.println()是一個用于将字元串和其他資訊顯示到标準輸出裝置(通常是顯示器)上的方法。

這個方法接收一個參數:一個字元串。為了将多個變量或字面值作為println( )的參數,使用運算符+将它們合并成一個字元串。

java還提供了方法system.out.print(),它不在字元串後回車。要在同一行顯示多個字元串,可連續調用方法print(),而不是println()。