Java學習筆記第二天——方法
方法:其實就是完成特定功能的程式碼塊 定義格式: 修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2……){ 方法體; return 返回值; }
格式解釋: 1.修飾符 目前記住public static 2.返回值型別 用於限定返回值的資料型別 3.方法名 為了方便我們呼叫方法的名字 - 引數型別 用於限定呼叫方法時傳入的資料的型別 - 引數名 用於接收呼叫方法時傳入的資料的變數 - 方法體 完成功能的程式碼 - return 結束方法,並把返回值帶給呼叫者
寫一個方法有兩個明確: - A:返回值型別 明確功能結果的資料型別 - B:引數列表 明確有幾個引數,以及引數的型別
方法的呼叫:(有明確返回值的方法呼叫) - A:單獨呼叫,沒有意義 - B:輸出呼叫,有意義,但是不夠好因為我可能需要拿到結果進行進一步操作 - C:賦值呼叫,推薦方式
有明確返回值的方法使用eg:
public class MethodDemo {
public static void main(String[] args) {
//單獨呼叫
sum(10,20);
//輸出呼叫
System.out.println(sum(10,20));
//賦值呼叫
int result = sum(10 ,20);
//可以對result進行進一步操作
//result += 10;
System.out.println(result);
}
public static int sum(int a,int b){
int c = a + b;
return c;
}
}
方法的呼叫:(void修飾的方法的呼叫) - 只能單獨呼叫 - 如果一個方法沒有明確的返回值型別,也不能把返回值型別空出來,應該寫void表示該方法無返回值型別
void修飾的方法使用eg
public class MethodDemo {
public static void main(String[] args) {
//單獨呼叫
printHelloWorld();
//輸出呼叫
//System.out.println(printHelloWorld());
//賦值呼叫
//void x = printHelloWorld();
}
public static void printHelloWorld(){
for(int i=0;i<10;i++){
System.out.println("HelloWorld!");
}
}
}
方法過載: 1.方法名相同,引數列表不同,與返回值無關 2.引數列表不同: ①引數的個數不同 ②引數對應的資料型別不同 注意:在呼叫方法的時候,Java虛擬機器會通過引數列表的不同來區分同名的方法
方法過載eg
public class MethodDemo {
public static void main(String[] args) {
//定義變數
int a = 10;
int b = 20;
//求和方法
int result = sum(a,b);
System.out.println("result:"+result);
//定義變數
int c = 30;
//求和方法
int result2 = sum(a,b,c);
System.out.println("result2:"+result2);
//求和方法
float result3 = sum(a,b);
System.out.println("result3:"+result3);
}
public static int sum(int a, int b){
return a+b;
}
public static int sum(int a,int b,int c){
return a+b+c;
}
public static float sum(float a,float b){
return a+b;
}
}
方法的引數如果是基本資料型別:形式引數的改變不影響實際引數 形式引數:用於接收實際引數的變數 實際引數:實際參與運算的變數 方法的引數是基本資料型別eg
public class ArgsDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a:"+a+"b:"+b); //a:10 b:20
change(a,b);
System.out.println("a:"+a+"b:"+b); //a:10 b:20
}
public static void change(int a,int b){
System.out.println("a:"+a+"b:"+b); //a:10 b:20
a=b;
b=b+a;
System.out.println("a:"+a+"b:"+b); //a:20 b:40
}
}
如果引數是引用資料型別:形式引數的改變直接影響實際引數 兩個引用指向同一個堆記憶體,任何一個引用對他產生的操作,另一個都直接受影響
引數是引用資料型別eg
public class ArgsDemo2 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
for(int i = 0;i < arr.length;i++){
System.out.println(arr[i]);
}
change(arr);
for(int x=0;x<arr.length;x++){
System.out.println(arr[x]);
}
}
public static void change(int[] arr){
for(int x=0;x<arr.length;x++){
if(arr[x]%2==0)
{
arr[x] *= 2;
}
}
}
}