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;
}