java語言基礎學習筆記(二)

2020-08-13 16:34:53

流程控制語句

分支結構

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(條件表達式){
    . 回圈體;
    }
while回圈和for回圈的比較
  • 兩者可以互相代替,推薦使用for回圈
  • while回圈更加適合於明確回圈條件但不明確回圈次數的場合中
  • for回圈更加適合於明確回圈次數的場合中
  • while(true)和for(; ; )都表示無限回圈
do while回圈
  • do{
    回圈體;
    }while(條件表達式);
  • do while回圈至少執行一遍
考點
int i = 1;
while(i<10000);{  }   //while()後加分號
//相當於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;//使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];
//二維陣列的列數可以不同