之前我們介紹了java的數據類型、變量、流程控制等內容。今天我們高級數據類型——數組以及函數的作用。
函數(方法)
函數的定義
函數就是一段有名字的代碼,可以完成某一特定功能。
方法(函數)是java的最小代碼重用單位,方法(函數)是為了重用代碼。
方法不能嵌套方法,不能在一個方法內部定義另外一個方法。
可以在一個方法內部調用另外一個方法。
方法必須寫在類(class)裡。
如果有一段代碼要使用多次,我們可以給它起個名字,每次使用時通過名字調用,這樣就不用每次都寫一大段代碼了。
如果某個函數在執行的時候需要調用者傳入數據,那麼可以定義參數列表,用於接收數據。
如果函數運行之後需要返回給調用者數據,那麼需要指定返回值類型,並且用關鍵字return返回。
定義函數的3個必要條件:函數名、參數列表、返回值類型。如果不需要參數也要寫小括號,如果沒有返回值類型要寫void。
名詞解釋
形參:在定義函數時小括號中的參數,用來接收數據的參數。
實參:在調用函數時真正傳入的參數,傳遞給函數的數據。
參數類型:函數的參數的類型,一旦定義傳入時必須匹配。
返回值:函數運行結束後返回的值,使用return關鍵字返回。
返回值類型:函數運行結束後返回的值的類型,在類型非void情況下必須返回,而且必須類型匹配。
函數的重載
多個函數的函數名相同,參數列表不同(個數、順序、類型),這就是函數的重載。在調用函數的時候通過傳入的實參找到匹配的函數調用。函數的重載和返回值類型無關。
數組
什麼是數組
數組是一個類型一致,長度不可變的容器。可以通過索引操作容器中的每一個元素。
如果有多個類型相同的數據需要存儲,我們就可以將其定義為一個數組,這樣做省去了創建多個變量的麻煩。
如何定義數組
int[] arr = {1,2,3};
定義int數組arr,長度為3,其中3個元素分別為1、2、3。這種方式只能在定義數組的時候使用。
int[] arr = new int[]{1,2,3};
定義int數組arr,長度為3,其中3個元素分別為1、2、3。可以在任何情況使用。
int[] arr = new int[10];
定義int數組arr,長度為10。其中所有元素都為默認值0。
數組的長度:arr.length
訪問數組元素、遍歷數組
存在數組中的數據是有索引的,從0開始遞增,我們通過數組名和索引就可以操作其中每一個元素。例如:
System.out.println(arr[0]); // 列印數組中索引為0的元素
arr[1] = 100; // 給數組中索引為1的元素賦值為100數組的長度
數組可以使用length屬性獲取其長度。
遍歷數組
由於數組可以通過索引獲取每一個元素,又可以通過length獲取長度,那麼我們就可以定義循環來遍歷數組中的每一個元素了。
使用數組時的異常
如果訪問數組時索引越界(小於0或者大於length-1),會拋出異常:ArrayIndexOutOfBoundsExcepion
如果訪問數組的引用為空(null),會拋出空指針異常:NullPointerException
與數組操作相關函數
Arrays.toString() 查找幫助文檔Arrays類,學習使用此方法將字符串轉為字符串形式。將一個數組轉為字符串表示形式
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 查找幫助文檔System類,學習使用此方法拷貝數組中元素。將一個數組中的某些元素拷貝到另一個數組的指定位置。參數解釋:
Object src : 原數組
int srcPos : 從元數據的起始位置開始
Object dest : 目標數組
int destPos : 目標數組的開始起始位置
int length : 要copy的數組的長度
多維數組
數組中的每一個元素都是數組,這樣的數組就是多維數組(數組嵌套)。
經典案例
傳說,有位印度教宗師見國王自負虛浮,決定給他一個教訓。他向國王推薦了一種在當時尚無人知曉西洋棋。國王當時整天被一群溜須拍馬的大臣們包圍,百無聊賴,很需要通過遊戲方式來排遣鬱悶的心情。
國王對這種新奇的遊戲很快就產生了濃厚的興趣,高興之餘,他便問那位宗師,作為對他忠心的獎賞,他需要得到什麼賞賜。宗師開口說道:請您在棋盤上的第一個格子上放1粒麥子,第二個格子上放2粒,第三個格子上放4粒,第四個格子上放8粒……即每一個次序在後的格子中放的麥粒都必須是前一個格子麥粒數目的倍數,直到最後一個格子第64格放滿為止,這樣我就十分滿足了。
「好吧!」國王哈哈大笑,慷慨地答應了宗師的這個謙卑的請求。然而等到麥子成熟時,國王才發現,按照與宗師的約定,全印度的麥子竟然連棋盤一半的格子數目都不夠.這位宗師索要的麥粒數目實際上是天文數字。
這個天文數字到底有多大呢?我們用程序來計算一下:
看到結果了嗎?這個數字到底有多大呢?
有人估算:如果按100粒米的重量約2克,那總共約有3689萬億噸重!
精品推薦:
一起學JAVA——流程控制語句
一起學JAVA——運算符
一起學JAVA——進入Java的世界
編程技術筆記——Nginx反向代理和負載均衡