Java的传值机制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java的传值机制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1612字,纯文字阅读大概需要3分钟。
内容图文
![Java的传值机制](/upload/InfoBanner/zyjiaocheng/1334/73d9f3c0ffbc4815a096eba98e8518bf.jpg)
不管多好的总结都比不上一段代码
我们先来看看基本类型的实例变量的传值机制
创建一个Student类
1 public class Student { 2 int age=18; 3 String name="Jack"; 4 }
尝试将 基本类型 实例变量age当做参数传入方法,在方法内修改参数的值,从而修改age的值
构造一个changeAge方法
1 public void changeAge(int in) { 2 in=0; 3 }
在main方法中实例化一个Student对象stu,调用changeAge方法来改变stu的age
1 Student stu=new Student(); 2 System.out.println("尝试改变前stu的age:"+stu.age); 3 stu.changeAge(stu.age); 4 System.out.println("尝试改变后stu的age:"+stu.age);
运行结果:
- 尝试改变前stu的age:18
- 尝试改变后stu的age:18
发现age的值没有改变,猜想传入方法中的参数只是age的一个副本而不是age本身。
在main方法中直接更改age
1 System.out.println("尝试改变前stu的age:"+stu.age); 2 stu.age=0; 3 System.out.println("尝试改变后stu的age:"+stu.age);
运行结果:
- 尝试改变前stu的age:18
- 尝试改变后stu的age:0
age发生了改变,证明是传入时出了问题,传的是副本。
我们再来看看引用类型的实例变量的传值机制
尝试 将引用类型实例变量name当做参数传入方法,在方法内实例化一个新的对象并将该对象的地址传给参数,从而修改name的指向
构造一个changeName方法
public void changeName(String str) { String temp="null"; str=temp; }
在main方法中调用changeName方法来改变stu的name
1 System.out.println("尝试改变前stu的name:"+stu.name); 2 stu.changeName(stu.name); 3 System.out.println("尝试改变后stu的name:"+stu.name);
运行结果:
- 尝试改变前stu的name:Jack
- 尝试改变后stu的name:Jack
发现name并没有改变,指向的仍旧是原来的那个对象,猜想传入方法的参数不是name本身而是name的一个副本(也就是地址的一个副本)。
在main方法中直接更改name
1 System.out.println("尝试改变前stu的name:"+stu.name); 2 stu.name=("null"); 3 System.out.println("尝试改变后stu的name:"+stu.name);
运行结果:
- 尝试改变前stu的name:Jack
- 尝试改变后stu的name:null
name发生了改变,证明是传入时出了问题,传的是地址的一个副本。
代码一顿操作后来个总结是再好不过了
以上所有操作只说明一个结果:Java中传参是值传递,传入方法的只是一个copy。传基本类型的变量时传的是数据的一个copy,传引用类型的变量时传的是地址的一个copy。此时注意引用类型的变量承载的只是对象的地址而不是对象本身哦!
另(可视而不见):注意静态变量的与众不同,改变一个对象的静态变量就相当于改变所有哦。这时候如果使用对象来调用静态变量很容易造成混淆,毕竟它是属于类的。
原文:https://www.cnblogs.com/hbc314/p/12149804.html
内容总结
以上是互联网集市为您收集整理的Java的传值机制全部内容,希望文章能够帮你解决Java的传值机制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。