首頁 > 軟體

java 方法與陣列基礎使用詳解

2022-04-02 16:00:12

一、方法的使用

1、方法的定義

java中的方法就相當於C語言中的函數

方法的語法格式

//方法的定義

修飾符  返回值型別  方法的名稱(【引數型別 引數】){

              方法體程式碼;

             【return 返回值】;

}

【注意事項】

  • 修飾符:現階段直接使用public static 固定搭配
  • 返回值型別:如果方法有返回值,返回值型別必須要與返回的實體型別一致,如果沒有返回值,必須寫成void
  • 方法名字:採用小駝峰命名
  • 參數列:如果方法沒有引數,()中什麼都不寫,如果有引數,需指定引數型別,多個引數之間使用逗號隔開
  • 方法體:方法內部要執行的語句 
  • 在java當中,方法必須寫在類當中 
  • 在java當中,方法不能巢狀定義 
  • 在java當中,沒有方法宣告一說

2、方法過載

如果多個方法的名字相同,參數列不同,則稱該方法被過載。

public class TestMethod {
    public static void main(String[] args) {
        add(1, 2);    //呼叫函數add(int,int)
        add(1.5, 2.5);//呼叫函數add(double,double)
        add(1, 3, 5);//呼叫函數add(int,int,int)
    }
    public static int add(int x, int y) {
        return x + y;
    }
    public static double add(double x, double y) {
        return x + y;
    }
    public static double add(int x, int y, int z) {
        return x + y + z;
    }
}

【注】

  • 方法名必須相同
  • 參數列必須不同(引數的個數不同、引數的型別不同、型別的次序必須不同)
  • 與返回值型別是否相同無關

二、陣列的定義和使用

1、陣列的基本概念

(1)陣列的建立

T[ ] 陣列名 = new T[N];

T:表示陣列中元素的型別

N:表示陣列的大小

int[] array1 = new int[10]; // 建立一個可以容納10個int型別元素的陣列
double[] array2 = new double[5]; // 建立一個可以容納5個double型別元素的陣列
String[] array3 = new double[3]; // 建立一個可以容納3個字串元素的陣列

(2)陣列的初始化

動態初始化:在建立陣列時,直接指定書中元素的個數

int[] array = new int[10];  //預設值為0

靜態初始化:在建立時不直接指定資料元素個數,直接將元素內容指定。

語法格式:T[ ] 陣列名 = {data1,……,datan};

int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = new String[]{"hell", "Java", "!!!"};

【注意】

  • 靜態初始化雖然沒有指定陣列的長度,編譯器在編譯時會根據{}中元素個數來確定陣列的長度。
  • 靜態初始化時, {}中資料型別必須與[]前資料型別一致。
  • 靜態初始化可以簡寫,省去後面的new T[]。
  • 陣列也可以按照如下C語言個數建立,不推薦。
  • 如果不確定陣列當中內容時,使用動態初始化,否則建議使用靜態態初始化。
  • 如果沒有對陣列進行初始化,陣列中元素有其預設值。

(3)陣列的遍歷

  • 通過for迴圈來遍歷,在陣列中可以通過length來獲取陣列長
  • 使用for-each遍歷陣列
int[] array={1,2,3};
for(int x:array){
    System.out.println(x);
};
//遍歷array中元素,將元素放在x中進行列印
  • 將陣列以字串的形式進行列印
Array.toString(array);//將陣列以字串的形式進行輸出

2、陣列是參照型別(JVM的記憶體分佈)

方法區(Method Area)和堆(Heap)為所有執行緒所共用,每個執行緒擁有獨立的虛擬機器器棧(JVM Stack)、本地方法棧(Native Method Stack)以及程式計數器。

  • 程式計數器 (PC Register): 用來儲存下一條執行的指令的地址
  • 虛擬機器器棧(JVM Stack): 用來儲存方法執行相關的一些資訊:區域性變數、運算元棧、動態連結、返回地址以及其他的一些資訊。當方法執行結束後,棧幀就被銷燬了,即棧幀中儲存的資料也被銷燬了。
  • 本地方法棧(Native Method Stack): 虛擬機器器棧的作用類似. 只不過儲存的內容是Native方法的區域性變數。
  • 堆(Heap):使用 new 建立的物件都是在堆上儲存。堆是隨著程式開始執行時而建立,隨著程式的退出而銷燬,堆中的資料只要還有在使用,就不會被銷燬。
  • 方法區(Method Area): 用於儲存已被虛擬機器器載入的類資訊、常數、靜態變數、即時編譯器編譯後的程式碼等資料. 方法編譯出的的位元組碼就是儲存在這個區域 。

3、參照變數

  • 參照變數的0值為null,參照為空值時,不指向任何物件
  • 參照變數虛擬機器器棧中儲存的是其在堆中空間的起始地址,通過改地址可以去操作物件。

舉例如下:

public static void func() {
   int[] array1 = new int[3];
   array1[0] = 10;
   array1[1] = 20;
   array1[2] = 30;
   int[] array2 = new int[]{1,2,3,4,5};
   array2[0] = 100;
   array2[1] = 200;
   array1 = array2;
   array1[2] = 300;
   array1[3] = 400;
   array2[4] = 500;
   for (int i = 0; i < array2.length; i++) {
       System.out.println(array2[i]);
   }
}
  • 建立陣列array1,沒有設定初始值,因此其為0;
  • 通過下標修改陣列array1中元素為10、20、30;
  • 建立陣列array2,初始值為1、2、3、4、5;
  • 通過下標方式將陣列array2中前兩個元素設定為100、200;
  • array1=array2,既讓array1去參照array2參照的陣列的空間,此時array1和array2其實是一個陣列;
  • 通過array1將2、3號元素修改為300、400;通過array2修改4號元素為500;
  • 此時列印array2的結果應為:100、200、300、400、500

4、陣列拷貝函數

完全拷貝(Array.copyof)

int[] arr={1,2,3,4,5};
int[] newarr=Array.copyof(arr,arr.length);
  • copyof方法在進行陣列拷貝時,建立了新的陣列
  • 此時arr和newarr參照的不是同一個陣列

範圍拷貝(Array.copyofRange)

int[] newarr1=Array.copyofRange(arr,int i,int j);

拷貝從 i 下標的 j -1 下標的陣列元素;

5、二維陣列的for.each遍歷

int[][]arr={{1,2,3,4},{5,6,7,8},{3,6,2,3}};
for(int[] tmp:arr){
   for(int x:tmp){
       System.out.println(x);
   }
}

二位陣列就是特殊的一維陣列

到此這篇關於java 方法與陣列基礎使用詳解的文章就介紹到這了,更多相關java 方法與陣列內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com