Java基礎語法

你之因此能優於別人,正是由於你堅持了別人所不能堅持的。
本文相關代碼在個人Github,歡迎Star~
https://github.com/zhangzhibo1014/DaBoJava

前言

俗話說 「工欲善其事,必先利其器」 ,做爲 Java 開發人員,不只要學習更多的技術棧,並且要時常回顧 Java 的基礎。 Java 基礎掌握的牢固,後續的開發也會變得相對 easy !下面一文講述的是Java基礎語法,對於剛入門的小白也很是適合哦!java

標識符

標識符: 如同人的姓名同樣,在計算機程序中爲常量,變量,類,方法等進行命名。git

命名規則:程序員

  • 數字字母下劃線(_)美圓符號($)組成
  • 不能以數字開頭
  • 不能爲Java中的關鍵字
  • 嚴格區分大小寫,不能包含空格
  • 能夠爲中文,但不推薦使用

PSgithub

  • 起名字的目的是爲了讓人們記住,因此最好作到(見名知意)。編程

    1.包名 - 全小寫,多級中間用[.]分割,通常爲域名的倒敘
        example: top.zhangzhibo
    2.類名/接口名 - 開頭字母大寫,多個單詞每一個單詞首字母都大寫
        example: HelloWorld  Student
    3.方法名/變量 - 開頭字母小寫,多個單詞從第二個單詞開始首字母大寫
        example: display()  setAge()  getAge()  name  firstName
    4.常量 - 每一個字母都大寫,多個單詞之間用下劃線(_)分隔
        example: SCORE MAX_AGE
    5.項目名 - 每一個字母都小寫,多個單詞之間用(-)分隔
        example: demo java-demo
  • 儘可能採用駝峯式的命名方式數組

    example: 蘋果 apple /  筆記本 noteBook

關鍵字

關鍵字:Java 語言賦予了特殊含義,用做專門用途的字符串。微信

  • 關鍵字不能做爲標識符出現,可是能夠是標識符其中的一部分。
  • example: int,long,double
    abstract assert boolean break byte case catch
    char class continue const default do double
    else extends enum final finally float for
    goto if implements import instanceof int interface
    long native new package private protected public
    return short static synchronized super strictfp this
    throw throws transient try void volatile while

註釋

註釋是用來對當前編寫的代碼進行解釋,方便後續人員的維護。所以,咱們在編寫代碼的時候必定要書寫註釋,養成良好的編程習慣數據結構

Java中的註釋有三種
1.單行註釋
    // 我是註釋的內容
2.多行註釋
    /*
        你好呀!
        我是註釋。
    */
3.文檔註釋,可使用javadoc生成文檔
    /**
      * 我是文檔註釋。
      */

注意app

  • 被註釋的文字不會被編譯
  • 多行註釋和文檔註釋不能嵌套使用!

數據類型

Java是強類型語言,對於每一種數據都須要定義明確的數據類型函數

  1. Java 中數據類型分爲基本數據類型引用數據類型

    • 基本數據類型分爲數值型(整型、浮點型)、字符型、布爾型,共8種.
      byte、short、char、int、long、float、double、boolean
    • 引用數據類型:類、數組、接口等(此處不過多介紹,後續會詳細說明)
  2. 整型:用於表示沒有小數部分的數值,它容許爲負數。

    類型 存儲空間 取值範圍 默認值
    byte 1個字節 -128 ~ 127 0
    short 2個字節 -32768 ~ 32767 0
    int 4個字節 -2147483648 ~ 2147483647 0
    long 8個字節 -9223372036854775808 ~ 9223372036854775807 0

    註釋

    int爲整型的默認類型.
    在聲明long類型變量時,須要數字末尾加上L/l. example: long l1 = 100L;
  3. 浮點型:用於表示有小數部分的數值

    類型 存儲空間 取值範圍 默認值
    float 4個字節 大約 ± 3.40282347E+38F(有效位數6 ~ 7位) 0.0
    double 8個字節 大約 ± 1.79769313486231570E+308(有效位數爲15位) 0.0

    轉義字符: 是Java中一種特殊的字符常量,轉義字符以(\)開頭後面接1個或多個字符。

    \t - 製表符,等同於TAB鍵
    \n - 換行符
    \\ - 表示\
    \" - 表示"
    \' - 表示'
    \0 - 表示空白字符

    註釋

    double爲浮點型的默認類型.
    在聲明float變量時,需在數字末尾加上F/f. example: float f1 = 10.2F;
    浮點數值採用二進制系統表示,沒法精確的表示1/10等,如不容許有偏差,請參照BigDecimal類.
  4. 字符型:char

    char: 字符型。佔2個字節,默認值:'\u0000'
    不建議在程序中使用char類型。
  5. 布爾型:boolean

    boolean:布爾型。佔1個字節,只有true和false兩種取值。默認值:false
    整型和布爾型之間不能夠相互轉換

