Java中值传递和引用传递实例
2016-04-15 12:05
453 查看
题目描述:Java中值传递和引用传递实例
实例代码如下;
代码运行结果如下;
![](https://img-blog.csdn.net/20160415115947917?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
结果分析:
1.当在first函数中调用second函数时,传递了两个参数,一个是Value类型的value,一个是int类型的i,所以对value的传递是引用传递,对i的传递是值传递
2.因为对i的传递是值传递,所以second函数中对i的修改并不会改变first中i的值
3.value的传递是引用传递,所以second(Value value,int i)中的value相当于一个指针,指向first中的value,当对其进行修改时,相当于直接对first中的value中的值进行修改
4.当执行这一句Value value2=new Value(); value=value2;代码时,second中的value指针指向了一个新的对象value2,但是first中的value对象的值不变,所以first函数中的输出仍然为20.
值传递和引用传递小结:
Java中的传递统称为值传递,但是又分为值传递和引用传递。
1.值传递包括:基本类型数据的传递、常量池中String的传递,即构建方式为String str=“haha”的方式。
2.引用传递:除了基本类型的传递和常量池中String的传递,其他都为引用传递,引用传递也不改变传递的地址,但是可以改变地址指向对象中的值。
实例代码如下;
<span style="font-size:14px;">class Value{ public int i=15; } public class CompareBasicTypes { public static void main(String[] args) { CompareBasicTypes test=new CompareBasicTypes(); test.first(); } public void first(){ int i=5; Value value=new Value(); value.i=25; //将value和i传递给second second(value, i); System.out.println(value.i); } public void second(Value value,int i){ i=0; value.i=20; Value value2=new Value(); value=value2; System.out.println(value.i+" "+i); } }</span>
代码运行结果如下;
结果分析:
1.当在first函数中调用second函数时,传递了两个参数,一个是Value类型的value,一个是int类型的i,所以对value的传递是引用传递,对i的传递是值传递
2.因为对i的传递是值传递,所以second函数中对i的修改并不会改变first中i的值
3.value的传递是引用传递,所以second(Value value,int i)中的value相当于一个指针,指向first中的value,当对其进行修改时,相当于直接对first中的value中的值进行修改
4.当执行这一句Value value2=new Value(); value=value2;代码时,second中的value指针指向了一个新的对象value2,但是first中的value对象的值不变,所以first函数中的输出仍然为20.
值传递和引用传递小结:
Java中的传递统称为值传递,但是又分为值传递和引用传递。
1.值传递包括:基本类型数据的传递、常量池中String的传递,即构建方式为String str=“haha”的方式。
2.引用传递:除了基本类型的传递和常量池中String的传递,其他都为引用传递,引用传递也不改变传递的地址,但是可以改变地址指向对象中的值。
相关文章推荐
- 【Spring实战】—— 9 AOP环绕通知
- Open JDK 建立SSL失败的问题
- 转:如何查看MyEclipse包含的Eclipse的版本号
- java中解决构造函数中成员变量和形参重名的问题
- java实现栈
- spring4.2+spring mvc +spring data+jpa+hibernate的程序构架
- java中静态代码块的用法 static用法详解
- 转:myeclipse和eclipse的区别和联系,以及版本间的对应关系
- springmvc向页面传值时对list去重
- 转: MyEclipse 10.0,9.0,8.0 下添加jadClipse反编译插件
- eclipse常用20个快捷键
- Java并发编程:Lock
- spring aop中的propagation的7种配置的意思
- 基于配置的Spring AOP
- Editplus如何进行JAVA程序编译调试
- java生成图片验证码实例代码
- SpringMVC、MyBatis声明式事务管理+AOP配置
- Java 二分查找
- 开发环境配置-在eclipse中关联jar的源码和javadoc-9
- springmvc实现文件上传下载