1. 程式人生 > >Java基礎複習第六天——方法的定義、呼叫、形參實參、方法過載、ArrayList類(集合)

Java基礎複習第六天——方法的定義、呼叫、形參實參、方法過載、ArrayList類(集合)

一.方法

定義格式:

//定義方法:求兩個整數之和
//返回值型別 int
//引數:未知量 2個 都是int
public static int getSum(int num1,int num2) {
    //方法體
    int sum = num1 + num2;

    return sum; //返回值:sum
}

  許可權修飾符 返回值型別 方法名(引數列表) {
		  		方法體;
				  return 返回值;
	 	}
	 	

返回值型別 : 方法計算後結果的型別,如果沒有結果就是void,返回值型別要與return返回值的型別保持一致
方法名	  : 就是方法的名稱,
是一個識別符號(注意規則規範) 引數列表 : 方法執行需要的未知量,幾個未知量,每個未知量都是什麼型別 方法體 : 就是執行方法功能的那些程式碼 return 返回值: a. 返回 方法計算後的那個結果   b. 表示方法的結束,所以在return語句後寫程式碼會報錯!

方法的呼叫

三種呼叫方式
 getSum(a,b); //單獨呼叫
 int ss = getSum(a,b); //賦值呼叫
 System.out.println(getSum(a, b));//輸出呼叫

在這裡插入圖片描述
實際引數 和 形式引數

實際引數,簡稱實參,是呼叫方法時傳入的引數
形式引數,簡稱形參.是定義方法時寫的引數
總結: 形參和實參 要在個數上,型別上,順序上 一一對應

二.方法過載

1.方法過載的概念
  在同一個類中,可以有方法名相同,但是引數列表不同的多個方法,這些方法稱為方法的過載,引數列表不同有三個方面的表現,至少滿足一種即可

a.引數個數不同
b.引數型別不同
c.引數順序不同
注意:判斷方法是否過載,只看方法名和引數列表(與返回值型別無關)!!!

2.方法過載呼叫
   當我們呼叫過載的方法時,JVM是通過實際引數的型別,個數,和順序 匹配到合適那個方法,然後呼叫

3.練習

public static void open(){}public static void open(int a){}static
void open(int a,int b){}public static void open(double a,int b){}public static void open(int a,double b){}public void open(int i,double d){} 不是,只看方法名和引數列表 public static void OPEN(){} 不是,因為方法名不同,java大小寫敏感 public static void open(int i,int j){} 不是,和第三個方法是一樣,引數列表只看引數型別

三.ArrayList類(集合)

定義
  可變陣列,一種容器,這裡可變是指元素的個數可以任意新增和刪除(長度可變,陣列長度不可變),直譯可以稱為 陣列列表,通常稱為'集合'

格式:
ArrayList<E> 集合名字 = new ArrayList<E>(); E為資料型別

//這三種方法都行
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list = new ArrayList<>(); //常用
ArrayList<String> list = new ArrayList();
 
//不寫<E>,不寫的話預設就是Object泛型了,list.add(型別無限制),這
  與繼承和多型有關,等複習到那有時間在搞
  ArrayList list = new ArrayList ();

包裝類
 Java為每一種基本型別,提供一種對應的引用型別(基本資料型別包裝類)  
基本型別     基本資料型別的包裝類
byte      Byte
short      Short
char       Character  //只有這兩種型別不同,其它的首字母小
int       Integer   //寫變大寫
long       Long
float      Float
double     Double
boolean     Boolean

ArrayList類不能直接使用基本型別,要使用對應的包裝類,引用型別如String,直接用就可以了
  ArrayList < integer > list1 = new ArrayList();

ArrayList類常用方法
在這裡插入圖片描述

鏈狀結構:

如有集合{ 1, 3, 5, 6}
索引:  [0][1][2][3]

ArrayList類的內部儲存是鏈狀結構的,當去除索引[2]時,變為了:
   
集合 { 1, 3, 6 }
索引: [0][1][2]

元素6的索引變為了[2]!!!

remove()這裡有坑,等複習到迭代器iterator的時候在搞

練習

1.自定義一個方法完成將指定數字轉成對應字元並返回的方法

 public static void main(String[] args) {

        int a = 122;
        System.out.println(No2(a));public static String No2(int a){
        //ASCII碼錶轉換,如果轉換後是字母和數字,則正常轉換
        //否則不輸出
        if(a>=48&&a<=122){ //0為48  A為65  a為97
            char result=(char)a;
            return a+"轉換後的字元是:"+result;
        }
        else
            return  a+"轉換後的字元是:";
    }

2.傳遞兩個int型別的陣列,判斷是否一致(不考慮記憶體地址)

 public static void main(String[] args) {

        int arr1[]={1,2,1};
        int arr2[]=new int[]{1,2,3};
        System.out.println(No4(arr1, arr2));public static String No4(int[] arr1,int arr2[]){

        if(arr1.length==arr2.length){

            for (int i = 0; i <arr1.length ; i++) {
                if(arr1[i]==arr2[i]){
                                    //如果一樣,這裡什麼都不做,等到最後return"一致"就可以了
                }else {
                    return "不一致"; //如果長度一致,內容不一致,直接return“不一致”,不再執行後面程式碼
                }
            }
        }

        else  return "不一致"; //如果長度不一致,執行這段程式碼

        return "一致"; //長度和內容都一樣的話 return“一致”
    }

3.判斷兩個陣列是否對稱


 public static void main(String[] args) {
   ...
   ...
   ...
}
   public static String No5(int[] arr){
        //索引
        int min=0;
        int max=arr.length-1;

        for (int i = 0; i < arr.length; i++) {
            while(min<max) {
                if (arr[min] == arr[max]) {

                } else {
                    return "不對稱";
                }
                min++;
                max--;
            }

        }

        return "對稱";
    }

4.修改ArrayList集合中指定的元素

 public static void main(String[] args) {
 
    ArrayList<String> list = new ArrayList<>();
    //加入元素
    list.add("aaa");
      list.add("bbb");
      list.add("ccc");
      System.out.println("修改前:");
        System.out.println(list);//集合與陣列不同,集合直接列印就可以了。 其實應該是System.out.println(list.toString())
                                 //這裡可以直接省略不寫,這裡涉及到了繼承的問題
      //記錄要修改的元素和新的元素
     Scanner sc=new Scanner(System.in);
        String oldE = sc.next();
        String newE = sc.next();
        System.out.println("修改後:");
        System.out.println(No6(list,oldE,newE));
 public static String No6(ArrayList<String> list,String oldE,String newE){

       //indexOf():此方法返回指定元素的第一個匹配項的索引 在此列表中 的位置,如果此列表中不包含該元素則返回-1。
       int index = list.indexOf(oldE);
       if(index==(-1)){
           System.out.println(list);
           return "修改失敗,元素中無'"+oldE+"'元素";
       }else{
           list.remove(index);
           list.add(index,newE);
           System.out.println(list);
       }
       return "修改成功,將'"+oldE+"'修改為了:"+newE;
   }