自動類型轉換與強制類型轉換

  1. 自動類型轉換:精度小的數據類型到精度大的數據類型爲自動類型轉換

    basic1.png

    圖中實線箭頭表示無信息丟失的轉換
       圖中虛線箭頭表示可能有精度損失的轉換
    
       當兩個數值在進行二元計算時:
       兩個操做數中有一個是double類型,另外一個操做數就會轉爲double類型
       兩個操做數中有一個是float類型,另外一個操做數就會轉爲float類型
       兩個操做數中有一個是long類型,另外一個操做數就會轉爲long類型
       其他狀況,都轉爲int類型計算

    註釋

    char <-> int 字符型可與整型互相轉換
       boolean不參與自動類型轉換
       不能把對象類型轉爲不相關類的對象
       轉換過程當中可能出現精度損失,浮點數到整數經過捨棄小數獲得,而不是四捨五入
  2. 強制類型轉換:把容量大的類型轉爲容量小的類型

    1).轉換的類型必須是兼容的
    2).不建議強制類型轉換,由於會損失精度
    3).從浮點型強制轉爲整型,會截斷小數部分,僅保留整數部分(不是四捨五入)
        double x = 9.97;
        int nx = (int)x; // nx = 9

運算符

  1. 算數運算符

    +(正號)、-(負號)
    +(加)、-(減)、*(乘)、/(除)、%(取餘)
    ++(自增)、--(自減)、+(鏈接符,用於鏈接兩個字符串)
       % :最後的符號和被模數同樣。example: a % b = ? 最後的符號和b的符號同樣
       / :作除法運算時,最後的結果爲整型。example: 5 / 2 = 2
           當除數爲浮點類型時,結果爲浮點類型. example: 5 / 2.0 = 2.5
       a++ : 在進行運算時,用a的值進行運算,最終a+1
       ++a : 在進行運算時,用a+1的值進行運算,最終a+1
       +: 鏈接符 example: "hello" + "world" = "helloworld"
  2. 關係運算符

    >(大於)、<(小於)
    >=(大於等於)、>=(小於等於)
    ==(等於)、!=(不等於)
    instanceof(檢查是否爲類的對象)
    關係運算符的最終結果爲布爾型,要麼爲true,要麼爲false.
  3. 賦值運算符

    =、+=、-=、*=、/=、%=
        a += b :至關於 a = a + b
    最後結果的數據類型和左側操做數的類型相同
    example: 
        int a = 2;
        a += 2.5; //等同於 a = (int)(a + 2.5);
  4. 邏輯運算符

    &(與)、|(或)
    &&(短路與)、||(短路或)
    !(非)
    &&和||兩側爲boolean類型
        &&運算規則:兩側都爲true結果爲true
        ||運算規則:兩側都爲false結果才爲false
    &&與&的區別:&&在參與運算時,只要左側爲false,右側則不參與運算,而&兩側都參與運算
    ||與|的區別:||在參與運算時,只要左側爲true,右側則不參與運算,而|兩側都參與運算
  5. 位運算符

    &(按位與)、|(按位或)、^(按位異或,同爲0,異爲1)、~(取反)
    >>(右移位)、<<(左移位)、>>>(無符號右移)
    &和|兩側爲數值型
        運算規則:將數字轉爲二進制,按位計算,位數少的左側補0
                 左移至關於在此基礎上乘2 example: 2 << 1 = 2 * 2
                 右移相關於在此基礎上除2 example: 2 >> 1 = 2 / 2
  6. 三目運算符

    條件表達式 ? 表達式1 : 表達式2
        條件表達式結果爲true,執行表達式1
        條件表達式結果爲false,執行表達式2
        表達式1 與 表達式2 的類型必須一致!
  7. 注意

    相關計算:
    byte,short,char在進行運算時,優先會轉爲int類型進行運算。
    a += b 與 a = a + b 的區別:
        當byte,short,char進行運算時:
            byte += 2 -> 最後的類型爲byte
            byte = byte + 2 -> 程序不能編譯
            由於byte在參與運算時會以int類型計算
            因此int不能直接賦值給byte
            須要強制類型轉化
            byte = (byte)byte + 2;

