在第八篇博文中,介紹了編寫方法體必須了解的基本知識點,初學者已經可 以自己寫簡單的例子進行練習。在練習過程中,我們不可能把所有的代碼都放在 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語言中值傳遞的特征,進一步,初學者可 以繼續學習類與類之間的關系。