在第八篇博文中,介紹了編寫方法體必須了解的基本知識點,初學者已經可 以自己寫簡單的例子進行練習。在練習過程中,我們不可能把所有的代碼都放在 main方法中,Java類一定會有或多或少的方法成員,調用這些方法將是必要的步 驟。而調用方法成員時,如果該方法有參數,就必須要傳遞實際參數給方法的形 式參數。所以了解Java語言中的值傳遞是非常必要的。
Java中的數據類型分兩種,基本數據類型和引用類型。所以本文中也將分別 對這兩種數據類型的值傳遞特征進行介紹。
1.基本數據類型的值傳遞:基本數據類型傳遞的是值。
如下程序:
package com.csst.test; public class Test5 { /** * @param args */ public void printX(int x){ x++; System.out.println("printX: x="+x); } public static void main(String[] args) { // TODO Auto-generated method stub Test5 test5=new Test5(); int x=10; test5.printX(x); System.out.println("main:x="+x); } }
運行結果如下:
printX: x=11
main:x=10
可見,基本數據類型x傳遞給printX方法時,僅僅將值10傳遞給參數x,所以 參數x加1後,輸出了11,而main方法中的x仍然為10。
2、引用類型
引用類型傳遞的是虛地址。
如下程序:
package com.csst.test; public class Test6 { /** * @param args */ public void printName(Student stu){ System.out.println("printName: name is "+stu.getName ()); } public void printPwd(Student stu){ stu.setPwd("abcdef"); System.out.println("printPwd: pwd is "+stu.getPwd()); } public static void main(String[] args) { // TODO Auto-generated method stub Test6 test6=new Test6(); Student stu1=new Student("Rose"); test6.printName(stu1); System.out.println("main: name is "+stu1.getName()); Student stu2=new Student("John","123"); test6.printPwd(stu2); System.out.println("main: pwd is "+stu2.getPwd()); } } class Student{ private String name; private String pwd; public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public Student() { super(); } public Student(String name) { super(); this.name = name; } public Student(String name, String pwd) { super(); this.name = name; this.pwd = pwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
運行結果為:
printName: name is Rose
main: name is Rose
printPwd: pwd is abcdef
main: pwd is abcdef
在該類main方法中,將stu1和stu2傳遞給printName,printPwd時,是將 stu1,stu2的虛地址傳遞給了對應的方法參數。因此,在printName,printPwd中 打印出的name和pwd,與main中打印的name和pwd永遠相同,尤其在printPwd方法 中,通過參數改變了其pwd屬性後,main方法中的stu2的pwd屬性也隨之變化,足 以說明stu2與printPwd的參數本質上是一個對象。
通過本篇學習,可以基本了解Java語言中值傳遞的特征,進一步,初學者可 以繼續學習類與類之間的關系。