1. 程式人生 > >Java 的基本語法、變數

Java 的基本語法、變數

2.1 Java 的基本語法

2.1.1 Java 程式碼的基本格式

修飾符 class 類名{
    程式程式碼
}

在編寫Java程式碼時,血藥特別注意幾個關鍵:

  1. Java 中的程式程式碼可分為結構定義語句功能執行語句,其中,結構定義語句用於宣告一個類或方法,功能執行語句用於實現具體功能。每條執行語句最後都必須用分號(;)結束。如下:

    System.out.println("這是第一個Java程式!");
    

    值得注意的是,程式不要將英文(;)誤寫成中文(;),否則編譯器會報“illegal character”(非法字元)這樣的錯誤資訊。

  2. Java程式是嚴格區分大小寫的;
  3. 在編寫Java 程式碼時,為了便於閱讀,通常會採用良好的方式進行排版,但這並不是必需的,出於可讀性的考慮,應該讓自己編寫的程式程式碼整齊美觀、層次清晰、通常會採用下面這種形式:

    public class HelloWorld{
        public static void main(String[] args){
            System.out.println("這是我的第一個java程式"); 
        }
    }
    
  4. Java 程式中一句連線的字串不能分開在兩行書寫(為了便於閱讀,對過長的字串可以用(+)連線)
    例如:

    System.out.println("這是我的第一個"+
    "java程式");
    

2.1.2 Java 中的註釋

1. 單行註釋
單行註釋通常用於對程式中的某一行程式碼進行解釋,用符號“//”表示,“//”後面為被註釋的內容,具體示例如下:

int c = 10;      //定義一個整形變數

2. 多行註釋
多行註釋顧名思義就是在註釋中的內容可以為多行,它以符號“/* ”開頭,以符號“*/”結尾,多行註釋具體示例如下:

/* int c = 10;
   int c = 5; */

3. 文件註釋
文件註釋是以“/** ”開頭,並在註釋內容末尾以“*/ ”結束。文件註釋是對一段程式碼概括的解釋說明,可以使用javadoc命令將文件註釋提取出來生成幫助文件,關於這點將在後面學習接觸。

  1. 腳下留心
    在Java中,有的註釋可以巢狀使用,有的則不可以,下面列出兩種具體的情況。
    1、多行註釋“/*…*/”中可以巢狀單行註釋“//”,例如:

    /* int c = 10;     //定義一個整形變數
       int c = 5; */
    

    2、多行註釋“/*…*/”中不能巢狀多行註釋“/*…*/”,例如:

    /* 
        /* int c = 10;  */
        int c = 5; 
       */ 
    

    上面的程式碼無法通過編譯的

2.1.3 Java 中的識別符號

在程式設計過程中,經常需要在程式中定義一些符號來標記一些名稱,如包名、類名、方法名、引數名、變數名等,這些符號被稱為識別符號。識別符號可以由任意順序的大小寫字母、數字、下劃線(_)和美元符號($)組成,但識別符號不能以數字開頭,不能是Java的關鍵字,否則程式碼在編譯時會報錯。

  • 為了增強程式碼的可讀性,建議初學者在定義識別符號時還應該遵循以下規則:

    1. 專案的命名規則:單詞首字母大寫(英文);
    2. 包的命名規則:所有字母一律小寫,公司域名的倒序(com.baidu);
    3. 類的命名規則:類名首字母大寫;
    4. 常量名命名規則:所有字母都大寫,單詞之間用下劃線(_)連線,例如DAY_OF_MONTH;
    5. 變數名命名規則:首字母(字母;下劃線‘’;美元符號‘’)其餘部分(任意字母,任意數字,‘’,’$’)不能是關鍵字

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賦值時超出了它的作用域。去掉第九行,則編譯成功。