流程控制語句
分支結構
if分支結構
- if(條件表達式){ 語句塊; }
- 判斷條件表達式是否成立,若成立則執行語句塊,若不成立則跳過語句塊
if else分支結構
- if(條件表達式){語句塊1;}
else{語句塊2};
if else if else 分支結構
- if(條件表達式1){語句塊1;}
else if(條件表達式2){語句塊2;}
else{條件表達式3;}
switch case 分支結構
- switch(變數/表達式){
case 字面值1:語句塊1;break;
case 字面值2;語句塊2;break;
…
default;語句塊n;
}
switch()中支援的數據型別有:byte,short,char以及int型別,從jdk1.5開始支援列舉型別,從jdk1.7開始支援String型別
回圈結構
- 在java程式中希望重複執行一段程式碼時,就需要用到回圈結構
- 任何複雜邏輯都可以通過順序,分支和回圈三種程式結構實現
for回圈
- for(初始化表達式;條件表達式;修改初始值表達式){
回圈體;
}
關鍵字continue
- continue語句用在回圈體中,用於結束本次回圈
關鍵字break
- break用於退出當前語句塊,break用在回圈體中退出回圈。
- for(; ; ) - 這種沒有回圈條件的回圈叫做無限回圈,俗稱「死回圈」。
- break 只能跳出所在的回圈體,如要退出外層回圈體,需要用標號的方式
public static void main(String[] args){
ok://標號
for(int i = 1;i<=9;i++){
for(int j = 1;j<=i;j++){
System.out.print(j + "*" + i + "=" + i*j + '\t');
if(6==j){
break ok;
}
}
System.out.println();
}
}
雙重for回圈
- for(初始化表達式;條件表達式;修改初始值表達式3){
… for(初始化表達式4;條件表達式5;修改初始值表達式6){
… … 回圈體;
… }
}
while 回圈
while回圈和for回圈的比較
- 兩者可以互相代替,推薦使用for回圈
- while回圈更加適合於明確回圈條件但不明確回圈次數的場合中
- for回圈更加適合於明確回圈次數的場合中
- while(true)和for(; ; )都表示無限回圈
do while回圈
- do{
回圈體;
}while(條件表達式);
- do while回圈至少執行一遍
考點
int i = 1;
while(i<10000);{ }
陣列
一維陣列的基本概念
- 當需要在java程式中記錄單個數據內容時,則宣告一個變數即可
- 當需要在java程式中記錄多個型別相同的陣列內容時,則宣告一個一維陣列即可,一維陣列的本質就是在記憶體空間中申請一段連續的儲存單元。
- 陣列是相同類型的多個元素的容器,元素按線性順序排列,在java語言中體現爲一種參照數據型別。
一維陣列的宣告方式
- 陣列型別[] 陣列名稱 = new 陣列型別[陣列長度];(動態方式)
- 呼叫陣列的length屬性可以獲取陣列的長度
- 可以通過下標的方式存取陣列中的每一個元素。注意:陣列的下標從0開始,對於長度爲n的陣列,下表的範圍是0~n-1.
一維陣列的初始化方式
- 基本數據型別的陣列建立後,其元素的初始值:byte,short,int.long爲0,float和double爲0.0;boolean爲false.
- 可以在陣列宣告的同時進行初始化; (靜態方式)
陣列型別[] 陣列名稱 = {初始值1,初始值2…};
eg.char arr[] = {'a','b','c','d'};
陣列型別[] 陣列名稱 = new 陣列型別[]{初始值1,初始值2…};
eg.boolean arr1 = new boolean[]{true,true,false,false};
記憶體結構
記憶體結構之棧區:棧用於存放程式執行過程當中所有的區域性變數。一個執行的java程式從開始到結束會有多次變數的宣告。
記憶體結構之堆區:JVM在其記憶體空間中開闢的一個成爲「堆」的儲存空間,這部分空間用於儲存使用new關鍵字建立的陣列和物件。
對於陣列而言,陣列變數是一個參照變數,存放在棧區,數值的值存放在堆區。陣列變數中的值是陣列值在堆區中的地址。
虛擬機器是如何區分一個變數是基本型別還是參照型別?
陣列的優缺點
- 可以直接通過下標的方式存取指定位置的元素,速度很快
- 陣列要求所有的元素型別相同
- 陣列要求記憶體空間練習,並且長度一旦確定就不能修改
- 增加和刪除元素時,可以要移動大量元素,效率低
陣列的拷貝
System.arraycopy(Object src,int srcPos,Object dest,int destpos,int length);
考點
int[] arr = {11,22,33,44,55};
int[] brr = arr;
陣列的工具類
- java.util.Arrays類可以實現對陣列中元素的遍歷,查詢,排序等操作。
- 常用方法
static String toString(int [] a);//輸出陣列的內容
static void fill(int[] a,val);//將參數指定元素賦值給陣列所有的元素
static boolean equals(boolean[] a,boolean[] 2);//判斷兩個陣列元素內容和次序是否相同(各種型別的輸入參數已經被過載)
static void sort(int[] a);//對陣列中的元素進行從小到大的排序
static int binarySearch(int[] a,int key);//從陣列中查詢參數指定元素所在的位置(若元素存在就返回有效下標,不存在就返回無效下標)
二維陣列
- 二維陣列本質上就是由多個一維陣列摞在一起組成的陣列,二維陣列中的每個元素都是一維陣列,而一維陣列中的每個元素纔是數據內容。
二維數值本質上也是一維陣列,只是該陣列中的每個值存放的是另一個數組的參照
二維陣列的宣告和使用
- 數據型別[][] 陣列名稱 = new 數據型別[行數][列數];
二維陣列的初始化和考點
- 數據型別[][] 陣列名稱 = {{…},{…}…};
int[][] arr = new int[3][];
arr[0] = new int[3];
arr[1] = new int[4];
arr[2] = new int[5];