引用传递&值传递

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

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所指向的数组数据,这是英文传引用,实参和形参都是指向同一块内存空间。

时间: 2024-11-10 10:22:03

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

指针和引用、值传递和引用传递

1.指针和引用 指针是一个变量,它存储的是内存地址:引用和原来的变量是同一个,对引用修改会改变原变量,而修改指针只是修改了指向的内存 可以有const指针.但是没有const引用:指针可以多级int **p;引用只有1级 int &&p不合法 指针可空,引用必须初始化:指针可以修改,可以指向别的变量:引用不能修改,只能是那个变量的引用 2.值传递和引用传递 值传递,会创建变量的一个临时副本,对它修改不会改变原变量 引用传递,因为引用是原变量的一个别名,对引用修改会改变原值 指针作为函数参数

值传递 引用传递

方法参数传递有2种方式: 值传递和引用传递. 值传递: 默认都是值传递.值传递有2种,值类型和引用类型的.实质是复制栈中的值. 值类型的值传递:栈中的值就是实际值. 引用类型的值传递:栈中的值是内存堆中地址. 引用传递: 参数前加ref的为引用传递,引用传递有2种,值类型和引用类型的.实质就是传递自己本身,只是多了个别名.

Java技术_Java千百问(0039)_引用传递和值传递有什么区别

点击进入_更多_Java千百问 1.什么是值传递 值传递,是将内存空间中某个存储单元中存放的值,传送给另一个存储单元.(java中的存储单元并不是物理内存的地址,但具有相关性) 例如: //定义了一个改变参数值的函数 public static void changeValue(int x) { ??x = x *2; } public class TestMain{ //调用该函数 int num = 5; System.out.println(num); changeValue(num);

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

一.Java中什么叫做引用类型变量? 引用:就是按内存地址查询       比如:String s = new String();这个其实是在栈内存里分配一块内存空间为s,在堆内存里 new了一个String类型的空间,在运行时是 栈内存里的 s 指向堆内存里的那一块存储空间 基本数据类类型存的是数值本身,而引用类型变量在内存放的是数据的引用,并不是数据的本身, 引用类型变量是以间接方式去获取数据. 引用类型变量都属于对象类型,如:数组.类.字符串等都属于引用类型变量.所以,引用类型 变量里面存

C++ 之 值传递和引用传递

1  值传递 值传递实际上是,拷贝实参的值传递给形参,常用于“小对象” (small objects) int fact(int val) // factorial of val { int ret = 1; // assign ret * val to ret and decrement val while (val > 1) ret *= val--; return ret; } 调用该函数: cout << "5! is " << fact(5) &

JAVA中值传递和引用传递,抽象,接口的概念

一.Java中的值传递和引用传递 值传递:方法调用时,实际参数把它的值传递给形式参数,方法执行过程中形参的改变和实参的改变会不影响. 这种传递是对于基础数据类型来说的. 引用传递:也称为传地址.方法调用的时候,实际参数的引用(地址,而不是参数的值)被传递给方法中相应的形式参数,在方法执行中,对形式参数的操作实际上就是对于实际参数的操作,方法执行过程中形式参数的改变将会影响实际参数的值.

什么是值传递和引用传递?

值传递 值传递一般是基本数据类型的传递,传递的是该变量的一个副本,改变副本不影响原变量. 引用传递 引用传徒一般是引用数据类型的传递,传递的是该对象地址的一个副本,并且不是原对象本身. 一般情况下,Java内的基本数据类型的传递都是值传递,Java内的引用数据类型的传递都是引用传递. 原文地址:https://www.cnblogs.com/Freak-Lew/p/9193081.html

理解---&gt;Java中的值传递&amp;引用传递

转自:https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247486882&idx=2&sn=0056f7c027b0db429650ea4df03985e5&chksm=ebd6328edca1bb9804927cb66bad1bb9d54e542bfea5b7ff9f9432603b919460ee601f12baf6&mpshare=1&scene=23&srcid=0113FJUlz

JAVA 值传递

Java里方法的参数传递方式只有一种:值传递 值传递:当系统开始执行方法时,系统为形参执行初始化,就是把实参变量的值赋给方法的形参变量,方法的操作的并不是实际的实参变量 引用型变量:系统复制的是变量,就是引用地址,并没有复制对象本身 eg. 1 class Value{ 2 public int i=15; 3 } 4 public class Test{ 5 public static void main(String argv[]){ 6 Test t=new Test(); 7 t.fir