1. 程式人生 > 實用技巧 >Java自學筆記(一):基礎知識

Java自學筆記(一):基礎知識

學習網站:https://www.runoob.com/java/java-tutorial.html

目錄

第一個Java程式

public class HelloWorld {   //類名必須與檔名相同
    public static void main(String[] args) {
       System.out.println("HelloWorld");
    }
}

基本概念

java是面對物件語言

  1. 類,包含狀態和行為
  2. 物件,類的一個例項
  3. 例項變數
  4. 方法,就是動作
  5. 繼承,類A繼承類B中原有的屬性和方法,也即B派生A。被繼承的稱為超類(super class);繼承的稱為子類(subclass)
  6. 介面
  7. 重寫(Override)與過載(Overload)
  8. 多型
  9. 抽象類
  10. 封裝

知識點或注意事項

  1. 類名第一個字母是大寫,方法名的第一個字母是小寫
  2. 主方法入口:每個程式都是以public static void main(String[] args)開始執行的
  3. String而非string
  4. 函式體後面不加分號
  5. 一個原始檔只能有一個public類,可以有多個非public類。public類名必須與原始檔的名字一致。原始檔開頭一行是package名。如果要用到import語句,應該放在package名後面
  6. 順序:java project->package->class;package對各個class進行歸類,引入package用import
  7. &或|或~是位運算子;&&或||或!是邏輯運算子
  8. instanceof:該運算子用於操作物件例項,檢查該物件是否是一個特定型別

基本語法

  1. 修飾符,修飾類中方法和屬性

    • 訪問控制修飾符 : default, public , protected, private
    • default:預設態,在定義時若沒有特指訪問控制,則預設是default,不能跨package
    • public:公共態,可跨class也可跨package
    • protected:受保護態,對同一包內的類和所有子類可見。只能被類本身以及子類訪問,如果子類在別的package也是可以訪問的
    • private:私有態,只能被自身的class訪問,不能跨class和跨package
    • 非訪問控制修飾符 : final, abstract, static, synchronized
    • static 修飾符,用來修飾類方法和類變數。修飾變數:用來宣告獨立於物件的靜態變數;修飾方法:靜態方法不能使用類的非靜態變數
    • final 修飾符,用來修飾類、方法和變數,final 修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變數為常量,是不可修改的。
    • abstract 修飾符,用來建立抽象類和抽象方法;宣告抽象類的唯一目的是為了將來對該類進行擴充。
    • synchronized 和 volatile 修飾符,主要用於執行緒的程式設計。
  2. 變數(注意,變數使用之前需要宣告,不同於python)

    • 區域性變數,塊內的臨時變數
    • 類變數(靜態變數),類變數在類中,方法體之外,但必須宣告為 static 型別,大多數是public型別;無論一個類建立了多少個物件,類只擁有類變數的一份拷貝,且
    • 成員/例項變數(非靜態變數),定義在類中,方法體之外的變數。這種變數在建立物件的時候例項化;一般情況下一般把該變數設為private,設定方法來訪問它
  3. 註釋

單行註釋:
\\註釋文字
\* 註釋文字 *\
多行註釋:
\*注
釋
文
字*\
  1. 基本資料型別
    • 內建資料型別:byte, short, int, long, float, double, boolean, char
    • 引用資料型別:類似指標,預設值null,比如可以用來指向一個物件
    • 常量:final+常量定義,最好用大寫來與變數區分;數字字首0表示八進位制,0x表示十六進位制
    • 資料型別轉換:自動或強制型別轉換
自動型別轉換:
低  ------------------------------------>  高
byte,short,char—> int —> long—> float —> double 
強制型別轉換:
doubel a = 1.23;
int b = (int)a;
//b=1;
  1. 迴圈結構
    • while(xxx){ }
    • do{ } while(xxx)
    • for(xxx) { } 或 for (x: [1,2,3]) { }
    • break; continue
  2. 其他語句結構:if,else; switch,case;
  3. 流(Stream)、檔案(File)和IO(這些還沒細看,用的時候再看)

Java內建包裝類

Java內建包裝類(類中也內建了很多方法;import java.util.*;)
- Number類
- Math類
- Character類
- String類;長度:a.length();連線字串:a.concat(b)
- StringBuffer和StringBuilder類:對字串進行修改
- Data類,表示時間;更復雜的是Calendar類
- Scanner類:輸入類
-。。。

Data類:
long start = System.currentTimeMillis( );
long end = System.currentTimeMillis( );
long diff = end - start;
System.out.println("Difference is : " + diff);
Scanner類:
Scanner 類的 next() 與 nextLine() 方法獲取輸入的字串,在讀取前我們一般需要 使用 hasNext 與 hasNextLine 判斷是否還有輸入的資料:

import java.util.Scanner; 
public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 從鍵盤接收資料
 
        // next方式接收字串
        System.out.println("next方式接收:");
        // 判斷是否還有輸入
        if (scan.hasNext()) {
            String str1 = scan.next();
            System.out.println("輸入的資料為:" + str1);
        }
        scan.close();
    }
}

陣列

  1. 宣告定義
一維:
int[] a = new int[3];  //首選int[] a格式,而不是int a[]格式
int a[] = new int[3];
int[] a = (1,2,3);
二維:
double[][] a1 = new double[2][2];
  1. 賦值
  2. 迴圈
    • 普通迴圈
    • for-each
for(int x:a)
   {x...}
  1. 陣列作為函式引數
f(int[] array){ }
  1. 陣列類:Arrays,方便運算元組

異常處理

需要的時候再看