1. 程式人生 > >Java(入門之語法基礎)

Java(入門之語法基礎)

(一)入門

1、Java SE(標準版,標準版基礎核心)、Java EE(企業版,大型企業應用開發)、Java ME(嵌入式開發) 

2、(1)JDK:Java Development kit(Java開發工具包),除錯、編譯原始檔,生成文件等,包含各種開發工具(

安裝完JDK後就有JRE和JVM),現在已經更新到JDK11(現在要做的就是,趕緊熟悉JDK 8,現在已經是很多互聯

網企業標配。如果還在使用JDK4-7,那真的是要OUT,小黃呼籲大家趕緊趕緊更新新技術)

以下是各版本的名稱及釋出日期:

版本

名稱

發行日期

JDK 1.1.4

Sparkler(寶石)

1997-09-12

JDK 1.1.5

Pumpkin(南瓜)

1997-12-13

JDK 1.1.6

Abigail(阿比蓋爾–女子名)

1998-04-24

JDK 1.1.7

Brutus(布魯圖–古羅馬政治家和將軍)

1998-09-28

JDK 1.1.8

Chelsea(切爾西–城市名)

1999-04-08

J2SE 1.2

Playground(運動場)

1998-12-04

J2SE 1.2.1

none(無)

1999-03-30

J2SE 1.2.2

Cricket(蟋蟀)

1999-07-08

J2SE 1.3

Kestrel(美洲紅隼)

2000-05-08

J2SE 1.3.1

Ladybird(瓢蟲)

2001-05-17

J2SE 1.4.0

Merlin(灰背隼)

2002-02-13

J2SE 1.4.1

grasshopper(蚱蜢)

2002-09-16

J2SE 1.4.2

Mantis(螳螂)

2003-06-26

Java SE 5.0 (1.5.0)

Tiger(老虎)

2004-09-30

Java SE 6.0 (1.6.0)

Mustang(野馬)

2006-04

Java SE 7.0 (1.7.0)

Dolphin(海豚)

2011-07-28

Java SE 8.0 (1.8.0)

Spider(蜘蛛)

2014-03-18

Java SE 9   2017-09-21
Java SE 10   2018-03

https://www.oschina.net/news/100305/java-11-released-sep-25?from=timeline&isappinstalled=0(可瞭解)

     (3)JVM:Java Vistual Machine(Java虛擬機器,Java語言跨平臺就是通過JVM實現的)     (2)JRE:Java Runtime Environment(Java執行時環境),執行位元組碼檔案,包含基礎API和JVM

                   (1)原始檔(.java)、(2)編譯、(3)位元組碼檔案(.class)、(4)直譯器執行

        


          開發經驗:多練、多問、自己動手,除錯錯誤、複習和總結。

                           不追求技術的新,而是追求技術的穩定。
        
(二)變數和常量

1、Java關鍵字:Java 語言中有一些具有特殊用途的詞被稱為關鍵字

2、Java識別符號:識別符號就是用於給 Java 程式中變數、類、方法等命名的符號

    使用識別符號時,需要遵守幾條規則:

     (1)識別符號可以由字母、數字、下劃線(_)、美元符($)組成,但不能包含 @、%、空格等其它特殊字元,不能以數字
開頭
。譬如:123name 就是不合法滴

     (2)識別符號不能是 Java 關鍵字和保留字( Java 預留的關鍵字,以後的升級版本中有可能作為關鍵字),但可以包含關
鍵字和保留字。如:不可以使用 void 作為識別符號,但是 Myvoid 可以

     (3)識別符號是嚴格區分大小寫的。 所以涅,一定要分清楚 imooc 和 IMooc 是兩個不同的識別符號哦!

     (4)識別符號的命名最好能反映出其作用,做到見名知意。

3、變數

   在 Java 中,我們通過三個元素描述變數:變數型別、變數名以及變數值

   JAVA變數命名規則:
 
      (1)變數名由多單片語成時,第一個單詞的首字母小寫,其後單詞的首字母大寫,俗稱駱駝式命名法(也稱駝峰式命名
法)
,如 myAge

      (2)變數命名時,儘量簡短且能清楚的表達變數的作用,做到見名知意。如:定義變數名 stuName 儲存“學生姓名”信

        PS: Java 變數名的長度沒有限制,但 Java 語言是區分大小寫的,所以 price 和 Price 是兩個完全不同的變數哦!


   JAVA變數使用規則:先聲明後使用(可以宣告變數的同時進行初始化,也可以先聲明後賦值)

4、資料型別
    
    Java 語言是一種強型別語言。通俗點說就是,在 Java 中儲存的資料都是有型別的,而且必須在編譯時就確定其型別。  
    
    Java 中有兩類資料型別:基本資料型別、引用資料型別,在 Java 的領域裡,基本資料型別變數存的是資料本身,而引用

型別變數存的是儲存資料的空間地址

        PS: 原生型別都是小寫,原生型別的包裝類是大寫;可以這樣寫,但是這道題裡120.5後面沒有f,所以用double,主要是

