关于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值传递址传递相关推荐

  1. C# 函数引用传递(址传递)ref、out以及值传递之间的运行效率问题

    (郁闷,发表后发现图片不见了~重新补上~) 关于C#数据类型.引用传递和值传递之间的区别,内存方式等问题已经在我转载的一篇文章里有详细说明 C# 数据类型的引用类型.值类型内存存储方式以及区别: 函数 ...

  2. java怎么传入参数到方法当中_java中方法传入参数时:值传递还是址传递?

    JAVA中的数据类型有两大类型: ① 基本数据类型:逻辑型(boolean).文本型(char).整数型(byte.short.int.long).浮点型(float.double) ② 引用数据类型 ...

  3. Java值传递与引用传递

    Java面试题: 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答案基本上是:值传递 说明:得出这种结论的前提必须是&qu ...

  4. java中是引用传递还是值传递....

    刚才与Z师兄聊天,他提问: 你说java中是引用传递还是值传递啊? 当时俺搞混了这个"传递"的意思, 本来以为是对象的实例化比如: abc a=new abc(); 这个a 是引用 ...

  5. java值传递试题_面试题:java参数传递 | 学步园

    public class TestString { public static void link(String a){ a+="World"; } public static v ...

  6. java引用传递_理解Java中的引用传递和值传递

    关于Java传参时是引用传递还是值传递,是一个讨论比较多的话题, 有说Java中只有值传递,也有些地方说引用传递和值传递都存在,本篇记录思考过程,不保证正确性, 感兴趣的同学一起讨论. 1.基本类型和 ...

  7. 结构体知识------值传递和址传递

    结构体知识------值传递和址传递 相关知识 区别 值传递 址传递 例子 作用 程序 运行结果 相关知识 普通变量(char a):a是变量名,对应内存空间的大小是sizeof(char),对应地址 ...

  8. java值的传递_Java 8可选–基于值的类使用指南

    java值的传递 In this article, we will go through the use of Java 8 Optional class and understand what a ...

  9. java中是值传递引用传递_Java是按值传递而不是按引用传递

    java中是值传递引用传递 One of the biggest confusion in Java programming language is whether java is Pass by V ...

最新文章

  1. 几道有意思的逻辑分析题
  2. sudami和achillis对初学者的建议
  3. mysql多实例配置使用方法
  4. 一种通用整形数组压缩方法
  5. 数据库注册两种方式的比较
  6. Windows IOCP模型与Linux EPOLL模块之比较-
  7. 字符串低位优先排序真的只能排序字符串相同的字符么?
  8. 汽车软件开发流程及代码提交
  9. interlib系统服务器,Interlib图书馆集群管理系统.docx
  10. Fiddler5中文版
  11. 如何使用AxureShare创建团队文件
  12. 英语期刊写作-通往国际学术舞台的阶梯第五章答案
  13. 详解SR锁存器不定态
  14. python3爬虫教程
  15. 不接受反驳,性能最强,功能最强的Java日志框架
  16. 这是我见过最通俗易懂的MES与ERP介绍文章,带你剖析工业4.0!
  17. 猿人学12题超详细解题思路-入门级js(base64编码)
  18. Python中reversed()函数
  19. 使用@Aspect不起作用
  20. 谁能告诉我微信APP营销到底怎么做?

热门文章

  1. 阿里云发送短信验证码失败
  2. js 监听屏幕转动orientationchange 获取横屏状态window.orientation 监听屏幕旋转完成 苹果手机屏幕多次旋转之后window获取的尺寸不对
  3. 禁锢自己的因素,原来有这么多
  4. 西门子S7200方案 西门子S7200方案CPu型号LPC2136
  5. Filmage Screen,4K视频录制,视频剪辑软件
  6. Codis 3.0.1 安装使用文档(官方)
  7. 初中学历如何获取本科文凭?
  8. 红帽认证学习Day01:入门
  9. 如何解决PowerShell闪退问题
  10. 将excel表格数据导入到Matlab并生成折线图