一、方法
一、方法
方法的概念
將一個功能抽取出來,放在類中的大括號中, 形成一個獨立的功能 , 當需要使用該功能時,則呼叫它, 這樣可以增強程式碼的複用性(重複利用) ,並解決程式碼的冗餘現象。
方法的語法:
[訪問修飾符] 返回值型別 方法名( [引數型別 引數名1 , 引數型別 引數名2 …] ){
方法體
}
詳解:
訪問修飾符: 用於修飾這個方法的呼叫範文 目前預設 public static
返回值型別: 無返回值就寫void 或者 方法執行後返回的結果的資料型別 ,方法執行完之後會將結果返回
方法名 : 給方法取名, 準尋識別符號的規則
引數型別 、引數名: 它們是同時定義 ,方法在執行時未知的資料,需要在呼叫方法時進行傳遞值。 引數型別表示 這個引數的資料型別 ,引數名就是一個引數名稱 這個引數名可以在方法體中使用。
方法體: 這個方法具有的功能(程式碼塊)
定義一個方法
public static int add(int num1 , int num2){
return num1+num2;
}
根據方法的引數 不同,返回值不同,可以將方法分為四類:
1、無參無返回值方法
語法:
public static void 方法名(){
方法體
}
2、無參有返回值方法
語法:
public static 返回值型別 方法名 (){
方法體
}
結果在n中
3、有參無返回值方法
語法:
public static void 方法名(引數列表 ){
方法體
}
情況一、 當引數中是基本資料型別 ,將實參的值賦值給 形參
public static void add(int num){
num++;
System.out.println("方法中 num 的值:"+num);
}
呼叫方法: num的改變不會改變n 的值 ,因為是兩個獨立的記憶體
int n =10;
System.out.println(n);
add(n);
System.out.println("方法外面 實參的值:"+n);
結果輸出:
方法中 num 的值: 11
方法外面 實參的值:10
情況二: 當引數的資料型別是引用資料型別
例如 陣列 、類
// 方法的比對 引數是陣列
public static void add(int [] arr){
arr[0]++;
System.out.println("方法中 arr[0]="+arr[0]);
}
呼叫:
int [] array ={10,20};
add(array);// 會呼叫 引數是陣列的add方法
System.out.println("方法外面的 arr[0]="+ array[0]);
結果:
方法中 arr[0]=11
方法外面的 arr[0]=11
public static void addAge(Student student){
// 將學生的年齡 獲取 自加
int age = student.age;
age++;
// 在重新賦值
student.age=age;
}
呼叫
Student student = new Student(); // age預設為 18
System.out.println("方法呼叫之前: "+student.age); // 18
addAge(student); // 傳的地址
System.out.println("方法外面 學生的年齡:"+student.age);
結果輸出: 方法呼叫之前: 18
方法外面 學生的年齡:19
/**
* 以上方法呼叫 的結論: 對於引數為引用資料型別,方法外面和方法內部公用同一塊記憶體,
* 也就是說 引數再傳遞時,將引用型別的地址賦值給 方法的形參
* 對於基本資料型別 ,方法的引數將 值的副本賦值給形參,這樣形參的改變
* 不會影響實參的值
* 原因: 引用資料型別在引數傳遞時 是地址 (JVM對於堆記憶體的大小不可控)
* 基本資料型別在引數傳遞時 是值
*
*/
情況三、 當引數是String型別時 ,String是引用資料型別 ,但是在引數傳遞時,是與基本型別一樣
public static void main(String[] args) {
// 引數是字串
String uname ="a";
sayHello(uname);
System.out.println("我最後對"+uname+"sayHello");
}
public static void sayHello(String name){
name="b";
System.out.println("我對"+name+"sayHello");
}
結果:
我對a sayHello
我最後對b sayHello
4、有參有返回值方法
語法:
public static 返回值型別 方法名(引數列表){
方法體
}
例如 :
public static String sayHello(String name){
name="a";
System.out.println("我對"+name+"sayHello");
return name ;
}
呼叫
public static void main(String[] args) {
// 引數是字串
String uname ="b";
// 將返回值接收 ,這是 uname 才被改變 ,如果不接受,則不改變
uname = sayHello(uname);
System.out.println("我最後對"+uname+"sayHello");
}
結果:
我對a sayHello
我最後對b sayHello
// 引數是字串
String uname ="a";
// 將返回值接收 ,這是 uname 才被改變 ,如果不接受,則不改變
uname = sayHello(uname);
System.out.println("我最後對"+uname+"sayHello");
}
結果:
我對a sayHello
我最後對a sayHello
2020.9.25
相關文章
- 一種介面設計方法,最終一致性方法
- MachineUnlearn 的一種方法Mac
- JQuery常用方法一覽jQuery
- 聊一聊模板方法模式模式
- Selenium,Selenium使用方法(一)
- 一些小的方法工具
- 為Promise新增一個方法Promise
- Java類方法(定義一個工具類,儲存一些常用的方法)Java
- jquery中siblings方法配合什麼方法一起使用jQuery
- 一個快速使用IDEA的方法Idea
- 對抗攻擊方法一覽
- 給大家推薦一個方法
- SAP RETAIL 商品LISTING方法之一AI
- 一張圖整理陣列方法陣列
- 克隆一個陣列的方法陣列
- JS常用屬性方法大全(一)JS
- 收集的一些小方法
- 無法訪問的成員例項化一個方法在角的另一種方法
- 【除錯】ftrace(一)基本使用方法除錯
- 有一種優化方法叫做Preload優化
- 實現一個Object.create()方法Object
- **一些會用到的js方法JS
- 我只是想用JavaScript寫一個方法...JavaScript
- java裡的一些hash方法Java
- 一種測量頻率的方法
- css爸爸!一邊固定,另一邊自適應的方法CSS
- Stream流的一些使用方法
- 一種提升SQL改寫效率的方法SQL
- 類的一些常用魔術方法
- 一種後設資料同步的方法
- 深度學習中的優化方法(一)深度學習優化
- webpack優化的一些基本方法Web優化
- 發現 ORM 方法 MorphToMany 的一個 BugORM
- 方法返回資料統一封裝封裝
- Java 8 peek() 方法的一些疑惑Java
- js進擊--一些常用小方法JS
- java中用到的一些公用方法Java
- 設計模式第一講-模版方法模式設計模式