按引用与按值传递的示例

二、数据作为方法参数示例代码:

// PassArray.java

// Passing arrays and individual array elements to methods

public class PassArray {

public static void main(String[] args) {

int a[] = { 1, 2, 3, 4, 5 };

String output = "The values of the original array are:\n";

for (int i = 0; i < a.length; i++)

output += "   " + a[i];//输出原始数组的值

output += "\n\nEffects of passing array " + "element call-by-value:\n"

+ "a[3] before modifyElement: " + a[3];//输出a[3]的原始数据

modifyElement(a[3]);//定义一个方法,引用传递

output += "\na[3] after modifyElement: " + a[3];

output += "\n Effects of passing entire array by reference";

//按值传送数组类型方法参数

modifyArray(a); // array a passed call-by-reference

output += "\n\nThe values of the modified array are:\n";

for (int i = 0; i < a.length; i++)

output += "   " + a[i];

System.out.println(output);

}

public static void modifyArray(int b[]) {

for (int j = 0; j < b.length; j++)

b[j] *= 2;//方法的使用,改变了组数元素的值,直接修改了原始的数组元素

}

public static void modifyElement(int e) {

e *= 2;

}

}

运行结果:

分析:引用传递跟值传递方法的区别:

前者是若直接在方法体改变a[3]的值,最后输出的就是更改后的的值;后者的方法体修改的仅是原始数组数组元素的一个拷贝。

按引用传递与按值传送数组类型方法参数的最大关键在于:

使用前者时,如果方法中有代码更改了数组元素的值,实际上是直接修改了原始的数组元素。

使用后者则没有这个问题,方法体中修改的仅是原始数组元素的一个拷贝。

时间: 2024-07-28 13:26:32

按引用与按值传递的示例的相关文章

JAVA中数组总结(课堂总结)

数组的特点: Arrays(数组)一种简单的数据结构元素具有相同的数据类型一旦创建之后,尺寸保持不变元素在内存中连续分布例子一:按引用与按值传递的示例源代码: // PassArray.java // Passing arrays and individual array elements to methods public class PassArray { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5 }

(转)Java:按值传递和按引用传递详细解说

值传递和引用传递详解: 1:按值传递是什么 指的是在方法调用时,传递的参数是按值的拷贝传递.示例如下: [java] view plain copy public class TempTest { private void test1(int a){ //做点事情 } public static void main(String[] args) { TempTest t = new TempTest(); int a = 3; t.test1(a);//这里传递的参数a就是按值传递 } } 按值

Effective Modern C++:05右值引用、移动语义和完美转发

移动语义使得编译器得以使用成本较低的移动操作,来代替成本较高的复制操作:完美转发使得人们可以撰写接收任意实参的函数模板,并将其转发到目标函数,目标函数会接收到与转发函数所接收到的完全相同的实参.右值引用是将这两个不相关的语言特性连接起来的底层语言机制,正是它使得移动语义和完美转发成了可能. 23:理解std::move和std::forward std::move并不进行任何移动,std::forward也不进行任何转发.这两者在运行期都无所作为,它们不会生成任何可执行代码.实际上,std::m

Python引用复制,参数传递,弱引用与垃圾回收

引用 先上个示例: >>> val = [1] >>> val[0] = val >>> val [[...]] 上述代码使val中包含自身,而产生了无限递归.上述示例表明Python中的变量名为引用类型,赋值只是使得左值指向与右值相同的内存对象. is运算符可以判断两个引用是否指向了同一个对象,而==运算符判断两个引用指向的值是否相等而不关心指向什么对象. 对引用不了解的朋友,可以把Python引用与C/C++中的void *类比,不过因为垃圾回收机

PHP值传递和引用传递的区别

PHP值传递和引用传递的区别.什么时候传值什么时候传引用 (1)按值传递:函数范围内对值的任何改变在函数外部都会被忽略 (2)按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 (3)优缺点: A:按值传递时,php必须复制值.特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作. B.按引用传递则不需要复制值,对于性能提高很有好处. 1 <?php 2 header('content-type:text/html;charset=utf-8'); 3 4 //探讨一下 a

【C++注意事项】3 引用

通俗来讲,引用(reference)就是给对象另外一个名字. 1)引用必须被初始化 int &ref; // 错误 int val=10; int &ref2=val; // ref2指向val(val的另一个名字) 在初始化变量时,初始值会被拷贝到新建的对象中.在定义引用时,程序把引用和它的初始值绑定(bind)在一起,而不是将初始值拷贝到引用.一旦初始化完成,引用将和它的初始值对象一直绑定在一起.因为无法令引用重新绑定到另一个对象,因此引用必须初始化. 补充:所谓对象,就是一块存储数据

C#中的引用传递、值传递

  先来说下C#中的数据类型.分值类型和引用类型两大类. 值类型:直接存储数据的值,保存在内存中的stack(堆栈)中 引用类型:存储对值的引用,实际上存储的就是一个内存的地址.引用类型的保存分成两块,实际值保存在托管堆(heap)中.实际值的内存地址保存在stack中 当使用引用类型时先找到stack中的地址,再找到heap中的实际值. 也就是说保存引用类型时要用到stack和heap,但使用引用类型时我们实际上只用到stack中的值,然后通过这个值间接的访问heap中的值 C#预定义的简单类

&lt;q&gt;标签,短文本引用

想在你的html中加一段引用吗?比如在你的网页的文章里想引用某个作家的一句诗,这样会使你的文章更加出彩,那么<q>标签是你所需要的. 语法: <q>引用文本</q> 如下面例子: <p>最初知道庄子,是从一首诗<q>庄生晓梦迷蝴蝶.望帝春心托杜鹃.</q>开始的.虽然当时不知道是什么意思,只是觉得诗句挺特别.后来才明白这个典故出自是庄子的<逍遥游>,<逍遥游>代表了庄子思想的最高境界,是对世俗社会的功名利禄及自

第九章 引用

第九章 引用 1.  什么是引用? 引用就是别名.int &ra=a;此处的&不是取址运算符,而是引用运算符 3.  引用就是别名常量 4.  引用对象 只能 int &ra=a;// 注意定义引用时要对其初始化 int &ra; ra=a;  //这样是错误的,引用就像常量,只能初始化不能赋值 对象也可以定义一个引用,但是类不能,因为它没有具体的内存地址 5.  空引用 6.  按值传递 按值传递(传递的是副本)≠按地址传递()≠按别名传递(有什么不同?) 9.1.利用指