一.運算符operator的優先級priority:
a.優先級比較: && 高於 ||
b.建議使用"( )"來區分優先級
二.語句
1.選擇結構
a.if .. else if .. else
根據if中的條件進行判斷, 選擇執行某一條分支
如果if中的條件未滿足, 就會判斷else if中的條件
如果所有條件都未滿足, 就會執行else中的語句
注:
if() {
}else if {
}else {
}
if() {
}else {
}
if(){
}
b.switch語句
通過一個變量, 確定從哪一個case開始執行, 一旦確定, 會從指定的case向下執行
如果執行某個case之後, 不想繼續執行下面的case, 可以使用break中斷
如果所有case都未滿足條件, 會執行default選項
switch最初只能支持int類型(byte,short,char也可以), JDK5之後可以支持enum, JDK7之後可以支持String
注:
switch(month) {
case 3:
case 4:
case 5:
System.out.println("現在是春季!");
break;
case 6:
case 7:
case 8:
System.out.println("現在是夏季!");
break;
case 9:
case 10:
case 11:
System.out.println("現在是秋季!");
break;
case 12:
case 1:
case 2:
System.out.println("現在是冬季!");
break;
default:
System.out.println("兄弟,你是從火星來的吧!");
}
2.循環結構
a.while
先判斷條件, 如果滿足則執行循環體, 循環體執行結束後再次判斷, 直到條件不滿足時退出
注:
while() {
}
b.do .. while
先執行循環體, 然後判斷條件, 條件滿足則繼續執行循環體, 直到條件不滿足時退出
注:
do {
}while(); //注意:有分號
c.for語句
括號中可以寫3條語句
第一條語句在循環開始之前執行, 只執行一次
第二條語句是循環條件, 如果爲true就執行循環體, 爲false則退出
第三條語句在每次循環體執行結束之後運行
注:
1.
for(;;) { //這樣寫,是無限循環!
}
等價於:
for(;true;) { //這樣寫,是無限循環!
}
2.for中語句的執行順序:
語句1->判斷語句2->語句2若是true,則執行語句4->執行語句4->判斷語句2->語句2若是true,則執行語句4->......
for(語句1;語句2;語句3) {
語句4
}
d.循環控制
continue: 跳出本次循環, 繼續執行下一次
break: 結束循環, 執行循環外的代碼
return: 結束方法, 循環外的代碼也不會再執行了,若使用在main主方法中,則程序結束!
注:
outer:
for() {
for() {
break outer; //直接會跳出兩層循環
}
}
三.數組
1.什麼是數組
數組是一個類型一致, 長度不可變的容器
2.定義方式
int[] arr1 = {1, 2, 3}; // 定義數組, 指定元素, 這種方式只能用在給一個變量賦值的時候,
注:
不能寫成這樣的格式:
int[] arr1 ;
arr1= {1, 2, 3};
int[] arr2 = new int[]{1, 2, 3}; // 定義數組, 指定元素, 這種方式在任何情況下都能使用
int[] arr3 = new int[3]; // 定義數組, 指定長度爲3, 其中所有元素都是默認值. 基本數據類型的默認值都是0
3.遍歷數組
使用length屬性可以獲取數組長度, 定義循環, 從0循環到length-1, 每次獲取其中一個元素
注:
int [] a = new int[size]; //這邊的size類型,只能是int類型(byte,short,char也可以),但是long不可以!
4.常見異常
ArrayIndexOutOfBoundsException: 訪問數組索引越界時出現
NullPointerException: 數組引用爲空時出現
5.多維數組:
數組的數組
分配空間時,必須先分配高維,再分配低維
注:
int[][] arr = new int[3][];
arr[0]=new int[3];
arr[1]=new int[4];
arr[2]=new int[5];
也可定義如下格式:
int[][]arr = new int[3][4]; //新建一個包含3個元素的二維的數組,該數組的每個元素又是一個包含4個元素一維的數組
四.參數傳遞:
基本類型: 改變形參的值,不會影響到實參
引用類型: 通過形參的改變,實參也會受影響.因爲都是指向堆中的同一地址的數據!
(內存圖)
棧內存: 每運行一個函數,都會開闢一塊棧內存,用來存放函數中定義的變量.
堆內存: 用來存放一些引用數據類型的數據