Java自學筆記(一):基礎知識
阿新 • • 發佈:2020-07-19
學習網站:https://www.runoob.com/java/java-tutorial.html
目錄
第一個Java程式
public class HelloWorld { //類名必須與檔名相同
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
基本概念
java是面對物件語言
- 類,包含狀態和行為
- 物件,類的一個例項
- 例項變數
- 方法,就是動作
- 繼承,類A繼承類B中原有的屬性和方法,也即B派生A。被繼承的稱為超類(super class);繼承的稱為子類(subclass)
- 介面
- 重寫(Override)與過載(Overload)
- 多型
- 抽象類
- 封裝
知識點或注意事項
- 類名第一個字母是大寫,方法名的第一個字母是小寫
- 主方法入口:每個程式都是以public static void main(String[] args)開始執行的
- String而非string
- 函式體後面不加分號
- 一個原始檔只能有一個public類,可以有多個非public類。public類名必須與原始檔的名字一致。原始檔開頭一行是package名。如果要用到import語句,應該放在package名後面
- 順序:java project->package->class;package對各個class進行歸類,引入package用import
- &或|或~是位運算子;&&或||或!是邏輯運算子
- instanceof:該運算子用於操作物件例項,檢查該物件是否是一個特定型別
基本語法
-
修飾符,修飾類中方法和屬性
- 訪問控制修飾符 : 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 修飾符,主要用於執行緒的程式設計。
-
變數(注意,變數使用之前需要宣告,不同於python)
- 區域性變數,塊內的臨時變數
- 類變數(靜態變數),類變數在類中,方法體之外,但必須宣告為 static 型別,大多數是public型別;無論一個類建立了多少個物件,類只擁有類變數的一份拷貝,且
- 成員/例項變數(非靜態變數),定義在類中,方法體之外的變數。這種變數在建立物件的時候例項化;一般情況下一般把該變數設為private,設定方法來訪問它
-
註釋
單行註釋:
\\註釋文字
\* 註釋文字 *\
多行註釋:
\*注
釋
文
字*\
- 基本資料型別
- 內建資料型別: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;
- 迴圈結構
- while(xxx){ }
- do{ } while(xxx)
- for(xxx) { } 或 for (x: [1,2,3]) { }
- break; continue
- 其他語句結構:if,else; switch,case;
- 流(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();
}
}
陣列
- 宣告定義
一維:
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];
- 賦值
- 迴圈
- 普通迴圈
- for-each
for(int x:a)
{x...}
- 陣列作為函式引數
f(int[] array){ }
- 陣列類:Arrays,方便運算元組
異常處理
需要的時候再看