【本節目标】
通過閱讀本節,你将了解到數組在方法調用中的記憶體變化,初步了解到程式“設計”的含義,并掌握使用方法完成對數組的操作以滿足某些需求的能力。
數組與方法
對于引用資料類型而言,主要的特點是可以與方法進行引用傳遞,而數組本身也屬于引用資料類型,是以自然也可以通過方法實作引用傳遞操作。
範例:實作一個數組的引用傳遞
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {1,2,3,4,5} ;
printArray(data) ; //傳遞數組
}
//要求接收一個int型的數組
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.println(temp[x]) ;
}
}
}

圖一 執行結果一
對于此時的引用傳遞具體的記憶體關系如下。
圖二 記憶體分析結果一
既然可以通過方法來接收一個數組,那麼也就可以通過方法傳回一個數組對象,那麼此時隻需要在方法的傳回值類型上進行控制即可。
範例:定義方法傳回數組
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = initArray() ; //通過方法可以獲得數組内容
printArray(data) ; //傳遞數組
}
public static int [] initArray () {
int arr [] = new int [] {1,2,3,4,5} ;
return arr ; //傳回一個數組
}
//要求接收一個int型的數組
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.println(temp[x]) ;
}
}
}
圖三 執行結果二
接下來針對于此程式進行記憶體關系分析。
圖四 記憶體分析結果二
範例:通過方法修改數組内容
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {1,2,3,4,5}
changeArray(data) ; //修改數組内容
printArray(data) ; //傳遞數組
}
public static void changeArray(int arr[]) {
for (int x = 0 ;x < arr.length ; x ++) {
arr[x] *= 2 ; //每個元素的内容乘2儲存
}
}
//要求接收一個int型的數組
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.println(temp[x]) ;
}
}
}
圖五 修改數組内容執行結果
本程式的記憶體關系如下:
圖六 記憶體分析結果圖三
案例
随意定義一個int數組,要求可以計算出這個數組元素的總和、最大值、最小值、平均值。
對于此程式最基本的實作如下:
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {1,2,3,4,5}
int sum = 0 ;
double avg = 0.0 ;
int max = data[0] ; //假設第一個是最大值
int min = data[0] ; //假設第一個是最小值
for(int x = 0 ; x < data.length ; x ++){
if(data[x] > max) { //max地位改變
max = data[x] ;
}
if(data[x] < min) {
min = data[x] ;
}
sum += data[x] ;
}
avg = sum / data.length ;
System.out.println(“數組内容總和:” + sum) ;
System.out.println(“數組内容平均值:” + avg) ;
System.out.println(“數組内容最大值:” + max) ;
System.out.println(“數組内容最小值:” + min) ;
}
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.println(temp[x]) ;
}
}
}
圖七 求值結果圖
主方法所在的類往往被稱為主類,那麼既然是主類肯定不希望涉及到過于複雜的功能。在進行開發的過程當中,主方法本身就相當于是一個用戶端,而對于用戶端的代碼應該盡量簡單一些,是以這個時候最好的做法是将這一系列的計算過程交給單獨的程式類去完成。
範例:改善操作設計
class ArrayUtil { //是一個操作工具的類
private int sum ; //儲存總和
private double avg ; //儲存平均值
private int max ; //儲存最大值
private int min ; //儲存最小值
public ArrayUtil(int data[]) { //進行數組計算
this.max = data[0] ; //假設第一個是最大值
this.min = data[0] ; //假設第一個是最小值
for(int x = 0 ; x < data.length ; x ++){
if(data[x] > max) { //max地位改變
this.max = data[x] ;
}
if(data[x] < min) {
this.min = data[x] ;
}
this.sum += data[x] ;
}
this.avg = this.sum / data.length ;
}
public int getSum() {
return this.sum ;
}
public double getAvg() {
return this.avg ;
}
public int getMax() {
return this.max ;
}
public int getMin() {
return this.min ;
}
}
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {1,2,3,4,5}
ArrayUtil util = new ArrayUtil(data) ; //資料計算
System.out.println(“數組内容總和:” + util.getSum()) ;
System.out.println(“數組内容平均值:” + util.getAvg()) ;
System.out.println(“數組内容最大值:” + util.getMax()) ;
System.out.println(“數組内容最小值:” + util.getMin()) ;
}
}
圖八 求值結果圖二
此時的主類就好比我們使用的電腦一樣,隻關心如何操作,而具體的操作過程被類進行包裝了。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:數組排序-觸摸算法的門檻 | 帶你學《Java面向對象程式設計》之十八 更多Java面向對象程式設計文章檢視此處