double price=120.5d的d可以省略不寫,float不可以省略
   
  在 Java 程式中,不同的基本資料型別的資料之間經常需要進行相互轉換(自動型別轉換和強制型別轉換)

【自動型別轉換】

    滿足特定的條件:

         1、目標型別能與源型別相容,如 double 型相容 int 型,但是 char 型不能相容 int 型
         
         2、目標型別大於源型別,如 double 型別長度為 8 位元組, int 型別為 4 位元組,因此 double 型別的變數裡直接可

以存放 int 型別的資料,但反過來就不可以了
   
【強制型別轉換】

     語法:( 資料型別 ) 數值(強制型別轉換可能會造成資料的丟失)

     PS:就相當於一被水可以倒進一個桶,沒有任何問題,小型別到大型別屬於自動轉換。一桶水倒進杯子,如果你非要強制執

行,肯定會溢位,屬於大型別到小型別,強制轉換(記憶體溢位

5、常量的應用
   
      所謂常量,可以理解為是一種特殊的變數,值被設定後,在程式執行過程中不允許改變。語法:final 常量名 = 
值;

     程式中使用常量可以提高程式碼的可維護性。例如,在專案開發時,我們需要指定使用者的性別,此時可以定義一個常量 SEX

,賦值為 "男",在需要指定使用者性別的地方直接呼叫此常量即可,避免了由於使用者的不規範賦值導致程式出錯的情況。

     PS: 常量名一般使用大寫字元

(三)常用運算子

    運算子是一種“功能”符號,用以通知 Java 進行相關的運算。譬如,我們需要將變數 age 的值設定為 20 ,這時候就需

要一個“=”,告訴程式需要進行賦值操作。

   1、算術運算子:算術運算子主要用於進行基本的算術運算,如加法、減法、乘法、除法等。

       PS:int b=a++;(將a的值賦給b,然後再執行自增)

              int b=++a;(讓a先執行自增,然後將值賦給b)

        自增和自減運算子只能用於操作變數,不能直接用於運算元值或常量

   2、賦值運算子(% 用來求餘數,也稱為”取模運算子“)

   3、比較運算子(比較運算子用於判斷兩個資料的大小,例如:大於、等於、不等於。比較的結果是一個布林值( true 或 
false ))

        (1)> 、 < 、 >= 、 <= 只支援左右兩邊運算元是數值型別

        (2)== 、 != 兩邊的運算元既可以是數值型別,也可以是引用型別

   4、邏輯運算子

        (1)與:要求所有人都投票同意,才能通過某議題

        (2)或:只要求一個人投票同意就可以通過某議題

        (3)非:某人原本投票同意,通過非運算子,可以使其投票無效

        (4)異或:有且只能有一個人投票同意,才可以通過某議題(a ^ b)
  
   5、條件運算子
    
    條件運算子( ? : )也稱為 “三元運算子”。

          語法形式:布林表示式 ? 表示式1 :表示式2

    運算過程:如果布林表示式的值為 true ,則返回 表示式1 的值,否則返回 表示式2 的值

        String mark = (score>=60 ) ? "及格":"不及格";(表示式記得加括號)

【運算子優先順序】
      
         實際開發中,一般會使用小括號輔助進行優先順序管理

    
(四)流程控制語句

【條件語句】

   1、if

      if(條件){
         條件成立時執行程式碼
      }

      PS:如果 if 條件成立時的執行語句只有一條,是可以省略大括號滴!但如果執行語句有多條,那麼大括號就是不可或缺

   2、if... else

      if(條件的布林表示式){
         程式碼塊1
      }else{
         程式碼塊2
      }

   3、多重if

      if(條件1){
         程式碼塊1
      }else if(條件2){
         程式碼塊2
      }else{
         程式碼塊3
      }

    PS:當需要判斷的條件是連續的區間時,使用多重 if 語句是非常方便

   4、巢狀if(只有當外層 if 的條件成立時,才會判斷內層 if 的條件)

      if(條件1){
          if(條件2){
            程式碼塊1
          }else{
            程式碼塊2
          }
      }else{
         程式碼塊3
      }

   5、switch

      使用規則:

         (1)switch 後面小括號中表達式的值必須是整型或字元型

         (2)case 後面的值可以是常量數值,如 1、2;也可以是一個常量表達式,如 2+2 ;但不能是變數或帶有變數的表示式

,如 a * 2

         (3) case 匹配後,執行匹配塊裡的程式程式碼,如果沒有遇見 break 會繼續執行下一個的 case 塊的內容,直到遇到

break 語句或者 switch 語句塊結束 ,如果沒有匹配的 case 語句則執行 default 塊的程式碼

【迴圈語句】

   Java 常用的 3 種迴圈: while 、 do...while 、 for

   1、while

      while(判斷條件){
         迴圈操作
      }

       先判斷,後操作

   2、do... while

      do{
         迴圈操作
      }while(判斷條件)

       先執行,後判斷

   3、for

      for(迴圈變數初始化;迴圈條件;迴圈變數變化){
         迴圈操作
      }

   4、break(跳出整個迴圈

   5、continue(跳出本次迴圈

   6、多重迴圈

     迴圈體中包含迴圈語句的結構稱為多重迴圈。三種迴圈語句可以自身巢狀,也可以相互巢狀,最常見的就是二重迴圈。

二重迴圈中,外層迴圈每執行一次,內層迴圈要執行一圈

(五)陣列

    陣列可以理解為是一個巨大的“盒子”,裡面可以按順序存放多個型別相同的資料,比如可以定義 int 型的陣列 

scores 儲存 4 名學生的成績(陣列下標從0開始)

       1、使用陣列(三個步驟)

    (1)宣告陣列

         語法:  資料型別[ ] 陣列名;(或資料型別 陣列名[ ];)

         其中,陣列名可以是任意合法的變數名

    (2)分配空間

         語法:  陣列名 = new  資料型別 [ 陣列長度 ];(陣列長度就是陣列中能存放元素的個數)

    (3)賦值(初始化)

            分配空間後就可以向陣列中放資料了,陣列中元素都是通過下標來訪問的

        PS:在 Java 中還提供了另外一種直接建立陣列的方式,將宣告陣列、分配空間和賦值合併完成

                 int[] scores={1,2,3,4};

                 int[] scores=new int[]{1,2,3,4};(不能指定長度


    2、遍歷陣列中的元素(陣列名.length 用於獲取陣列的長度)
        
      (1)陣列下標從 0 開始。因此 scores[3] ,表示陣列中的第 4 個元素,而並非第 3 個元素

      (2)陣列下標的範圍是 0 至 陣列長度-1 ,如果越界訪問,就會報錯
        
            // 使用迴圈遍歷陣列中的元素
            for(int i=0;i<hobbys.length;i++){

                 System.out.println(hobbys[i])

              }


    3、使用Arrays運算元組

    Arrays 類是 Java 中提供的一個工具類,在 java.util 包中。該類中包含了一些方法用來直接運算元組,比如可直接
實現陣列的排序、搜尋等

    (1)語法:  Arrays.sort(陣列名);
 
            可以使用 sort( ) 方法實現對陣列的排序,只要將陣列名放在 sort( ) 方法的括號中,就可以完成對該陣列的排
序(按升序排列)

    (2)語法:  Arrays.toString(陣列名);

        可以使用 toString( ) 方法將一個數組轉換成字串,該方法按順序把多個數組元素連線在一起,多個元素之間
使用逗號和空格隔開

    4、使用 foreach 運算元組

     foreach 並不是 Java 中的關鍵字,是 for 語句的特殊簡化版本,在遍歷陣列、集合時, foreach 更簡單便捷。

      語法:foreach(元素型別 元素變數:遍歷物件){

                    執行的程式碼

                 }

    5、二維陣列

    所謂二維陣列,可以簡單的理解為是一種“特殊”的一維陣列,它的每個陣列空間中儲存的是一個一維陣列。

       (1)宣告陣列並分配空間

              資料型別[][] 陣列名=new 資料型別[行的個數][列的個數];

       (2)賦值:二維陣列的賦值,和一維陣列類似,可以通過下標來逐個賦值,注意索引從 0 開始,也可以在宣告陣列的同

時為其賦值

       (3)處理陣列:二維陣列的訪問和輸出同一維陣列一樣,只是多了一個下標而已。在迴圈輸出時,需要裡面再內嵌一個

迴圈,即使用二重迴圈來輸出二維陣列中的每一個元素
    

(六)方法

    語法:訪問修飾符  返回值型別  方法名(引數列表){
                   方法體
                }

   其中:

    1、 訪問修飾符:方法允許被訪問的許可權範圍, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示

該方法可以被其他任何程式碼呼叫,其他幾種修飾符的使用在後面章節中會詳細講解滴

   2、 返回值型別:方法返回值的型別,如果方法不返回任何值,則返回值型別指定為 void ;如果方法具有返回值,則需要

指定返回值的型別,並且在方法體中使用 return 語句返回值

   3、 方法名:定義的方法的名字,必須使用合法的識別符號

   4、 引數列表:傳遞給方法的引數列表,引數可以有多個,多個引數間以逗號隔開,每個引數由引數型別和引數名組成,以
空格隔開 

   根據方法是否帶參、是否帶返回值,可將方法分為四類

      Ø 無參無返回值方法

      Ø 無參帶返回值方法

      Ø 帶參無返回值方法

      Ø 帶參帶返回值方法

  5、 方法的過載:如果同一個類中包含了兩個或兩個以上方法名相同、方法引數的個數、順序或型別不同的方法,則稱為方法
的過載,也可稱該方法被過載

     判斷方法過載的依據:

       (1)必須是在同一個類中

       (2)方法名相同

       (3)方法引數的個數、順序或型別不同

       (4)與方法的修飾符或返回值沒有關係