Java 的基本語法、變數
2.1 Java 的基本語法
2.1.1 Java 程式碼的基本格式
修飾符 class 類名{
程式程式碼
}
在編寫Java程式碼時,血藥特別注意幾個關鍵:
Java 中的程式程式碼可分為結構定義語句和功能執行語句,其中,結構定義語句用於宣告一個類或方法,功能執行語句用於實現具體功能。每條執行語句最後都必須用分號(;)結束。如下:
System.out.println("這是第一個Java程式!");
值得注意的是,程式不要將英文(;)誤寫成中文(;),否則編譯器會報“illegal character”(非法字元)這樣的錯誤資訊。
- Java程式是嚴格區分大小寫的;
在編寫Java 程式碼時,為了便於閱讀,通常會採用良好的方式進行排版,但這並不是必需的,出於可讀性的考慮,應該讓自己編寫的程式程式碼整齊美觀、層次清晰、通常會採用下面這種形式:
public class HelloWorld{ public static void main(String[] args){ System.out.println("這是我的第一個java程式"); } }
Java 程式中一句連線的字串不能分開在兩行書寫(為了便於閱讀,對過長的字串可以用(+)連線)
例如:System.out.println("這是我的第一個"+ "java程式");
2.1.2 Java 中的註釋
1. 單行註釋
單行註釋通常用於對程式中的某一行程式碼進行解釋,用符號“//”表示,“//”後面為被註釋的內容,具體示例如下:
int c = 10; //定義一個整形變數
2. 多行註釋
多行註釋顧名思義就是在註釋中的內容可以為多行,它以符號“/* ”開頭,以符號“*/”結尾,多行註釋具體示例如下:
/* int c = 10;
int c = 5; */
3. 文件註釋
文件註釋是以“/** ”開頭,並在註釋內容末尾以“*/ ”結束。文件註釋是對一段程式碼概括的解釋說明,可以使用javadoc命令將文件註釋提取出來生成幫助文件,關於這點將在後面學習接觸。
腳下留心
在Java中,有的註釋可以巢狀使用,有的則不可以,下面列出兩種具體的情況。
1、多行註釋“/*…*/”中可以巢狀單行註釋“//”,例如:/* int c = 10; //定義一個整形變數 int c = 5; */
2、多行註釋“/*…*/”中不能巢狀多行註釋“/*…*/”,例如:
/* /* int c = 10; */ int c = 5; */
上面的程式碼無法通過編譯的
2.1.3 Java 中的識別符號
在程式設計過程中,經常需要在程式中定義一些符號來標記一些名稱,如包名、類名、方法名、引數名、變數名等,這些符號被稱為識別符號。識別符號可以由任意順序的大小寫字母、數字、下劃線(_)和美元符號($)組成,但識別符號不能以數字開頭,不能是Java的關鍵字,否則程式碼在編譯時會報錯。
為了增強程式碼的可讀性,建議初學者在定義識別符號時還應該遵循以下規則:
- 專案的命名規則:單詞首字母大寫(英文);
- 包的命名規則:所有字母一律小寫,公司域名的倒序(com.baidu);
- 類的命名規則:類名首字母大寫;
- 常量名命名規則:所有字母都大寫,單詞之間用下劃線(_)連線,例如DAY_OF_MONTH;
- 變數名命名規則:首字母(字母;下劃線‘’;美元符號‘’)其餘部分(任意字母,任意數字,‘’,’$’)不能是關鍵字
2.1.4 Java 中的關鍵字
關鍵字是程式語言裡事先定義好並賦予了特殊含義的單詞,也稱作保留字。和其他語言一樣,Java中保留了許多關鍵字,例如,class、public等。
- 所有的關鍵字都是小寫的;
- 程式中的識別符號是不能以關鍵字命名的。
2.1.5 Java 中的常量
常量就是在程式中固定不變的值,是不能改變的資料。例如數字1、字元’a’、浮點數3.2等。在Java中,常量包括整形常量、浮點數常量、布林常量、字元常量等。
1. 整形常量(二進位制、八進位制、十進位制、十六進位制4種表達形式)
- 二進位制:有數字0和1組成的數字序列。JDK7.0允許字面值來表示進位制數,前面以0b或0B開頭,為了和十進位制區分,如:0b01101100、0B10110101。
- 八進位制:以0開頭並其後由0~7範圍內(包括0和7)的整陣列成的數字序列。如:0342。
- 十進位制:由數字0~9範圍內(包括0~9)的整陣列成的數字序列。如198。
- 十六進位制:以0x或者0X開頭並且其後由0~9、A~F(包括0和9、A和F)組成的數字序列。如:0x25AF。
2.浮點數常量(float單精度浮點數、double雙精度浮點數)
其中,單精度浮點數後面以F或f結尾,而雙精度浮點數則以D或d結尾。
2e3f 3.6f 0f 3.9d 5.201+12f
3.字元常量
'a' '1' '&' '\r' '\u0000'
上面的示例中,’\u0000’表示一個空白字元,即在單引號之間沒有任何字元。之所以能這樣表示,是因為Java採用的是Unicode字符集,Unicode字元以’\u’開頭,空白字元在Unicode碼錶示中對應的值為’\u0000’。
4.字串常量
"HelloWorld" "123" "Welcome \n XXX" ""
一個字串可以包含一個字元或多個字元,也可以不包含任何字元,及長度為零。
5.布林常量
布林常量即布林型的兩個值true和false,該常量用於區分一個事物的真與假。
6.null常量
null常量只有一個值null,表示物件引用為空。
擴充套件
整形常量進位制之間的轉換
特殊字元—-反斜槓(\)是特殊字元,被稱作轉義字元。下面常見的轉義字元:
- \r 表示回車符,將游標定位到當前行的開頭,不會跳到下一行。
- \n 表示換行符,換到下一行的開頭。
- \t 表示製表符,將游標移到下一個製表符的位置,就像在文件中用Tab一樣。
- \b 表示退格符,就像鍵盤上的Backspace鍵。
2.2 Java 的變數
2.2.1 Java 變數的定義
在程式執行期間,隨時可能產生一些臨時資料,應用程式會將這些資料儲存在一些記憶體單元中,每個記憶體單元都用一個識別符號來標識。這些記憶體單元被稱為變數,定義的識別符號就是變數名,聶村單元中儲存的資料就是變數的值。
int x= 0,y;
y=x+3;
上面程式碼中,第一行程式碼的作用是定義了兩個變數x和y,也就相當於分配了兩塊記憶體單元,在定義變數的同時為變數x分配了一個初始值0,而變數y沒有分配初始值。如圖2-2所示;
第二行程式碼的作用是為變數賦值 ,在執行第二行程式碼,程式首先取出變數x的值,與3相加後,將結果賦值給變數y,此時變數x和y在記憶體中的狀態發生了變化,如圖2-3所示。
2.2.2 Java 變數的資料型別
在Java中變數的資料型別分為兩種,即基本資料型別和引用資料型別。如圖
- 輸出Java課考試最高分:98.5
- 輸出最高分學員姓名:張三
輸出最高分學員性別:‘男’
public class Example01 { public static void main(String[ ] args) { double score = 98.5; String name = "張三"; //雙引號 char sex = '男'; //單引號 System.out.println("本次考試成績最高分: " + score);//連線輸出資訊 //輸出其他…… } }
2.2.3 Java 變數的型別轉換
程式中經常會遇到要將資料型別進行轉換的情況(如:在一個表示式中存在不同型別的運算元時),資料型別轉換有兩種情況:
自動型別轉換
/** * *某班第一次Java考試平均分81.29,第二次比第一次多2分,計算第二次考試平均分? */ class Example02{ public static void main(String[] args){ double firstAvg = 81.29; //第一次平均分 double secondAvg; //第二次平均分 int rise = 2; secondAvg = firstAvg + rise; //自動型別轉換 System.out.println("第二次平均分是:" + secondAvg); } }
在某種條件下,系統自動完成型別轉換:
–兩種型別相容
例如:int 和 double 相容
–目標型別大於源型別
例如:double 型 大於 int 型
–對於表示式
如果一個運算元為double型,則整個表示式可提升為double型強制型別轉換
/** * *去年Apple筆記本所佔的市場份額是20,今年增長的市場份額是9.8,求今年所佔的份額? * */ class Example03{ public static void main(String[] args){ int before = 20; //apple筆記本市場份額 double rise = 9.8; //增長的份額 int now = before + rise; //現在的份額 /*編譯出錯:不能完成 自動型別轉換。 *應該更改為:int now = before + (int)rise; //強制型別轉換 */ } }
在某種條件下,需要程式設計師強制轉型
–兩種型別相容
例如:int 和 double 相容
–目標型別小於源型別
例如:int 型小於double 型定義:不同資料型別之間互相轉換
1、自動型別轉換
char -> int byte | short -> int
int -> long int -> double int -> float float -> double
2、強制型別轉換
在八種基本資料型別中,基本一般是將高精度,長型別資料轉換成低精度,短型別資料,如:
double -> float , long -> int , int -> char| byte| short在引用資料型別中,一般是將有繼承關係的類進行強轉。
2.2.4 Java 變數的作用域
變數需要在它的作用域範圍內才可以被使用,這個作用範圍稱為變數的作用域。下面用個案例熟悉變數的作用域。
class Example03{
public static void main(String[] args){
int x=12; //定義了變數x
{
int y=96;
System.out.println("x is"+x);//訪問變數X
System.out.println("y is"+y);//訪問變數y
}
y=x; //訪問變數X,為變數y賦值
System.out.println("x is"+x); //訪問變數X
}
}
編譯程式報錯,結果如圖2-4所示:
出錯的原因在於在給變數y賦值時超出了它的作用域。去掉第九行,則編譯成功。