下面的程序阐述了值传递与应用传递的区别。

package com.liaojianya.chapter1;
/**
* This program demonstrates the use of array reference.
* @author LIAO JIANYA
* 2016年7月21日
*/
public class ArrayReference
{
public static void main(String[] args)
{
int x = 100;
int arr[] = {1, 2, 3, 4, 5, 6}; System.out.println("----------before invoking changeReferValue method-----------");
print(x, arr); changeReferValue(x, arr);
System.out.println("----------after invoking changeReferValue method-----------");
print(x, arr);
} public static void changeReferValue(int a, int[] chgArr)
{
a += 1;
chgArr[0] = 0;
chgArr[1] = 0;
chgArr[2] = 0;
} public static void printArr(int[] arr)
{
for(int i : arr)
{
System.out.print(i + " ");
}
System.out.println();
} public static void print(int x, int[] arr)
{
System.out.println("x = " + x);
System.out.print("arr: ");
printArr(arr);
}
}

  运行结果:

----------before invoking changeReferValue method-----------
x = 100
arr: 1 2 3 4 5 6
----------after invoking changeReferValue method-----------
x = 100
arr: 0 0 0 4 5 6

  分析:

  1)由于整型形参a和实参x之间是值传递关系,所以不改变x的本身的值,只是在changeReferValue方法中,将x为100的这个值赋给了a,a += 1;后,是a 加了1,对x没有任何的影响。

  2)而对形参arr所指向的数组数据的任何修改,都会同步影响到main方法中的实参arr所指向的数组数据,这是英文传引用,实参和形参都是指向同一块内存空间。

引用传递&值传递的更多相关文章

  1. js 参数的 引用与值传递

    js中arr的赋值不影响原数组,赋值和引用的区别 1.赋值 var a = 1; var b = a;   //赋的是a的复制值 b ++; alert(a);   //"1"   ...

  2. 【温故知新C/C++/opencv】取址符&||cv::groupRectangles||引用与值传递

    cv::groupRectangles void groupRectangles(vector<Rect>& rectList, int groupThreshold, doubl ...

  3. Java中引用类型变量,对象,值类型,值传递,引用传递 区别与定义

    一.Java中什么叫做引用类型变量?引用:就是按内存地址查询       比如:String s = new String();这个其实是在栈内存里分配一块内存空间为s,在堆内存里new了一个Stri ...

  4. java关于值传递和引用传递的有趣试验

    上代码: public class Demo { public static void main(String[] args) { test_1(); test_2(); } public stati ...

  5. 理解--->Java中的值传递&引用传递

    转自:http://url.cn/5tL9F5D 值传递和引用传递 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际 ...

  6. Java千百问_05面向对象(011)_引用传递和值传递有什么差别

    点击进入_很多其它_Java千百问 1.什么是值传递 值传递,是将内存空间中某个存储单元中存放的值,传送给还有一个存储单元.(java中的存储单元并不是物理内存的地址,但具有相关性) 比如: //定义 ...

  7. Java中的值传递和地址传递(传值、传引用)

    首先,不要纠结于 Pass By Value 和 Pass By Reference 的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中.更何况,要想知道 ...

  8. ethereum(以太坊)(四)--值传递与引用传递

    contract Person { string public _name; function Person() { _name = "liyuechun"; } function ...

  9. java基础 - 形参和实参,值传递和引用传递

    形参和实参 形参:就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的. 形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元. 因此,形 ...

随机推荐

  1. POJ 1321 棋盘问题 DFS搜索

    简单搜索 练习一下回溯 #include <iostream> #include <cstdio> #include <cstring> #include < ...

  2. linux 开机自动挂载ntfs盘

    1) 查看盘符UUID vellbibi@vell001:~$ sudo blkid [sudo] password for vellbibi: /dev/sda1: UUID="bce9e ...

  3. HW5.6

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  4. How to Kill All Processes That Have Open Connection in a SQL Server Database[关闭数据库链接 最佳方法] -摘自网络

    SQL Server database administrators may frequently need in especially development and test environmen ...

  5. Step-by-Step Guide to Portal Development for Microsoft Dynamics CRM - 摘自网络

    The Challenge Oftentimes in the world of Dynamics CRM, the need arises for non-CRM users to gain acc ...

  6. JSP中解决获取请求参数中文乱码问题

    分两种情况: 1.获取访问请求参数时乱码 解决方法:构造一个新的String String user = new String(request.getParameter("user" ...

  7. Java-Web监听器

    在WEB端实现监听实质: 实现一系列的监听接口(实现相应的接口,覆写各接口中相应的方法,在相应的事件触发的时候会执行自己的监听器中的覆写的方法,在各个方法中完成自己想要的操作,从而实现了监听) 监听- ...

  8. [Javascript] Drawing Paths - Curves and Arcs

    window.onload = function() { var canvas = document.getElementById("canvas"), context = can ...

  9. textLayout_1.0.0.595.swz

    使用ai制作的矢量素材,导出到flash里面.生成swf时.有的时候会多一个textLayout_1.0.0.595.swz的文件. 这会导致导出的swf无法加载使用.会显示不出来. 解决办法是: 检 ...

  10. Free and Open Source Load-Balancing Software and Projects--转

    http://www.inlab.de/articles/free-and-open-source-load-balancing-software-and-projects.html This ove ...