1 package org.awt; 2 3 import java.awt.Graphics; 4 import java.applet.Applet; 5 6 7 public class test{ 8 9 float ptValue; 10 11 public void changeInt(int value) 12 { 13 value=55;//1 14 int val=value;//2 15 System.out.print(value); 16 //這里理解為型參,pt.changeInt(val)只是將val的的值傳遞到了changeInt函數中。實驗中是用1,但實際上主函數給被調用函數傳遞參數更多的是形式2 17 // 18 } 19 20 public void changeStr(String value){ 21 22 value=new String("different");//1 23 String str=value.toUpperCase();//2 24 System.out.println("Inside methon the str value "+str); 25 //這個跟上面一個是同樣的道理,不過要記得val str 都是引用類型,都是把地址傳遞給被調用函數。只不過這里相當於在被調用函數內部把value聲明了 26 //對於2直接value.toUpperCase()然后輸出得到的還是原來的string。要通過2的形式才能得到想要的輸出。不過注意一點想想String 與 StringBuf的區別 27 } 28 29 public void changeObjValue(test ref){ 30 31 ref.ptValue=99.0f; 32 //當調用pt.changeObjValue(pt)之前,ref.ptValue 和 pt.ptValue 都是指向101.0f這個浮點數的地址單元。當調用之后pt.changeObjValue(pt) 傳給changeObjValue函數的是 33 //pt的地址,這時候pt賦值給ref,ref將它的ptValue指向了浮點數99.0f的地址單元 34 } 35 36 public static void main(String [] args) 37 { 38 39 String str; 40 int val; 41 test pt=new test(); 42 val=11; 43 pt.changeInt(val); 44 System.out.println("Int value is "+val); 45 46 str=new String("hello"); 47 pt.changeStr(str); 48 System.out.println("str value is "+str); 49 50 pt.ptValue=101.0f; 51 pt.changeObjValue(pt); 52 System.out.println("pt values is"+ pt.ptValue); 53 54 55 } 56 }