Java的陣列定義與方法過載——有C++基礎的Java入門(三)
阿新 • • 發佈:2018-11-01
目錄
一、 陣列的定義
1、定義
資料型別 [ ] 陣列名 = new 資料型別 [整數];
整數就是陣列的長度。
定義方式和C#是一樣的,如 int [] arr = new int[5];
2、 原理
假設在程式中定義的陣列為 int [] arr = new int[5]; 從JVM(JVM在“入門一”裡面有詳細解釋,這裡不再贅述)的方向分析。先上個圖,在做詳細的解釋。
在程式執行的時候,電腦的記憶體裡會分配一個JVM的空間。在JVM裡面又分為兩大區域:堆和棧(類似於我們電腦裡面的固態硬碟和機械硬碟)。
棧:空間小,主要儲存地址和基本資料型別的變數,存取速度快。
堆:空間大,主要儲存引用型別的變數,存取速度慢。
int [] arr = new int[5];在堆中會開闢一片空間來存放陣列,會給這片空間分配一個假設為0x666的地址(這個地址只有計算機知道)。因為陣列沒有賦值,在Java中這五個值都預設為0。在堆中存放的東西由誰來引用呢?一定是由棧來引用的,所以在棧中一定有一片空間來儲存陣列的地址,通過棧中的地址找到堆中陣列的值。
3、 賦值方式
賦值方式和c++也是一樣的,但獲取陣列的長度上不同。C++需要自己定義一個函式來求陣列的長度,Java中只需要“陣列名.length(如arr.length)”和JS是一樣的。
二、Java的方法過載
Java的方法定義、方法過載和C++都是差不多的。
1、 概念
(1) 過載
過載是在一個類中有兩個或者兩個以上同名的方法,但是引數不同(兩個方法的引數的個數不同,引數的型別不同),與返回值無關。
(2) 目的
提高程式碼的可讀性和節省命名的詞。
2、例子
(1) 比較兩個數值的大小
public class demo{ /** *比較兩個數的大小 */ public static int compareNum(int a,int b){ return a>b?a:b; //三元運算子的比較:如果比較結果為真,則返回a,為假則返回b } /** * 函式過載 *比較三個數的大小 */ public static int compareNum(int a,int b,int c){ return comparenum(a,b)>c?comparenum(a,b):c; } public static void main(String[] args){ int result1=comparenum(100,200); int result2=comparenum(555,66,88); System.out.println("result1="+result1); System.out.println("result2="+result2); } }