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