Java培訓教程分享:變數與常量
在程式執行過程中,其值不能被改變的量稱為常量,其值能被改變的量稱為變數。變數與常量在編寫程式中需要經常使用,本節將詳細介紹變數與常量的使用方法。
識別符號
識別符號(identifier)用於命名變數、常量、方法、類、包等實體。
識別符號命名規則:
識別符號是由字母、數字、下劃線“_”、美元符號“$”組成的字元序列。
識別符號必須以字母、下劃線“_”、美元符號“$”開頭,不能以數字開頭。
識別符號不能是關鍵字和保留字。
識別符號不能包含空格。
例如,$6,name,Class,java,_pwd都是合法的識別符號,而2a,class,c++,hello world,a@都是非法的識別符號,不符合識別符號命名規則。Java編譯器會檢測出非法識別符號並報錯。
變數的定義
變數的使用是程式設計中一個十分重要的環節,定義變數就是告訴編譯器這個變數的資料型別,這樣編譯器才知道需要配置多少記憶體空間給它,以及它能存放什麼樣的資料。在程式執行過程中,空間內的值是變化的,這個記憶體空間就稱為變數。為了便於操作,給這個空間取個名字,稱為變數名。變數的命名必須是合法的識別符號。記憶體空間內的值就是變數值,在宣告變數時可以是沒有賦值,也可以是直接賦給初值。
宣告變數的語法格式如下:
資料型別 變數名;
如需宣告多個相同型別變數時,可使用下面的語法格式:
資料型別 變數名1,變數名2,…,變數名n;
接下來,透過具體的程式碼學習變數的定義,具體示例如下:
int n,q=1; // 定義了二個int型別的變數,為q賦初值為1
double x, y, z; // 定義了三個double型別的變數
對於變數的命名並不是任意的,應遵循以下4條規則:
(1)變數名必須是一個有效的識別符號。
(2)變數名不可以使用Java關鍵字。
(3)變數名不能重複。
(4)應選擇較有意義的單詞作為變數名。
變數的型別轉換
Java的資料型別在定義時就已經明確了,但程式中有時需要進行資料型別的轉換,Java允許使用者有限度地進行資料型別轉換。資料型別轉換方式分為自動型別轉換和強制型別轉換兩種。
1.自動型別轉換
自動型別轉換也稱隱式型別轉換,指兩種資料型別轉換過程中不需要顯式地進行宣告。Java會在下列的條件成立時,自動做資料型別的轉換:
(1)轉換的兩種資料型別彼此相容。
(2)目標資料型別的取值範圍比原型別大。
型別轉換隻限該行語句,並不會影響原先定義的變數型別,而且自動型別轉換可以保持資料的精確度,不會因為轉換而丟失資料內容。
Java支援自動型別轉換的型別,如圖所示。
圖2.1 自動資料型別轉換圖
自動型別轉換示例說明如下:
byte b = 97; // 宣告byte型變數值為97
char c = b; // 錯誤,byte型別不能自動型別轉換為char型別
float f = b; // 正確,byte型別能自動型別轉換為float型別
double d = 'c'; // 正確,char型別能自動型別轉換為double型別
在Java中,任何基本型別的值和字串進行連結運算“+”時,基本型別的值將自動型別轉換為字串型別,字串用String類表示,是引用型別。具體示例如下:
String s = 97; // 錯誤,不能直接將基本型別賦值給字串
String str = 97 + ""; // 正確,基本型別的值自動轉換為字串,""代表空字串
2.強制型別轉換
強制型別轉換也稱為顯式轉換,指兩種資料型別轉換過程中需要顯式地進行宣告。當轉換的兩種資料型別彼此不相容,或者目標資料型別的取值範圍小於原型別時,而無法進行自動型別轉換,此時就需要進行強制型別轉換,如例2-1所示。
例2-1 TestTypeCast.java
1 public class TestTypeCast {
2 public static void main(String[] args) {
3 int n = 128;
4 byte b = n;
5 System.out.println(b);
6 }
7 }
程式的執行結果如圖所示。
圖2.2 例2-1執行結果
圖2.9出現了編譯錯誤,提示第4行程式碼型別不相容,出現這樣錯誤的原因是將int轉換到byte時,int型別的取值範圍大於byte型別的取值範圍,轉換會導致精度損失,也就是用1個位元組的變數來儲存4個位元組的變數值。
對第4行程式碼進行強制型別轉換,修改為下面的程式碼:
byte b = (byte) n;
程式的執行結果如圖所示。
圖2.3 例2-1修改後執行結果
當試圖強制把取值範圍大的型別轉換為取值範圍小的型別時,將會引起溢位,從而導致資料丟失。圖2.10中執行結果為-128,出現這種現象的原因是,int型別佔4個位元組,byte型別佔1個位元組,將int型別變數強制轉換為byte型別時,Java會將int型別變數的3個高位位元組截斷,直接丟棄,變數值發生了改變,如圖所示。
圖2.4 強制轉換過程
變數的作用域
變數的作用域是指它的作用範圍,只有在這個範圍內,程式程式碼才能訪問它。變數宣告在程式中的位置決定了變數的作用域。變數一定會宣告在一對大括號中,該大括號所包含的程式碼區域就是這個變數的作用域,下面透過一個示例來分析變數的作用域。如例2-2所示
例2-2 TestScope.java
1 public class TestScope {
2 public static void main(String[] args) {
3 int x = 100; // 定義變數x
4 {
5 int y = 200; // 定義變數y
6 }
7 System.out.println(y); // 訪問變數y
8 }
9 }
程式的執行結果如圖所示。
圖2.5 例2-2編譯報錯
圖2.12出現了編譯錯誤,提示“找不到符號”。報錯的原因在於,定義的變數y超出了作用域。將第7行程式碼放置在第5行程式碼之後,再次編譯程式不再報錯,程式的執行結果如圖所示。
圖2.6 例2-2執行結果
常量
常量就是一個固定的值,是不能被改變的資料。Java程式中使用的直接量稱為常量,是在程式中透過原始碼直接給出的值,在程式執行過程中都不會改變,也稱最終量。
1.整型常量
整型常量是整數型別的資料,可分為二進位制、八進位制、十進位制和十六進位制4種,具體表示如下:
二進位制:由數字0和1組成,用0b或0B開頭的字面值,如0b110、0B110。
八進位制:由數字[0, 7]範圍內的整陣列成,用0開頭的字面值,如0110。
十進位制:由數字[0, 9]範圍內的整陣列成的字面值,如110。
十六進位制:由數字[0, 9]和字元[A, F]範圍內組成,用0x或0X開頭的字面值,如0x12、0XAbA。
2.浮點數常量
浮點數就是實數,包含有小數點,可以用標準小數形式和科學計數法形式兩種方式表示,具體表示如下:
標準小數:由整數部分、小數點和小數部分構成,如1.5、2.2。
科學計數法:由一個標準式加上一個以10為底的冪構成,兩者間用e或E隔開,如1.2e+6、5E-8。
在Java中,分為float單精度浮點數和double雙精度浮點數兩種型別,單精度浮點數以f或F結尾,雙精度浮點數以d或D結尾。不加字尾會預設為double雙精度浮點數。
3.字元常量
字元常量有三種形式,具體表示如下:
用單引號括起來的字元。如'a'、'0'。
跳脫字元。如'\n'、'\t'、'\0'。
用Unicode值表示的字元,格式是'\uXXXX',其中XXXX代表一個十六進位制的整數。如'\u0000'。
4.字串常量
字串常量就是用雙引號括起來的字元序列。如"歡迎學習Java"、"A"。
5.布林常量
布林常量就是布林型別的兩個值true和false,用於表示真和假。
6.null常量
null常量只有一個值null,表示物件引用為空。
多學一招:跳脫字元
Java定義了一種特殊的標記來表示特殊字元,這種標記稱為轉義序列,轉義序列由(\)後面加上一個字元或者一些數字位組成。如\t表示Tab字元的轉義符,\u000A表示換行符\n。轉義序列中的序列號作為一個整體翻譯,而不是分開翻譯。一個轉義序列被當做一個字元。
常用的轉義序列如下:
\b,退格鍵,Unicode碼為\u0008。
\t,Tab鍵,Unicode碼為\u0009。
\n,換行符,Unicode碼為\u000A。
\r,回車符,Unicode碼為\u000D。
反斜槓\被稱為跳脫字元,它是一個特殊字元。有特殊意義的字元,無法直接表示,需要用轉義序列來表示。
\',單引號字元,Java中單引號表示字元的開始和結束,直接寫單引號字元('),編譯器會匹配前兩個是一對,會報錯,所以需要使用跳脫字元\'。
\",雙引號字元,Java中雙引號表示字串的開始和結束,要顯示雙引號需要使用跳脫字元\",如"歡迎學習\"Java\""。
\\,反斜槓字元,Java中的反斜槓是跳脫字元,要顯示反斜槓,需要使用跳脫字元\\。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2776715/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java培訓基礎知識-Java的常量與變數Java變數
- 好程式設計師Java培訓分享jdk安裝與環境變數配置程式設計師JavaJDK變數
- JAVA基礎04——變數與常量Java變數
- 常量與變數變數
- 好程式設計師Java培訓分享HashMap成員變數解析程式設計師JavaHashMap變數
- 好程式設計師Java培訓分享Java之命名、標示符、變數程式設計師Java變數
- java變數及常量Java變數
- java常量和變數Java變數
- 二,Java中常量與變數的理解Java變數
- 好程式設計師Java培訓分享Java教程垃圾回收與演算法程式設計師Java演算法
- 六、常量與變數變數
- PHP 常量與變數PHP變數
- java培訓面試技巧分享Java面試
- Java培訓教程之物件的建立與使用Java物件
- 四:java常量和變數Java變數
- java培訓分享:java培訓架構師學習線路圖Java架構
- Java基礎-基礎語法-變數與常量Java變數
- java培訓教程分享:Java中使用者如何自定義異常?Java
- destoon 系統常量與變數變數
- PHP變數與常量學習PHP變數
- java培訓教程分享:Java編寫軟體程式碼自動提示功能Java
- C++入門教程(20):變數、不變數和常量C++變數
- Java培訓分享學Java需要哪些基礎?Java
- 好程式設計師Java培訓分享Java EE與Java的區別程式設計師Java
- 最新Java培訓-NIO實戰教程Java
- 培訓Java與自學Java的差距Java
- Java培訓教程:Java中的位移運算子!Java
- VBA靜態變數與常量(轉)變數
- 長沙Java培訓:JAVA練手專案分享Java
- 長沙Java培訓:Java開源專案分享Java
- 【Web前端培訓】預解析(變數提升)Web前端變數
- Java基礎06:變數、常量、作用域Java變數
- Java培訓教程之使用Lock取代synchronizedJavasynchronized
- 變數與常量 - Go 學習記錄變數Go
- 重溫手冊(二):變數與常量變數
- Java培訓分享:學習Java需要什麼軟體?Java
- 長沙Java培訓:Java開源IDE工具分享JavaIDE
- Java培訓分享5個常用Java程式碼混淆器Java