Java 中的传值和传应用 .

转载 2012年03月21日 17:24:29
 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  

Java是传值还是传址引用

  • 2007年04月20日 17:28
  • 53KB
  • 下载

php 函数变量作用域(传值与传应用)

php中变量默认是传值赋值,既当将一个表达式的值赋予一个标量时,整个原始表达式的值被赋值到目标变量。这意味着,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影像另外一个变量。 p...

几句话弄清楚Java参数传值还是传引用

原文转自:http://blog.csdn.net/fbysss/article/details/3082949 作者:fbysss msn:jameslastchina@ho...

Java参数传值还是传引用

Java参数传值还是传引用  参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递。写它是为了揭穿普遍存在的一种神话,即认为 Java 应用程...
  • xys_777
  • xys_777
  • 2011年11月09日 10:43
  • 18092

关于Java对象作为参数传递是传值还是传引用的问题

前言  在Java中,当对象作为参数传递时,究竟传递的是对象的值,还是对象的引用,这是一个饱受争议的话题。若传的是值,那么函数接收的只是实参的一个副本,函数对形参的操作并不会对实参产生影响;若传的是引...

java中函数参数传值还是传地址

今天和大家探讨个简单的小问题大笑 Java中函数参数是传值还是传地址     刚接触C语言时有一道题困惑了我好久,就是交换两个数的值,本来以为相当简单,只要把要交换的a,b传进去,在函数里面利用一个...

java 函数形参传值和传引用的区别

java方法中传值和传引用的问题是个基本问题,但是也有很多人一时弄不清。   (一)基本数据类型:传值,方法不会改变实参的值。 [java] view pl...

Java到底是传引用还是传值?

问题: 如果Java是用引用来传递的话,为什么交换函数(swap)不起作用呢? 回答: 你的问题引出了Java新手的常犯的错误。事实上,一些老手也很难搞清楚这些概念。 Java确实使用对象的引用来...

Java中的形参和实参的区别以及传值调用和传引用调用

名词解析: 1.形参:用来接收调用该方法时传递的参数。只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间。因此仅仅在方法内有效。 2.实参:传递给被调用方法的值,预先创建并赋予...

Java形参是传值还是传引用

1. 简单类型是按值传递的   Java 方法的参数是简单类型的时候,是按值传递的 (pass by value)。这一点我们可以通过一个简单的例子来说明: /* 例 1 */ /**  * @(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 中的传值和传应用 .
举报原因:
原因补充:

(最多只允许输入30个字)