Java入門篇(二)——Java語言基礎(上)


  本篇我們開始進入Java的學習,首先在學習如何編寫Java語言前要先了解Java程序的基本結構。

一、Java程序的基本結構

  一個Java程序的基本結構大體可以分為包、類、main()主方法、標識符、關鍵字、語句和注釋等,如下:

 1 package hello;                                                // 定義包
 2 
 3 public class Structure {                                    // 創建類
 4 
 5     static int num = 1;                                // 定義類的成員變量
 6     
 7     public static void main(String[] args) {                // 定義主方法
 8         
 9         String str = "http://www.cnblogs.com/adamjwh/";        // 定義局部變量
10         
11         System.out.println(num);                            // 輸出成員變量的值
12         
13         System.out.println(str);                            // 輸出局部變量的值
14         
15     }
16 
17 }

  我們來逐一分析一下每一條語句,過多的概念我就不詳述了,只說最基本的。

  第一條語句“package hello;”定義了Java程序中類所在的包是hello,hello是一個標識符,由程序員自己定義,package是關鍵字。注意:標識符和關鍵字區分大小寫。

  第二條語句“public class Structure”用於創建一個名為Structure的類,類名由程序員自己定義,其中public及class是關鍵字,關於public和static的用法會在后續篇章中提到。

  第三條語句“static int num = 1;”定義了類的成員變量,static和int都是關鍵字,而num是一個標識符,由程序員自己定義。

  第四條語句“public static void main(String[] args)”是類的主方法,Java程序從這里開始執行,除了可以將“String[] args”改為“String args[]”外,不可改變本條語句的任何部分。

  第五條語句“String str = "http://www.cnblogs.com/adamjwh”是在主方法中定義了一個局部變量,String是一個類,用於創建字符串對象(說簡單點就是說,如果你想創建一條字符串,就使用String類),str是局部變量的名稱,為程序員自己定義的一個標識符,而后面引號中的網址是局部變量str的值,“=”為賦值運算符。

  第六條語句“System.out.println(num);”是輸出語句,這是輸出語句的固定寫法,注意區分大小寫,輸出換行為println,不換行為print。

  第七條語句同樣為輸出語句,執行將輸出str的值,即http://www.cnblogs.com/adamjwh。

二、標識符和關鍵字

  那么說了這么多是不是覺得好復雜啊,標識符、關鍵字都是什么。其實標識符可以簡單理解為一個名字,用來標識類名、變量名、方法名、數組名、文件名的有效字符序列。

  例如,定義一個變量i並賦值為100,那么我們可以寫出如下代碼: int i = 100; 

  這就是一個典型的賦值語句,其中int是定義一個整型數,i就是標識符,由程序員自己起名,但有一定的規則,簡單點來說就是由字母、數字、下划線和美元符號組成,第一個字符不能為數字,並且區分大小寫,不能為關鍵字或保留字。

  我們可以舉幾個例子看看,合法標識符如name、user、_u8080、tc_bvt等等,非法標識符如5work、7fix等等。

  上面提到的關鍵字和保留字,是Java語言中已經被賦予特定意義的一組單詞,不可作為標識符使用,比如上面代碼中的int就是關鍵字,至於java的關鍵字有哪些我就不過多的描述了,畢竟網上有很多很詳細的介紹,我們還是主要從代碼入手。

 三、基本數據類型

  了解了上面的Java程序的基本結構后是不是對Java有一定的感覺了呢,那么編寫程序肯定要用到許許多多數據,那Java中的數據又是如何分類及編寫的呢?

  在Java中有8種數據類型,其中6種是數值類型,另外兩種分別是字符類型和布爾類型,如下:

 1 public class Type {
 2     
 3     /* 整數類型 */
 4     byte myByte = 45;                // byte型變量,占一個字節,取值范圍-128~127
 5     short myShort = 100;            // short型變量,也即短整型,占兩個字節,取值范圍-32768~32767
 6     int myInt = 450;                // int型變量,也即整型,占四個字節,取值范圍-2147483648~2147483647
 7     long myLong = 45261636L;        // long型變量,也即長整型,占八個字節,取值范圍-9223372036854775808~9223372036854775807
 8     
 9     /* 浮點類型 */
10     float myFloat = 15.621F;        // 單精度浮點型,占四個字節,結尾必須加'F'或'f',如果不加自動定義為double型變量,取值范圍1.4E-45~3.4028235E-38
11     double myDouble = 15.621D;        // 雙精度浮點型,占八個字節,結尾可以加'D'或'd',也可不加,取值范圍4.9E-324~1.7976931348623157E-308
12     
13     /* 字符類型 */ 
14     char myChar = 'a';                // 字符類型變量,用於存儲單個字符,占兩個字節,需用單引號括起來
15     
16     /* 布爾類型 */
17     boolean myBoolean = true;        // 布爾類型又稱邏輯類型,只有true和false兩個值,分別代表“真”和“假”
18 }

  當我們要定義一個變量的時候,先判斷變量的數據類型,再從上方8種類型中選擇合適的類型使用即可,定義方法就如上方代碼,以“[數據類型] [變量名] = [值]”的形式即可,其中變量名需自起名,滿足上面提到的標識符的幾個條件。

  在字符類型中還有一種特殊的字符,以反斜線“\”開頭,后跟一個或多個字符,具有特定的含義,叫做轉義字符。

