Java基礎學習筆記(一) – 基礎語法
- 2019 年 10 月 6 日
- 筆記
1.Java程式開發過程
編譯: 是指將我們編寫的Java源文件翻譯成JVM認識的class文件,javac編譯器會檢查我們所寫的程式是否有錯誤,有錯誤就會提示出來,如果沒有錯誤就會編譯成功。
運行:是指將編譯好的class文件交給JVM去運行。
2.第一個Java程式Hello World
public class HelloWorld { public static void main(String[] args){ System.out.println("hello world"); } }
main方法:是程式的主方法,寫法是固定格式不可以更改,main方法是程式的入口,JVM在運行程式的時候,都會從main方法這裡開始執行。
3.程式注釋
注釋的作用是對程式碼解釋說明。
//我是一個單行注釋 /* 我是一個多行注釋 我是一個多行注釋 */
4.關鍵字keywords
在程式中,有很多java語言已經定義好的單詞,具有特殊含義,如public,class,static,void等。
5.標識符
標識符:在程式中我們自己定義的內容,如類的名字,方法的名字,變數的名字等。
命名規則(牢記):
- 標識符可以包含數字,字母,_(下劃線),$(美元符號)。
- 標識符不能以數字開頭。
- 標識符不可以和關鍵字重名。
命名規範:
- 類名規範:首字母大寫,後面每個單詞首字元大寫(大駝峰式)。
- 方法名規範:首字元小寫,後面每個單詞首字母大寫(小駝峰式)。
- 變數名規範:全部小寫。
6.常量和變數
6.1 常量
在Java程式中固定不變。
6.2 變數
在Java程式中可以變化。
int num1 = 0
//定義變數的格式(三要素)
數據類型 變數名 = 數據值;
Java中要求一個變數每次只能保存一個數據,而且必須聲明數據類型,如int(整型)。
基本數據類型:
引用數據類型(引用的是記憶體地址,不是實際的值):
類,數組,介面。
變數使用要求:
- 在同一個作用域,變數不可以重名。
- 定義的變數,不賦值不能使用。
6.3 變數和常量的運算
變數d賦值報錯的原因是因為,a和b都為變數,編譯器不確定是否超過byte的取值範圍。
變數c沒報錯,常量1和2都是固定數值,計算結果也是固定的,沒有超過byte的取值範圍。
7.數據類型轉換
7.1 自動轉換
自動轉換:在進行運算操作時將取值範圍小的類型自動轉換為取值範圍大的類型。
轉換規則:
public static void main(String[] args){ int a = 1; float b = 1; //運行結果為2.0 System.out.println(a + b); }
7.2 強制轉換
強制類型轉換:主動將取值範圍大的類型自動轉換為取值範圍小的類型。
轉換格式:
public static void main(String[] args){ int a = 1; byte b = (byte)a; System.out.println(b); }
強烈注意:
- 浮點轉換整數時,小數點後被取消,可能造成數據損失精度。
- int轉換short時失去兩個位元組,可能造成數據丟失。
8.運算符
8.1 算數運算符
+符號在遇到字元串時表示連接,拼接的含義。
8.2 賦值運算
注意:s+=1和s=s+1的區別(s為short類型)
-
s = s + 1 實際上執行了兩次運算,一計算s+1的結果(結果為int),二將s+1的計算結果賦值給s(s為short類型,將int類型結果賦值給s會發生錯誤)。
-
s += 1 只運算一次,並帶有強制轉換的特點,也就是說s += 1就是 s = (short)(s+1)。
8.3比較運算符
8.4 邏輯運算符
邏輯運算的結果只有true和false。
8.5 三元運算符
計算方式:
- 表達式為true,結果1賦值給變數
- 表達式為false,結果2賦值給變數
public class HelloWorld { public static void main(String[] args){ int a = (1==2 ? 100:200); System.out.println(a);//200 } }
9.Java中的方法
方法:將一個功能抽取出來,單獨定義在一個方法內。
作用:實現程式碼復用,解決程式碼冗餘。
9.1 方法的定義
- 位置:方法必須定義在類中,方法不能定義在另一個方法中。
- 返回值:return返回的類型必須和聲明的返回值類型相同,否則編譯失敗。
9.2 方法的調用
方法定義完畢後,方法不會自己運行,必須被調用才能執行。
調用方式:
- 直接調用
- 賦值調用
- 輸出語句調用
public class HelloWorld { public static void main(String[] args){ method1();//直接調用 int x = method1();//賦值調用(必須有返回值才能使用) System.out.println(method1());//輸出語句調用 } public static int method1(){ System.out.println("我是方法1"); return 1; } }
9.3 方法重載
含義:在同一個類中,允許存在多個同名方法,只要他們的參數列表(個數不同,類型不同,順序不同)不同即可。
JVM在調用方法時會根據參數列表找到對應的方法執行。
public class HelloWorld { public static void main(String[] args){ method1(1,2); method1("1",2); } public static void method1(int a,int b){ System.out.println("我是方法1"); } public static void method1(String a,int b){ System.out.println("我是方法1的重載"); } }
10.流程式控制制
概述:控制程式執行順序。
10.1 判斷語句
從上到下的順序執行,只執行一層,沒有滿足的條件則執行else。
10.2 選擇語句
首先計算表達式的值,其次和case依次比較,一旦有對應的值,就會執行相應的語句,執行完畢break(break一定要寫,否則程式會繼續向下執行,直到選擇語句結束)跳出,如果所有都不匹配則執行default。
10.3 循環語句
循環可以嵌套。
while(true)表示死循環。
for和while區別:
- for作用域的變數會在執行完畢後,自動銷毀。while不會。
- 已知循環次數使用for,未知使用while。
10.4 跳出語句
- break:終止switch語句或循環。
- continue:結束本次循環,繼續下一次循環。
11.數組
概念:數組就是存儲數據的容器,數組中的數據類型一致。
11.1 創建數組
int[] arr1 = new int[3]; int[] arr2 = new int[]{1,2,3,4,5}; int[] arr3 = {1,2,3,4,5};
數組實際上是記憶體中的地址。
JVM的記憶體劃分:
11.2 常用操作
- 訪問:使用索引。arr[1](如果索引1不存在會導致數組越界,arr為null會導致數組空指針異常)。
- 遍歷:使用for循環。
11.3 方法中使用數組
- 數組作為方法參數。(參數為基本類型時,傳遞的是數據值,為引用類型時,傳遞的是記憶體地址。)
- 數組作為方法返回值。(聲明類型必須正確)
溫馨提示
- 如果您對本文有疑問,請在評論部分留言,我會在最短時間回復。
- 如果本文幫助了您,也請評論關注,作為對我的一份鼓勵。
- 如果您感覺我寫的有問題,也請批評指正,我會盡量修改。