Java 中的傳值和傳應用 .

來源:互聯網
上載者:User

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

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

             如 8 種基礎資料型別 (Elementary Data Type) int, float, double, long, char, byte, short, boolean 分別對應 Integer, Float, Double, Long, String, Byte, Short, Boolean.

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

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

測試代碼:

[java]
view plaincopyprint?
  1. package string;  
  2.   
  3. /** 
  4.  * 測試Java中的函數參數傳值. 
  5.  * 傳值、傳引用. 
  6.  * 函數參數是普通類型、對象等. 
  7.  * 在函數調用傳遞參數時, 
  8.  *    傳遞的若是基於基本類型的JAVA資料類型, 都是傳值. 如 8 種基礎資料型別 (Elementary Data Type) 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. }  

package string;</p><p>/**<br /> * 測試Java中的函數參數傳值.<br /> * 傳值、傳引用.<br /> * 函數參數是普通類型、對象等.<br /> * 在函數調用傳遞參數時,<br /> * 傳遞的若是基於基本類型的JAVA資料類型, 都是傳值. 如 8 種基礎資料型別 (Elementary Data Type) int, float, double, long, char, byte, short, boolean 分別對應 Integer, Float, Double, Long, String, Byte, Short, Boolean.<br /> * 傳遞的若是普通類的對象, 則是傳引用.<br /> * @author zhankunlin<br /> *<br /> */<br />public class TestTransfValueFunction {</p><p>/**<br /> * 測試 String 類型.<br /> * String 對應基本類型 char.<br /> */<br />private void testString() {<br />System.out.println("測試 String");<br />String src = new String("world");<br />System.out.println(src);<br />procsString(src);<br />System.out.println(src);<br />}</p><p>/**<br /> * 該方法中處理參數 src<br /> * @param src<br /> */<br />private void procsString(String src) {<br />src += "hello";<br />}</p><p>/**<br /> * 測試 Integer 類型.<br /> * Integer 對應基本類型 int.<br /> */<br />private void testInteger() {<br />System.out.println("測試 Integer");<br />Integer src = new Integer(500);<br />//Integer src = 500;<br />System.out.println(src);<br />procsInteger(src);<br />System.out.println(src);<br />}</p><p>/**<br /> * 該方法中處理參數 src<br /> * @param src<br /> */<br />private void procsInteger(Integer src) {<br />src += 500;<br />}</p><p>/**<br /> * 測試 Float 類型.<br /> * Float 對應基本類型 float.<br /> */<br />private void testFloat() {<br />System.out.println("測試 Float");<br />Float src = new Float(123.45);<br />System.out.println(src);<br />procsFloat(src);<br />System.out.println(src);<br />}</p><p>/**<br /> * 該方法中處理參數 src<br /> * @param src<br /> */<br />private void procsFloat(Float src) {<br />src += 500.00;<br />}</p><p>/**<br /> * 測試參數是普通類的對象的情況.<br /> * 此時是傳遞的是引用.<br /> */<br />private void testT() {<br />System.out.println("測試 普通類對象");<br />T src = new T();<br />src.num = 100;<br />src.str = "hello";<br />System.out.println(src.str + ", " + src.num);<br />procsT(src);<br />System.out.println(src.str + ", " + src.num);<br />}</p><p>/**<br /> * 該方法中處理參數 src<br /> * @param src<br /> */<br />private void procsT(T src) {<br />src.num = 500;<br />src.str = "hello world";<br />}</p><p>public static void main(String []argv) {<br />TestTransfValueFunction test = new TestTransfValueFunction();<br />test.testString();<br />test.testInteger();<br />test.testFloat();<br />test.testT();<br />}<br />}</p><p>class T {<br />public String str;<br />public Integer num;</p><p>public void setStr(String str) {<br />this.str = str;<br />}</p><p>public String getStr() {<br />return this.str;<br />}</p><p>public void setNum(Integer num) {<br />this.num = num;<br />}</p><p>public Integer getNum() {<br />return this.num;<br />}<br />}<br />
運行結果:

[plain]
view plaincopyprint?
  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  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.