歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java 中的傳值和傳引用

Java中在函數調用傳遞參數時,

 *   傳遞的若是基於基本類型的JAVA數據類型, 都是傳值. 

如 8 種基本數據類型 int, float, double, long, char, byte, short, boolean 分別對應 Integer, Float, Double, Long, String, Byte, Short, Boolean.

此外,數組也是傳值,和C/C++中不一樣(驗證了 byte 數組)

 *   傳遞的若是普通類的對象, 則是傳引用.

測試代碼:

  1. package string;  
  2.   
  3. /** 
  4.  * 測試Java中的函數參數傳值. 
  5.  * 傳值、傳引用. 
  6.  * 函數參數是普通類型、對象等. 
  7.  * 在函數調用傳遞參數時, 
  8.  *    傳遞的若是基於基本類型的JAVA數據類型, 都是傳值. 如 8 種基本數據類型 int, float, double, long, char, byte, short, boolean 分別對應 Integer, Float, Double, Long, String, Byte, Short, Boolean. 
  9.  *    傳遞的若是普通類的對象, 則是傳引用. 
  10.  * @author zhankunlin 
  11.  * 
  12.  */  
  13. public class TestTransfValueFunction {  
  14.   
  15.     /** 
  16.      * 測試 String 類型. 
  17.      * String 對應基本類型 char. 
  18.      */  
  19.     private void testString() {  
  20.         System.out.println("測試 String");  
  21.         String src = new String("world");    
  22.         System.out.println(src);  
  23.         procsString(src);  
  24.         System.out.println(src);  
  25.     }  
  26.       
  27.     /** 
  28.      * 該方法中處理參數 src 
  29.      * @param src 
  30.      */  
  31.     private void procsString(String src) {  
  32.         src += "hello";  
  33.     }  
  34.       
  35.     /** 
  36.      * 測試 Integer 類型. 
  37.      * Integer 對應基本類型 int. 
  38.      */  
  39.     private void testInteger() {  
  40.         System.out.println("測試 Integer");  
  41.         Integer src = new Integer(500);  
  42.         //Integer src = 500;     
  43.         System.out.println(src);  
  44.         procsInteger(src);  
  45.         System.out.println(src);  
  46.     }  
  47.       
  48.     /** 
  49.      * 該方法中處理參數 src 
  50.      * @param src 
  51.      */  
  52.     private void procsInteger(Integer src) {  
  53.         src += 500;  
  54.     }  
  55.       
  56.     /** 
  57.      * 測試 Float 類型. 
  58.      * Float 對應基本類型 float. 
  59.      */  
  60.     private void testFloat() {  
  61.         System.out.println("測試 Float");  
  62.         Float src = new Float(123.45);    
  63.         System.out.println(src);  
  64.         procsFloat(src);  
  65.         System.out.println(src);  
  66.     }  
  67.       
  68.     /** 
  69.      * 該方法中處理參數 src 
  70.      * @param src 
  71.      */  
  72.     private void procsFloat(Float src) {  
  73.         src += 500.00;  
  74.     }  
  75.       
  76.     /** 
  77.      * 測試參數是普通類的對象的情況. 
  78.      * 此時是傳遞的是引用. 
  79.      */  
  80.     private void testT() {  
  81.         System.out.println("測試 普通類對象");  
  82.         T src = new T();    
  83.         src.num = 100;  
  84.         src.str = "hello";  
  85.         System.out.println(src.str + ", " + src.num);  
  86.         procsT(src);  
  87.         System.out.println(src.str + ", " + src.num);  
  88.     }  
  89.       
  90.     /** 
  91.      * 該方法中處理參數 src 
  92.      * @param src 
  93.      */  
  94.     private void procsT(T src) {  
  95.         src.num = 500;  
  96.         src.str = "hello world";  
  97.     }  
  98.       
  99.     public static void main(String []argv) {  
  100.         TestTransfValueFunction test = new TestTransfValueFunction();  
  101.         test.testString();  
  102.         test.testInteger();  
  103.         test.testFloat();  
  104.         test.testT();  
  105.     }  
  106. }  
  107.   
  108. class T {  
  109.     public String str;  
  110.     public Integer num;  
  111.       
  112.     public void setStr(String str) {  
  113.         this.str = str;  
  114.     }  
  115.       
  116.     public String getStr() {  
  117.         return this.str;  
  118.     }  
  119.       
  120.     public void setNum(Integer num) {  
  121.         this.num = num;  
  122.     }  
  123.       
  124.     public Integer getNum() {  
  125.         return this.num;  
  126.     }  
  127. }  
運行結果:
  1. 測試 String  
  2. world  
  3. world  
  4. 測試 Integer  
  5. 500  
  6. 500  
  7. 測試 Float  
  8. 123.45  
  9. 123.45  
  10. 測試 普通類對象  
  11. hello, 100  
  12. hello world, 500  
Copyright © Linux教程網 All Rights Reserved