`
DoubleEO
  • 浏览: 154540 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

方法实参传递的疑惑!!

 
阅读更多
   public class PassArray {
	public static void main(String[] args) {
		int array[]={1,2,3,4,5};
		for(int value:array){
			System.out.print(value);
		}
		System.out.println("改变后的数组");
		modify(array);
		for(int value:array){
			System.out.print(value);
		}
		System.out.println("现在改变元素");
		modify(array[3]);	
		System.out.println("再次打印数组,看第3个元素是什么");
		for(int value:array){
			System.out.print(value);
		}
	}

	private static void modify(int i) {
		System.out.println("第3个元素修改后是:");
		i*=3;
		System.out.println(i);
		
	}

	private static void modify(int[] array) {
		for(int counter=0;counter<array.length;counter++){
			array[counter]*=2;
		}
		
	}
	

} 

第一次方法调用modify(int[] array)是传的一个数组的引用,结果形参,实参指向了同一个引用,再回到main方法时,数组已经改成了{2,4,6,8,10},
第2次方法调用modify(int i) 是传递了一个基本类型,一个数组元素,第3个元素,再回到MAIN方法时,这个元素仍然没有变化。
书上有2句话:1.当方法修改基本类型参数时,它对调用时采用的变量没有影响
2.对于引用类型的型参也是如此,如果讲另一个对象的引用赋给引用类型的型参,则型参指向新对象,但调用时的变量仍指向原来的对象。
看完这2句,我再看这试验代码,完全晕了~
分享到:
评论
2 楼 leeldy 2009-02-04  
基本类型boolean,char,byte,short,int,long,float,double都是值传递
其他都是引用传递
1 楼 zhangthe9 2009-01-20  
所有都是值传递
传对象进去是 引用值传递
操作的是引用的对象

传值进去,操作的是值副本



结果绝对正确啊

相关推荐

    c语言的形参和实参传递的区别详解

    C语言中实参和形参之间的数据传递是单向的“值传递”,单向传递,只能由实参传给形参,反之不行 输出格式并没有选择%p而是选择了%d,因为十进制的数看起来更直观 1 值传递 如果只是传递值的话: #include //值...

    传递实参.html

    传递实参.html

    VB把常量作为实参方法示例.rar

    VB6.0把常量作为实参方法示例,书中的代码,分享给大家,后附完整源码下载。  Sub s(n As Integer) '定义子过程  Dim i As Integer  For i = 1 To n '子过程的功能是输出n个空格  Print " ";  Next i  End Sub...

    Java程序设计基础:一维数组应用数组作为方法实参.pptx

    1 2 3 4 5 [0] [1] [2] [3] [4] ...数组作为方法的形参 ...m方法栈 ...main方法栈 ...数组作为方法的形参 ...main方法栈 ...swap方法栈 ...但是,基础类型作为方法参数时,形参值改变不会影响主调方法中的基本类型实参值。

    关于 byval 与 byref 的区别分析总结

    二者区别: byval 传递数值,实参和形参分处不同的内存单元,互不干扰! byref 传递地址,实参和形参占用相同的内存单元,形参变则实参变!!!!!! 通俗理解: byval 一去不复返 byref 进去再出来,可能被...

    Python 变量的引用-调用函数传递实参的引用

    Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和...

    VB 变量做实参举例

    VB 变量做实参举例 VB 变量做实参举例

    python 引用传递和值传递详解(实参,形参)

    补充知识:python函数方法实参给形参传值时候的隐形‘陷阱’ 众所周知,在python函数里面参数分为形参,实参两种。形参当然了就是形式参数,而实参是我们需要给这个函数传入的变量,在我们给实参传入变量之后,调用...

    老生常谈C++中实参形参的传递问题

    这里说的传递当然是指 实参是如何传递给形参的啦 还挺复杂的~~~~~~~~⊙﹏⊙b汗,这里讲述了4种参数传递的情况和注意事项: 1.非引用形参 这是最普通,也是最简单的形参传递了。 参数传递,即是使用实参副本(注意啊...

    VB 数组元素做实参实例

    VB 数组元素做实参实例 VB 数组元素做实参实例 VB 数组元素做实参实例

    VB 数组名做实参实例

    VB 数组名做实参实例 VB 数组名做实参实例 VB 数组名做实参实例

    C语言看不懂形参实参以及调用方法的必看PPT课件.pptx

    C语言看不懂形参实参以及调用方法的必看PPT课件.pptx

    61.java实参.zip

    61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61.java实参.zip61....

    形参实参影响调试程序

    本文档是一个实参形参影响的程序的调试过程及结果,可以帮助更好的理解函数实参与形参关系

    C什么叫实参 形参 ?怎么用?区别?

    C什么叫实参 形参 ?怎么用?区别?

    值传递,指针传递,引用传递的区别,内含可运行代码和详细解释

    另一方面,值传递由于形参和实参内存地址不一样,有些功能并不能实现(swap()),因此,除了极为简单的函数会使用值传递外,大多数会采用引用传递。而对于指针传递,则在涉及数组的情况下使用较多,因为指针本身会给...

    Java程序设计基础:方法的值传递.pptx

    方法调用时,需要提供实参,它们必须与方法签名中所对应的形参次序相同,这称作参数顺序匹配。 参数顺序匹配 public static void nPrintln(String message , int n){ for(int i = 0 ; i; i ++) System.out.println...

    VB 常量做实参举例

    VB 常量做实参举例 VB 常量做实参举例

Global site tag (gtag.js) - Google Analytics