常量和變量

常量 : 在 Java 中用關鍵字 final 指示常量,常量一旦被賦值,不能被改變

類常量 : 在一個類的多個方法中使用,能夠定義爲類常量,用 static final 來設置一個常量

final double CIRCLE_R = 2.3;
static final double CIRCLE_R = 3.3;

變量 : 在程序中,其值能夠被改變的。在聲明一個變量時,必須對變量進行初始化,不能使用沒被初始化的變量

int studentNumber = 20;
double area = 10;

流程控制

塊做用域 : 即複合語句,指由一對大括號括起來的若干語句,塊肯定了變量的做用域

public static void main(String[] args) {
    int n = 0;
    {
        int p = 4;  //只在此大括號內有效
    }
    System.out.println(p); //出錯,找不到變量p
}

流程結構分爲:順序結構,選擇結構,循環結構

  1. 順序結構:自頂向下依次執行
  2. 選擇結構:也叫分支結構。

    1.switch-case[-default] 用於處理多個選項的操做
        switch() 表達式可爲char byte short int 等常量表達式,字符串(JDK1.7引入),枚舉類型(JDK1.5引入)等
        case子句必須爲常量
        default在沒有對應case的狀況下來執行的。爲可選項
        case 和 default 後的語句可加break,用來跳出當前分支,執行後續語句,
        如沒有break,則從匹配項開始如下向下執行,途中遇到break也會跳出當前分支。
    2.if, if-else, if-else if[-else]
      if - else if - else 中的條件最好有範圍大道範圍小去書寫
      example: 
          int grade  = 80;
          if(grade > 80) {
            System.out.println("優秀");
          } else if (grade >= 60 && grade < 80) {
            System.out.println("中等");
          } else {
            System.out.println("不及格");
          }

    詳細代碼見Github~

  3. 循環結構

    1.while(條件表達式) 
    先判斷是否符合條件,符合後執行循環體,若是開始不符合條件,則一次也不執行
    2.do-while(條件表達式); 注意分號
    先執行一次,在判斷是否符合條件,符合後執行循環體,不論是否符合條件都會執行一次循環體
    3.for(,,)
    4.foreach - 加強for循環
    for(variable : collection) statement
    example: 
        for(int element : a) 
            System.out.println(element); //打印a集合中的元素
    
    循環結構中,每每都會有循環變量,用來控制循環的次數
    通常循環結構爲:循環變量初始化,循環條件判斷,循環變量自增
    循環條件爲boolean類型
    
    break:用於結束當前循環(多重循環結束本層)
    continue:用於結束本次循環,開始下一次循環

    詳細代碼見Github~

數組