轉義字符 含義
\ddd 1~3位八進制數據所表示的字符,如\456
\dxxxx 4位十六進制所表示的字符,如\0051
\' 單引號字符
\\ 反斜杠字符
\t 垂直制表符,將光標移到下一個制表符的位置
\r 回車
\n 換行
\b 退格
\f 換頁

 

 

 

 

 

 

 

 

  

  轉義字符一般多用於輸出,比如“\n”回車換行,“\t”移到下一制表位,如果想要輸出單引號、雙引號、下划線等字符時,也需要用轉義字符進行輸出。

四、變量與常量

  剛剛我們提到了變量,接下來就說一下什么是變量和常量。在程序執行過程中,其值不能改變的稱為常量,其值能改變的稱為變量。變量與常量的聲明都必須使用合法的標識符,所有變量與常量只有在聲明之后才能使用。下面舉一個聲明變量的例子:

int age; // 聲明int型變量 
char c = 'J' // 聲明char型變量並賦值

  既然叫變量那肯定是能改變的,現在我們對變量進行一下改變試試:

 1 public class Variable {
 2 
 3     public static void main(String[] args) {
 4         int num = 10;                                // 定義一個變量num,並賦給初值10
 5         System.out.println("num的初值為:"+num);        // 輸出當前變量num的值為10
 6         
 7         num = 100;                                    // 將100賦給num
 8         System.out.println("num現在的值為:"+num);        // 輸出現在變量num的值為100
 9     }
10 
11 }

  上方是一段測試代碼,我們首先定義一個變量,起名為num,然后對它賦一個初值10,再對這個變量賦值為100,看兩次值的變化,運行結果如下所示:

  

  由此可以看出變量是在運行過程中其值可以改變。

  而常量在整個程序中只能被賦值一次,需通過final關鍵字進行限定,如 final double PI = 3.1415926; ,為定義一個常量,名為PI(圓周率),我們如果單獨定義一個變量是“double PI = 3.1415926;”,現在定義一個常量就是在double前加一個final關鍵字進行限定即可。

 

  看到這里,是不是對Java的聲明及定義有一些了解了呢?也許在之前大家也都見到了有些變量前有static這個關鍵字,它有什么用呢?這里就要說的變量的有效范圍了。

  變量的有效范圍是指程序代碼能夠訪問該變量的區域,若超出變量所在區域訪問變量則編譯時會出現錯誤。可分為“成員變量”和“局部變量”。

  在類體中定義的變量被稱為成員變量,成員變量在整個類中都有效,分為靜態變量和實例變量兩種。

class var {
    int x = 45;                 // 定義實例變量
    static int y = 90;        // 定義靜態變量
}

  其中x是實例變量,y是靜態變量。如果成員變量的類型前面加上static,就被稱為靜態變量,靜態變量的有效范圍可以跨類,甚至可達到整個應用程序之內,也可用“類名.靜態變量”的方式在其它類中使用(具體會在今后的篇幅中出現,想了解的可先行查閱資料)。

  而在類的方法體中定義的變量(即“{”與“}”之間的聲明變量)稱之為局部變量。只在當前代碼塊中有效,簡單點來說就是只在其所定義的大括號中有效。下面舉一個例子:

 1 public class Val {
 2 
 3     static int times = 3;                                    // 定義成員變量times
 4     public static void main(String[] args) {
 5         int times = 4;                                        // 定義局部變量times
 6         
 7         System.out.println("times的值為:" + times);            // 將times輸出
 8         System.out.println("靜態變量times的值為:" + Val.times);        // 輸出靜態變量
 9     }
10 
11 }

  輸出結果為:

  

  從這段代碼可以看出,首先在main方法外定義了一個成員變量times,並且是一個靜態變量,而在main方法內又定義了一個局部變量times。這里有人就會問了,變量名不是不能相同嗎?注意,這里第一個times是成員變量,作用范圍是針對於整個類而言,而第二個times是局部變量,只在main方法內有效,所以兩個重名並不沖突。但如果我們直接輸出times,如第一個輸出,輸出結果為4,是局部變量起了作用,因為當局部變量與成員變量名字相同時,此時成員變量將被隱藏,即這個成員變量在此方法中暫時失效。如果我們想調用成員變量,需要使用“類名.靜態變量”調用,如第二個輸出,類名為Val,靜態變量名為times,用“Val.times”即可調用靜態變量的值為3。

五、代碼注釋

  注釋可以提高程序的可讀性,注釋包含的文字不會對程序產生任何影響,在Java中,代碼注釋主要有以下幾種:

  1. 單行注釋  

  “//”為單行注釋標記,從“//”開始到換行為止的所有內容均被注釋而被編譯器忽略。

// 這是一條單行注釋

  2. 多行注釋

  “/* */”為多行注釋標記,符號“/*”與“*/”之間的所有內容均為注釋內容,可以換行。

/*
    注釋內容1
    注釋內容2
    ......
*/

  在多行注釋中可以嵌套單行注釋,比如下面的用法是正確的:

/*
    名稱:博客園    // 時間:2018-1-20
*/

  但在多行注釋中不能嵌套多行注釋。

  3. 文檔注釋

  “/** */”為文檔注釋標記。符號“/**”與“*/”之間的內容均為文檔注釋內容。當文檔注釋出現在任何聲明之前時,會被Javadoc文檔工具讀取作為Javadoc文檔內容。格式與多行注釋相同。

1 /**
2     * name: Hello World
3     * time: 2018-1-20
4     * author: Adam
5 **/

 

  下一篇將繼續介紹Java語言基礎中的運算符及類型轉換。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM