1. 程式人生 > 其它 >python 積分求面積_用python學數學-3

python 積分求面積_用python學數學-3

1.陣列

1.1什麼是陣列【理解】

​ 陣列就是儲存資料長度固定的容器,儲存多個數據的資料型別要一致。

1.2陣列定義格式【記憶】

1.2.1第一種

​ 資料型別[] 陣列名

​ 示例:

int[] arr;        
double[] arr;      
char[] arr;

1.2.2第二種

​ 資料型別 陣列名[]

​ 示例:

int arr[];
double arr[];
char arr[];

1.3陣列動態初始化【應用】

1.3.1什麼是動態初始化

​ 陣列動態初始化就是隻給定陣列的長度,由系統給出預設初始化值

1.3.2動態初始化格式

資料型別[] 陣列名 = new 資料型別[陣列長度];
int[] arr = new int[3];

1.3.3動態初始化格式詳解

  • 等號左邊:
    • int:陣列的資料型別
    • []:代表這是一個數組
    • arr:代表陣列的名稱
  • 等號右邊:
    • new:為陣列開闢記憶體空間
    • int:陣列的資料型別
    • []:代表這是一個數組
    • 5:代表陣列的長度

1.4陣列元素訪問【應用】

1.4.1什麼是索引

​ 每一個儲存到陣列的元素,都會自動的擁有一個編號,從0開始。

​ 這個自動編號稱為陣列索引(index),可以通過陣列的索引訪問到陣列中的元素。

1.4.2訪問陣列元素格式

陣列名[索引];

1.4.3示例程式碼

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = new int[3];

        //輸出陣列名
        System.out.println(arr); //[I@880ec60

        //輸出陣列中的元素
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

1.5記憶體分配【理解】

1.5.1記憶體概述

​ 記憶體是計算機中的重要原件,臨時儲存區域,作用是執行程式。

​ 我們編寫的程式是存放在硬碟中的,在硬碟中的程式是不會執行的。

​ 必須放進記憶體中才能執行,執行完畢後會清空記憶體。

​ Java虛擬機器要執行程式,必須要對記憶體進行空間的分配和管理。

1.5.2java中的記憶體分配

  • 目前我們只需要記住兩個記憶體,分別是:棧記憶體和堆記憶體
區域名稱 作用
暫存器 給CPU使用,和我們開發無關。
本地方法棧 JVM在使用作業系統功能的時候使用,和我們開發無關。
方法區 儲存可以執行的class檔案。
堆記憶體 儲存物件或者陣列,new來建立的,都儲存在堆記憶體。
方法棧 方法執行時使用的記憶體,比如main方法執行,進入方法棧中執行。

1.6單個數組的記憶體圖【理解】

1.7多個數組的記憶體圖【理解】

1.8多個數組指向相同記憶體圖【理解】

1.9陣列靜態初始化【應用】

1.9.1什麼是靜態初始化

​ 在建立陣列時,直接將元素確定

1.9.2靜態初始化格式

  • 完整版格式

    資料型別[] 陣列名 = new 資料型別[]{元素1,元素2,...};
    
  • 簡化版格式

    資料型別[] 陣列名 = {元素1,元素2,...};
    

1.9.3示例程式碼

public class ArrayDemo {
    public static void main(String[] args) {
        //定義陣列
        int[] arr = {1, 2, 3};

        //輸出陣列名
        System.out.println(arr);

        //輸出陣列中的元素
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

1.10陣列操作的兩個常見小問題【應用】

1.10.1索引越界異常

  • 出現原因

    public class ArrayDemo {
        public static void main(String[] args) {
            int[] arr = new int[3];
            System.out.println(arr[3]);
        }
    }
    

    陣列長度為3,索引範圍是0~2,但是我們卻訪問了一個3的索引。

    程式執行後,將會丟擲ArrayIndexOutOfBoundsException 陣列越界異常。在開發中,陣列的越界異常是不能出現的,一旦出現了,就必須要修改我們編寫的程式碼。

  • 解決方案

    將錯誤的索引修改為正確的索引範圍即可!

1.10.2空指標異常

  • 出現原因

    public class ArrayDemo {
        public static void main(String[] args) {
            int[] arr = new int[3];
    
            //把null賦值給陣列
            arr = null;
            System.out.println(arr[0]);
        }
    }
    

    arr = null 這行程式碼,意味著變數arr將不會在儲存陣列的記憶體地址,也就不允許再運算元組了,因此執行的時候會丟擲 NullPointerException 空指標異常。在開發中,陣列的越界異常是不能出現的,一旦出現了,就必須要修改我們編寫的程式碼。

  • 解決方案

    給陣列一個真正的堆記憶體空間引用即可!

1.11陣列遍歷【應用】

  • 陣列遍歷:就是將陣列中的每個元素分別獲取出來,就是遍歷。遍歷也是陣列操作中的基石。

    public class ArrayTest01 {
    	public static void main(String[] args) {
    		int[] arr = { 1, 2, 3, 4, 5 };
    		System.out.println(arr[0]);
    		System.out.println(arr[1]);
    		System.out.println(arr[2]);
    		System.out.println(arr[3]);
    		System.out.println(arr[4]);
    	}
    }
    

    以上程式碼是可以將陣列中每個元素全部遍歷出來,但是如果陣列元素非常多,這種寫法肯定不行,因此我們需要改造成迴圈的寫法。陣列的索引是 0 到 lenght-1 ,可以作為迴圈的條件出現。

    public class ArrayTest01 {
        public static void main(String[] args) {
            //定義陣列
            int[] arr = {11, 22, 33, 44, 55};
    
            //使用通用的遍歷格式
            for(int x=0; x<arr.length; x++) {
                System.out.println(arr[x]);
            }
        }
    }
    

1.12陣列最值【應用】

  • 最大值獲取:從陣列的所有元素中找出最大值。

  • 實現思路:

    • 定義變數,儲存陣列0索引上的元素
    • 遍歷陣列,獲取出陣列中的每個元素
    • 將遍歷到的元素和儲存陣列0索引上值的變數進行比較
    • 如果陣列元素的值大於了變數的值,變數記錄住新的值
    • 陣列迴圈遍歷結束,變數儲存的就是陣列中的最大值
  • 程式碼實現:

    public class ArrayTest02 {
        public static void main(String[] args) {
            //定義陣列
            int[] arr = {12, 45, 98, 73, 60};
    
            //定義一個變數,用於儲存最大值
            //取陣列中第一個資料作為變數的初始值
            int max = arr[0];
    
            //與陣列中剩餘的資料逐個比對,每次比對將最大值儲存到變數中
            for(int x=1; x<arr.length; x++) {
                if(arr[x] > max) {
                    max = arr[x];
                }
            }
    
            //迴圈結束後列印變數的值
            System.out.println("max:" + max);
    
        }
    }