數組: 是一種數據結構,存儲相同類型數據的集合。下面全部數據咱們都以 int 類型爲例。

  1. 定義數組

    int[] numbers = null;
  2. 初始化

    靜態初始化:int[] numbers = {1,2,3,4,5};
              int[] numbers = new int[] {1,2,3,4,5};
    動態初始化:int[] numbers = new int[5]; //定義一個長度爲5的int類型的數組
    數據類型[] 數組名 = new 數據類型[長度]
  3. 數組的訪問

    在數組中,能夠採用數組名[下標|索引]的方式來訪問數組中的元素
    全部數組的下標都從0開始,最後一個元素爲數據的長度-1.
    Java中用length屬性來獲取數據的長度。
    int len = numbers.length;
  4. 數組的賦值

    咱們能夠爲數組中的每一位進行賦值
    numbers[0]=0;
    numbers[4]=4;
    當數組長度太多時,能夠經過循環來進行賦值
    for(int i = 0; i < 100; i++) { 
        numbers[i] = i; 
    }
  5. 數組的遍歷

    int[] numbers = new int[] {1,2,3,4,5};
    for (int i  : numbers) {
        System.out.println(i);
    }
  6. 數組拷貝

    在Java中,容許將一個數組變量拷貝給另外一個數組變量,這時兩個變量都引用同一個數組
    example:
        int[] numbers = {1,2,3,4,5};
        int[] nums = numbers;
        
    Arrays.copyOf();也能實現,後續會說~

方法

Java中爲了提升代碼的複用性,能夠將其定義成一個單獨的功能,該功能的體現就是Java中的方法。

Java 中方法的格式:

訪問控制符 返回值類型 函數名(參數類型1,形式參數1,參數類型2,形式參數2) {
    執行語句;
    return 返回值;
}

當函數沒有具體返回值時,返回值類型爲 void 關鍵字表示
若是函數的返回值類型是 void 時,return 語句能夠省略不寫,系統會自動添加
return 的做用:結束函數。

方法的做用

  1. 用於定義功能
  2. 用於封裝代碼提升代碼的複用性

注意:方法中只用調用方法,不能定義方法

輸入和輸出

輸入

爲了增長後面示例程序的趣味性,須要程序可以接收輸入,並以適當的格式輸出。

要想經過控制檯進行輸入,首先須要構造一個 Scanner 對象,並與「 標準輸入流」 System.in關聯.

Scanner 類定義在java.util 包中。當使用的類不是定義在基本java.lang 包中時,必定要使用import 指示字將相應的包加載進來。

import java.util.*;  //必須導入該包

Scanner in = new Scanner(System.in);
String name = in.nextLine(); //輸入一行,使用 nextLine方法是由於在輸入行中有可能包含空格。
String firstName = in.next();//讀取一個單詞,碰見空白符中止
int i = in.nextInt();//讀取一個整數
double d = in.nextDouble();//讀取一個浮點數

Scanner API:
next():獲取字符串,遇到空白字符中止
nextLine():獲取一行字符
nextInt():獲取int類型的整數
nextDouble():獲取double類型的浮點數
hasNext():是否有下一個輸入,若是有,返回true,不然返回false

輸出

  • System.out.println(); //輸出並換行
  • System.out.print(); // 輸出不換行
  • System.out.printf(); //格式化輸出

    %d 以十進制整數格式輸出 %f 以十進制浮點數格式輸出
    %c / %C 以字符符號輸出 %s / %S 以字符串格式輸出
    %o 以八進制整數格式輸出 %x / %X 以十六進制整數格式輸出

    以上爲經常使用的一些格式化控制符,還有其餘的,可自行查詢。

總結

掌握 Java 基礎語法部分後,你們必定要多加練習,程序員的路就是 多動手

相關代碼記錄於GitHub中,歡迎各位夥伴 Star

有任何疑問 微信搜一搜 [程序猿大博] 與我聯繫~

若是以爲對您有所幫助,請 點贊收藏 ,若有不足,請評論或私信指正!謝謝~

相關文章
相關標籤/搜索