call by value 和 call by reference
6.下列正确的有( )
A. call by value 不会改变实际参数的数值
B. call by reference 能改变实际参数的参考地址
C. call by reference不能改变实际参数的参考地址
D. call by reference 能改变实际参数的内容
答案:ACD
Java中参数的传递有两种,一种是按值传递(传递的是具体的值,如基础数据类型),另一种是按引用传递(传递的是对象的引用,即对象的存储地址)。
main()
{//按值传递int val = 20 ;print(val) ; //打印的是20setVal(val); print(val) ; //打印的还是20//按引用传递StringBuffer val = new StringBuffer("234");print(val.toString()) ;//打印的是234 setStringVal(val) ;print(val.toString()) ;//打印的是234 changeStringVal(val);print(val.toString()) ;//打印的是234123
}void setVal(int val)
{val = 10 ;
}
void setStringVal(StringBuffer val)
{val = new StringBuffer("345");
}
void changeStringVal(StringBuffer val)
{val = val.append("123") ;
}
从上面的代码可以了解:
1.按值传递时在调用的方法中,参数只是实际参数的一个拷贝。所以不管参数在方法里面如何修改都不会改变原来参数值。也就是说val的值一直保持不变。
2.按引用传递时,会产生一份新的引用(不妨叫做y)。此时x和y指向了同一个对象。
例子中:当调用setStringVal方法时,引用拷贝即y指向了另一个对象("345")此时并不会改变x引用的值,所以打印的是234。
例子中:当调用changeStringVal时,y引用改变了对象的实际的值,此时x和y指向的还是同一个对象。所以打印的是234123。
从上面的分析我们可以得出以下结论:
1.call by value不会改变实际参数的数值。
2.call by reference不能改变实际参数的参考地址。
3.call by reference能改变实际参数的内容。
call by value 和 call by reference相关推荐
- undefined reference to 'pthread_create'问题解决(转)
undefined reference to 'pthread_create' undefined reference to 'pthread_join' 问题原因: pthread 库不是 ...
- 《Java: The Complete Reference》等书读书笔记
春节期间读了下<Java: The Complete Reference>发现这本书写的深入浅出,我想一个问题,书中很多内容我们也知道,但是为什么我们就写不出这样一本书,这么全面,这么系统 ...
- undefined reference to `libiconv_open 无法编译PHP libiconv
原文:http://hi.baidu.com/ostech/blog/item/a63f9b0dabed1ae7ab6457d0.html ./configure --with-mysql=/back ...
- 【Qt】error: undefined reference to `vtable for MainWindow‘
1.问题描述 在写一个demo时,想尽量简单,就把MainWindow类的定义和实现都写在main.cpp中,结果编译时报错: main.cpp:-1: error: undefined refere ...
- 【Qt】报错error: undefined reference to `vtable for的解决方法
1.问题描述 编译Qt程序时,在某个类构造函数定义处报错: error: undefined reference to `vtable for 2.原因分析 导致错误信息的原因是:子类没有实现父类的纯 ...
- 【ffmpeg】编译时报错:error: undefined reference to `av...
1.问题描述 昨天使用ffmpeg库编译demo一切正常,今天再次链接ffmpeg库时报了一堆错误: error: undefined reference to `av_frame_alloc()' ...
- undefined reference to android log print,undefined reference to '__android_log_print'
场景:undefined reference to `android_log_print' undefined reference to `__android_log_print' 原因:没有加入支持 ...
- C++中Reference与指针(Pointer)的使用对比
了解引用reference与指针pointer到底有什么不同可以帮助你决定什么时候该用reference,什么时候该用pointer. 在C++ 中,reference在很多方面与指针(pointer ...
- c++中的对象引用(object reference)与对象指针的区别
2019独角兽企业重金招聘Python工程师标准>>> ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指 ...
- VS2008中Web Reference和Service Reference的区别
很早就发现在vs2008中应用web service有两种方式,即Add Web Reference和Add Service Reference,但是一直不是很清楚这两者有什么区别.趁着今天有空实验一 ...
最新文章
- 学习动态性能表(3)--v$sqlv$sql_plan
- 最新技术前沿与产业风向标来了,百度研究院发布2021年十大趋势
- 数据结构:循环链表解决约瑟夫问题
- TensorFlow深度学习实战---循环神经网络
- c char*转int_C语言中的char类型也有signed和unsigned?字符也有正负之分吗?
- C++ throw:抛出自己的异常
- 计算机在科技英语翻译中起的作用,浅谈科技英语翻译中英语词语的正确理解与表达...
- 小程序 bindtouchmove 使用拖动按钮 页面跟着滑动并拖动卡顿感 问题
- npm run report,打包,包资源 ,vue大小,vue资源大小
- SpringBoot : BeanFactory和FactoryBean的区别
- stmcubemx 脉冲计数_STM32CubeMX:ETR外部脉冲计数器
- android 分页列表,android获取相册列表并分页获取
- php ccontroller,FineCMS controllers\ApiController.php 函数downAction 任意文件下载
- 显示隐藏dataGrid控件的标题栏,改变标题栏高度.
- Mysql5.7+ 出现Field * doesn‘t have a default value解决办法
- java计算机毕业设计网上鲜花交易平台源代码+数据库+系统+lw文档
- summernote 添加emoji表情包
- maven(视频学习)
- 论文阅读(边缘计算人工智能工业互联网)
- MYSQL中如何创建存储过程和存储函数(上篇)
热门文章
- 万字长文讲清楚4D毫米波雷达
- houseoforange_hitcon_2016(House of orange, unsorted bin attack,FSOP)
- linux下查看进程+杀死进程方法大全
- 近十年计算机病毒侵害柱形图,全国2002年10月自学考试计算机应用基础真题
- php去除换行(回车换行)的三种方法
- 微信小程序发现的一些小问题以及解决方案集合以及注意点
- Centos服务器java环境初始化搭建
- 2015百度之星初赛(1)1006 旋转卡壳
- GICv3软件overview手册之GICv3基本功能(1)
- 制作AE(ArcGIS Engine 打包)开发的应用程序的安装包