在Java編程中,函數(shù)的參數(shù)分為實(shí)參和形參。實(shí)參是調(diào)用函數(shù)時(shí)傳遞給函數(shù)的值,而形參是函數(shù)定義中定義的參數(shù)變量。
//舉例 public void printNum(int num) { System.out.println(num); }
在上面的代碼中,num就是函數(shù)printNum的形參。當(dāng)調(diào)用printNum函數(shù)時(shí),需要傳遞一個(gè)int類型的參數(shù)給函數(shù),這個(gè)參數(shù)就是printNum函數(shù)的實(shí)參。
如果函數(shù)的形參是基本類型的話,那么傳遞給函數(shù)的實(shí)參值會(huì)被復(fù)制到形參變量中。也就是說,在函數(shù)中改變形參的值并不會(huì)影響到實(shí)參的值。
//舉例 public void changeNum(int num) { num = 10; System.out.println(num); } public static void main(String[] args) { int num = 5; changeNum(num); System.out.println(num); }
在上面的代碼中,函數(shù)changeNum的形參是int類型的變量num。在main函數(shù)中,調(diào)用changeNum函數(shù)時(shí)傳遞了一個(gè)值為5的int類型的變量num。在changeNum函數(shù)中,形參num的值被修改為10。但是由于實(shí)參num是一個(gè)獨(dú)立的變量,所以main函數(shù)中的num的值仍然為5,沒有受到changeNum函數(shù)的影響。
如果函數(shù)的形參是引用類型的話,那么傳遞給函數(shù)的實(shí)參就是一個(gè)引用地址。也就是說,在函數(shù)中修改引用地址所指向的對(duì)象的值,實(shí)參所指向的對(duì)象的值也會(huì)被修改。
//舉例 public class Person { private String name; public Person(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public class Main { public static void changeName(Person person) { person.setName("Tom"); } public static void main(String[] args) { Person person = new Person("Jack"); changeName(person); System.out.println(person.getName()); } }
在上面的代碼中,定義了一個(gè)Person類,并在主函數(shù)中創(chuàng)建了一個(gè)名為Jack的Person對(duì)象。在changeName函數(shù)中,修改了person對(duì)象的名字為Tom。當(dāng)程序輸出person對(duì)象的名字時(shí),會(huì)發(fā)現(xiàn)person對(duì)象的名字已經(jīng)被修改成了Tom。