java的函数参数传递

摘要:
虽然java只有传值这一种传递方式,但是根据参数类型的不同,函数对参数的影响也会不一样。我们看看下面的swapList函数//交换两个list对象publicstaticvoidswapList{Listtemp=listA;listA=listB;listB=temp;}执行这个函数ListliA=newArrayList();ListliB=newArrayList();intx=3;inty=5;liA.add;liB.add;swapList;//交换forSystem.out.println;发现打印出来的liA里面的元素还是3,说明交换没有成功,仔细想一下,就会发现执行swapList函数,listA、listB分别是liA、liB的一份拷贝,listA与listB交换,listA指向了原来listB指向的对象,listB指向了原来listA指向的对象,但是对listA和listB的处理不影响liA、liB。所以liA和liB还是分别指向原来的对象。

java中只有一种参数传递方式:传值;这点和c++不一样,c++中有传值和引用两种方式。虽然java只有传值这
一种传递方式,但是根据参数类型的不同,函数对参数的影响也会不一样。可以这么说:形参是实参的一份拷贝,
当参数类型是基本数据类型时,对形参的处理不影响实参,也就是你想通过形参交换两个实参是行不通的;当形参
是对象时(事实上,是对象的引用),形参和实参指向的是同一个对象,所以通过形参对对象进行操作会影响实参
所指向的对象。我们看看下面的swapList函数
//交换两个list对象
public static void swapList(List<Integer> listA,List<Integer> listB){
List<Integer> temp = listA;
listA=listB;
listB=temp;
}
执行这个函数
List<Integer> liA=new ArrayList<Integer>();
List<Integer> liB=new ArrayList<Integer>();
int x=3;
int y=5;
liA.add(x);
liB.add(y);
swapList(liA,liB);//交换
for(int each:liA)
System.out.println(each);
发现打印出来的liA里面的元素还是3,说明交换没有成功,仔细想一下,就会发现执行swapList函数,listA、listB
分别是liA、liB的一份拷贝,listA与listB交换,listA指向了原来listB指向的对象,listB指向了原来listA指向的
对象,但是对listA和listB的处理不影响liA、liB。所以liA和liB还是分别指向原来的对象。
最后,python的参数传递方式与java基本一致。

免责声明:文章转载自《java的函数参数传递》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇移动端去除横向滚动条【原】SQL判断表字段是否存在,并添加字段下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

canvas基础绘制矩形(1)

1.画布基础知识画布元素是HTML5中添加的一个重要元素,专门用于绘制图形。然而,画布本身不具备绘制图形的能力。将画布元素放置在页面上相当于在页面上放置矩形“画布”。我们可以使用js脚本在“画布”上绘制图形。...

ubuntu中VNC的安装配置笔记

设置密码并首次启动vncserver后。vnc/directory将在用户的主目录中生成。注意:安装后,用户的主目录中没有vnc目录。这是因为默认情况下启用了桌面配置,并且需要修改配置文件。后来,我在网上找到了一篇可靠的文章:http://blog.csdn.net/njchenyi/article/details/8489689本文中描述的配置方法确实可行...

说说接口封装

今天,我为同事封装了一个接口。当谈到接口封装时,有很多关于它的讨论。在很多情况下,说一个服务好,一个服务坏,实际上是在吐槽服务团队之外暴露的界面质量。无论哪种语言,抽象的封装接口都由一个函数名、几个参数和几个返回值组成。总之,参数不应该被封装……我们在内部尝试接口_Catch不会抛出异常,所有信息都将以错误代码的形式返回。就php而言,建议进行异常处理。...

C# 没落了吗?

首先,这个数字--------------------------------------------C#是否正在衰落与微软的整个平台密切相关。近年来,使用C#的人越来越少,这也是因为越来越少的人专门为Microsoft平台开发产品。现在是移动时代,微软基本上错过了互联网和移动互联网这两波浪潮。现在生活不容易。在软件工程中,人们常说“唯一不变的就是改变本身”...

【Lua】table表删除指定元素 (转)

删除表时,会找到一个表。remove(table,idx)方法用于根据表中的索引进行删除。当前要求是根据值进行删除。quick-x中还有一个相应的表方法封装:1.根据表中的值删除--删除表中的指定元素(而不是根据索引)--@paramarray要操作的容器--@paramvalue删除值--@paramremo...

通过QQ邮箱的SMTP服务器发送QQ邮件至163邮箱提示“发送邮件失败”的解决方案(三种可能性,不妨一试)

发件人:QQ邮箱收件人:163邮箱基于上述开发平台。下面列出了通过QQ邮箱的SMTP服务器向163邮箱发送QQ邮件的三种可能的解决方案,提示“发送邮件失败”。您可以尝试在163邮箱的反垃圾邮件选项中设置白名单。如果您取消SMTP服务,然后再次选中“启用”,或尝试使用该帐户在其他地方发送邮件,这可能有助于从QQ邮箱解锁帐户(待测试。我将不负责测试这种可能性导致...