java本身是值传递类型,值传递则是传递相应的值,比如一个方法,只是将值传递给了形式参数,若返回值为空,则最终输出值是不变;而引用传递则是传递的一个对象,其本质还是值传递,但是中间会有一个对象。我们可以通过案例来加深了解

值传递

由案例运行可以知道,输出的数值都是1,来分析其中的逻辑:第一个肯定是没有问题的 输出就是1重点是第二个,走过change方法后,只是把实际定义的int a = 1传递给了方法中的形式参数a,并没有返回一个参数,返回值为空。只是把a = 1传递给了a,然后方法走完一边后最后还是要回到主方法。

public class Demo04 {public static void main(String[] args) {int a = 1;System.out.println(a);Demo04.change(a);System.out.println(a);//可知两者都是1}public static void change(int a){a = 10;}

引用传递

由案例运行可以知道,输出的数值为null和李,分析其中的逻辑:前者没有问题,后者则是我们将person这样当前这个人传递给了change方法,而change方法改变的则是person.name这个值,最后修改的则是Person类里面的属性name,所以person.name一定可以修改成功的。

public class Demo05 {public static void main(String[] args) {//要使用这个类,需要定义类,实例化Person person = new Person();System.out.println(person.name); //nullDemo05.change(person);System.out.println(person.name); //李庆博}public static void change(Person person){ //这里并不是一个形式参数了,而是实例化的Person,是具体类//person是一个对象,他指向的是        Person person = new Person();一个具体的人,可以改变属性person.name = "李";}
}
//定义了一个Person类,有一个属性:name
class Person{String name;
}

该帮助案例取自狂神说Java。

值传递与引用传递案例对比相关推荐

  1. c++值传递,指针传递,引用传递以及指针与引用的区别

    值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影 ...

  2. 三分钟让你掌握JavaScript中值传递和引用传递的区别

    值传递:传递的是实际参数的一个副本.基本数据类型Undefined,Null,Boolean,Number.String都是值传递. 引用传递:传递的是实际参数的地址.引用数据类型Object,Arr ...

  3. 【重难点】【Java基础 04】值传递和引用传递、序列化和反序列化

    [重难点][Java基础 04]值传递和引用传递.序列化和反序列化 文章目录 [重难点][Java基础 04]值传递和引用传递.序列化和反序列化 一.值传递和引用传递 1.对比 二.序列化 1.基本概 ...

  4. 值传递,指针传递,引用传递

    而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~ 下文会通过例子详细说明哦 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角 ...

  5. javaScript中值传递和引用传递

    案例1 var str1 = "江西赣州于都县"; var number1 = 526.97; var b = true; var roles = ["建宁公主" ...

  6. C++ 值传递、指针传递、引用传递详解

    值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影 ...

  7. Java值传递和引用传递基础分析

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/77688416冷血之心的博客) 一年前我总结过一篇博客:Java基础 ...

  8. Java到底是值传递还是引用传递呢(清晰解读版)

    前言:当学到Java对象(引用)作为参数传递时,产生疑惑:Java是值传递还是引用传递?查阅资料后,总结了自己认为正确的解释. 什么是值传递? 将实参的内容拷贝一个副本给形参,当形参在方法中被修改时, ...

  9. C++ 值传递、引用传递、指针传递

    一.简介 参数传递的三种方式:值传递.引用传递.指针传递 二.举例如下 #if 1 值传递 引用传递 指针传递的区别void value_input(int a){cout << &quo ...

  10. Python值传递和引用传递(详细分析)

    目录 1. 形参与实参 2. Python的数据类型 3.Python变量及其赋值 3.1 不可变对象赋值 3.2 可变对象赋值 3.3 变量删除 3.4 变量赋值总结 4.Python函数的参数传递 ...

最新文章

  1. oracle查看表和索引碎片,Oracle 表空间索引存储与碎片检查
  2. S5P4418/S5P6818核心板EMMC已由原来的4.5版本升级到5.1版本
  3. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)
  4. Apache Camel 2.9发布–十大变化
  5. FreeEIM通讯软件平均需要5分钟才能
  6. Exception in thread “main“ java.lang.UnsupportedOperationException Arrays.asList中add报错
  7. 自动驾驶——多传感器融合的学习笔记
  8. CSS缩小窗口时,背景图出现右侧空白
  9. android6.0原生brower_Android Browser学习一 application的初始化
  10. Snagit 2019 for Mac(最好用的截图软件)v2019.1.11汉化版 MacOS 11 Big Sur支持
  11. 浅谈基于以太网的煤矿电力监控系统的设计与应用
  12. pytorch之transforms
  13. android移动开发软件安装,android studio 开发的安卓软件怎么安装到手机上
  14. 关于瞬时功率的无功功率和有功功率,在不同坐标系下的验证
  15. Docker复习07——Docker 网络
  16. python做性能测试框架_python常用web框架简单性能测试结果分享(包含dja
  17. JZOJ5006. A
  18. 经常掉头发吃什么好?吃什么食物可防脱发
  19. 纯CSS实现逼真翻页时钟
  20. 汉诺威工博会开幕 关注5G与人工智能前沿

热门文章

  1. NetCore路由的Endpoint模式
  2. 多媒体文件播放器汇总
  3. android 4.2界面,接近原生界面的4.2系统_手机Android频道-中关村在线
  4. 计算机仿真模拟在装配,模拟仿真企业_灵图互动信誉优良
  5. 模式先行打造区块链数字积分商城
  6. 黑马程序员——99乘法表
  7. macbook如何清除数据?Mac如何清理长时间的垃圾文件?
  8. 素数判定 Miller-Rabin 算法的实现 python
  9. ESP8266开发之旅 应用篇① 局域网应用 ——炫酷RGB彩灯
  10. WPF三层架构的搭建