class ClassA{ int value;//成员变量 } public class TestClassA{  public static void main(String args[]){  int value = 10;//局部变量 changeInt(value);  System.out.println(value);// 10  ClassA ca = new ClassA(); ca.value = 10;  changeObject(ca);   System.out.println(ca.value);//11 } public static void changeInt(int value){  value++; } public static void changeObject(ClassA ca){ ca.value++; } }

解释一:

1.Java只有值传递,地址传递也是传递的那个地址值,第一个value++之后是一个新地址,第18行传入value,在里面++之后成为一个新的value,

是一个局部变量,而打印语句打印的的是外面的那个value,所以是10;

2.第二个value++是地址传递,地址没有改变,而是把地址指向的值加了1,而外面打印语句仍是这个地址,因为里面的值++了,

所以打印出来是11;

解释二:

1.第一个++之后还是10是对的,【基本数据类型对象】被修改之后是一个新地址,不影响原来的【基本数据类型对象】,值传递,value++之后的value是个局部变量,和外面的value无关,value++改的是参数value,改了之后是个局部的value,和外面的value就是两个不同的了,外面的还是外面的,没有被修改,值传递的基本数据类型本身是不会被别人修改的

2.第二个++之后看起来改变了,是因为传入的是一个对象,这个对象里面的成员的值被改变了,但是这个对象本身地址没变,所以看起来像是引用传递,其实还是原来那个对象

关注我,私信关键字【资料】即可获取

免费最新的Java架构学习进阶资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatisNetty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)

java 值传递 引用传递_Java小白进阶之值传递-引用传递相关推荐

  1. java 引用 内存_Java内存分配及值、引用的传递

    关于堆栈的内容网上已经有很多资料了,这是我找的加上自己理解的一篇说明文: 一.内存区域类型 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制: 2. 栈:存放基本类型的变量数 ...

  2. java中的基本数据类型_Java中的基本数据类型和引用数据类型

    数据类型用于帮助确定变量可存放的一组值,以及可对这组特定值执行的操作.Java提供了在所有平台上都普遍支持的多种数据类型. 一.基本数据类型 byte:Java中最小的数据类型,在内存中占8位(bit ...

  3. java中integer的范围_java中integer取值范围是什么

    java中integer取值范围是什么 发布时间:2020-08-27 10:01:14 来源:亿速云 阅读:69 作者:小新 这篇文章给大家分享的是有关java中integer取值范围是什么的内容. ...

  4. Java基础学习笔记(二)_Java核心技术(进阶)

    本篇文章的学习资源来自Java学习视频教程:Java核心技术(进阶)_华东师范大学_中国大学MOOC(慕课) 本篇文章的学习笔记即是对Java核心技术课程的总结,也是对自己学习的总结 文章目录 Jav ...

  5. java关于包的叙述_Java中构造方法,包的引用,final,super等词的概括

    final修饰的类不允许被继承. 一个类不能既是final的,又是abstract的.因为abstract的主要目的是定义一种约定,让子类去实现这种约定,而final表示该类不能被继承,两者矛盾. f ...

  6. java父类引用子类_java多态,如何理解父类引用指向子类对象

    要理解多态性,首先要知道什么是"向上转型". 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求 ...

  7. java对日期进行排序_Java对日期时间值的集合进行排序

    我正在使用notes.jar lotus notes api来提取电子邮件的日期和时间.当我将它们添加到集合中时,如果像这样添加它们: Vector times = doc.getItemValueD ...

  8. java byte char io流_Java基础进阶 IO流之字节流

    1.IO流 1.1.概述 之前学习的File类它只能操作文件或文件夹,并不能去操作文件中的数据.真正保存数据的是文件,数据是在文件中.而File类它只是去对文件本身做操作,不能对文件中的数据进行操作. ...

  9. java int 传引用吗_Java的参数传递是「值传递」还是「引用传递」?

    关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题. 有人说Java中只有值传递,也有人说值传递和引用传递都是存在的,比较容易让人产生疑问. 关于值传递和引用传递其实需要分情况看待. ...

最新文章

  1. Vue给Element UI的el-popconfirm绑定按钮事件
  2. JavaScript使用技巧精萃
  3. 2020.12.07.记录
  4. signature=a8a3e788013f73439051c7287d7f5f0b,来用百度密语吧!!!
  5. 收藏长文|Java 代码精简之道
  6. Channel的几种状态
  7. Python 库安装问题-用pip安装pyHook3报错的两种常见问题和解决方法
  8. Java学习:多线程(2)
  9. OpenCV threshold 二值化
  10. AtCoder Grand Contest 016
  11. Idea 中使用Lombok 编译报找不到符号
  12. 物联网应用中的数字孪生——一种实现物联网数字孪生的全面的解决方案
  13. python平方和psum_P19 python sum()函数和.sum(axis=0)函数的使用
  14. 使用深度学习进行表检测、信息提取和构建
  15. android英文菜单,安卓recovery菜单中英文对照
  16. 中国人口总数、老龄人口占比及2040人口年龄结构变化预测
  17. axure网页预览_预览和导出HTML
  18. python+Django的web开发实例
  19. Error: socket hang up
  20. 外观模式--牛市股票还会亏钱

热门文章

  1. python接口测试之新手篇
  2. python实现以及所有排序大总结【转】
  3. 章节三、2-方法_演示实例
  4. Raspberry Config.txt 介绍
  5. 【API】短信通106端口验证短信的实现
  6. 解决mysql从windows迁移到centos出现乱码问题
  7. constellio——基于solr的开源搜索引擎系统源码研究(五)
  8. SQL导入Excel数据时,数字中混有字符将导致数据丢失的解决办法
  9. c# default 关键字
  10. 通向KDE4之路(十一):Amarok2开辟起步