java值传递址传递
关于java的值传递和址传递。
值传递:像基本的数据类型,int、float等传递的是值,变量在别的方法中修改时,并不会影响当前变量值。
public static void main(String[] args) {int i = 10;it(i);System.out.println(i);
}public static void it(int i) {i = 15;
}
址传递:下面是两个址传递例子,也就是引用类型
public static void main(String[] args) {Student student = new Student(10);st(student);System.out.println(student.getI());}public static void st(Student s){Student student = new Student(15);s = student;
}
public static void main(String[] args) {Student student = new Student(10);st(student);System.out.println(student.getI());}public static void st(Student s){s.setI(15);
}
第一个例子中输出结果是10
第二个例子中输出结果是15
这两个都是址传递但是结果为什么不同?
在第一个例子中:
在main函数的内存中,存储了一个student的地址,在st函数的内存中存储了一个新的student,当运行到st方法时,会将新new出来的student赋值给s,这个时候,s已经指向了student,所以修改的是student地址中的数据。
当程序再次运行到main方法中时,因为在main方法中存储了之前student的地址,所以这时会输出main方法中的student值为10。
(通俗点理解,main函数是你家,你作为student,你要去st函数家串门,但是在st函数家来了另一个人小七替你充当了student,这个时候st下达了一条指令,将student家的电脑换掉,所以这时候小七是代替你的把家里电脑换掉)
而在第二个例子中:
在st的栈内存中的s是main函数传递过来的地址,直接修改了s中的数值,所以当返回到main函数中时,输出的值为15。
(通俗点理解,main函数是你家,你作为student,你要去st函数家串门,这个时候st下达了一条指令,将student家的电脑换掉,所以这时候是你家里电脑换掉)
java值传递址传递相关推荐
- C# 函数引用传递(址传递)ref、out以及值传递之间的运行效率问题
(郁闷,发表后发现图片不见了~重新补上~) 关于C#数据类型.引用传递和值传递之间的区别,内存方式等问题已经在我转载的一篇文章里有详细说明 C# 数据类型的引用类型.值类型内存存储方式以及区别: 函数 ...
- java怎么传入参数到方法当中_java中方法传入参数时:值传递还是址传递?
JAVA中的数据类型有两大类型: ① 基本数据类型:逻辑型(boolean).文本型(char).整数型(byte.short.int.long).浮点型(float.double) ② 引用数据类型 ...
- Java值传递与引用传递
Java面试题: 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答案基本上是:值传递 说明:得出这种结论的前提必须是&qu ...
- java中是引用传递还是值传递....
刚才与Z师兄聊天,他提问: 你说java中是引用传递还是值传递啊? 当时俺搞混了这个"传递"的意思, 本来以为是对象的实例化比如: abc a=new abc(); 这个a 是引用 ...
- java值传递试题_面试题:java参数传递 | 学步园
public class TestString { public static void link(String a){ a+="World"; } public static v ...
- java引用传递_理解Java中的引用传递和值传递
关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题, 有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性, 感兴趣的同学一起讨论. 1.基本类型和 ...
- 结构体知识------值传递和址传递
结构体知识------值传递和址传递 相关知识 区别 值传递 址传递 例子 作用 程序 运行结果 相关知识 普通变量(char a):a是变量名,对应内存空间的大小是sizeof(char),对应地址 ...
- java值的传递_Java 8可选–基于值的类使用指南
java值的传递 In this article, we will go through the use of Java 8 Optional class and understand what a ...
- java中是值传递引用传递_Java是按值传递而不是按引用传递
java中是值传递引用传递 One of the biggest confusion in Java programming language is whether java is Pass by V ...
最新文章
- 几道有意思的逻辑分析题
- sudami和achillis对初学者的建议
- mysql多实例配置使用方法
- 一种通用整形数组压缩方法
- 数据库注册两种方式的比较
- Windows IOCP模型与Linux EPOLL模块之比较-
- 字符串低位优先排序真的只能排序字符串相同的字符么?
- 汽车软件开发流程及代码提交
- interlib系统服务器,Interlib图书馆集群管理系统.docx
- Fiddler5中文版
- 如何使用AxureShare创建团队文件
- 英语期刊写作-通往国际学术舞台的阶梯第五章答案
- 详解SR锁存器不定态
- python3爬虫教程
- 不接受反驳,性能最强,功能最强的Java日志框架
- 这是我见过最通俗易懂的MES与ERP介绍文章,带你剖析工业4.0!
- 猿人学12题超详细解题思路-入门级js(base64编码)
- Python中reversed()函数
- 使用@Aspect不起作用
- 谁能告诉我微信APP营销到底怎么做?