值传递与引用传递案例对比
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。
值传递与引用传递案例对比相关推荐
- c++值传递,指针传递,引用传递以及指针与引用的区别
值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影 ...
- 三分钟让你掌握JavaScript中值传递和引用传递的区别
值传递:传递的是实际参数的一个副本.基本数据类型Undefined,Null,Boolean,Number.String都是值传递. 引用传递:传递的是实际参数的地址.引用数据类型Object,Arr ...
- 【重难点】【Java基础 04】值传递和引用传递、序列化和反序列化
[重难点][Java基础 04]值传递和引用传递.序列化和反序列化 文章目录 [重难点][Java基础 04]值传递和引用传递.序列化和反序列化 一.值传递和引用传递 1.对比 二.序列化 1.基本概 ...
- 值传递,指针传递,引用传递
而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~ 下文会通过例子详细说明哦 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角 ...
- javaScript中值传递和引用传递
案例1 var str1 = "江西赣州于都县"; var number1 = 526.97; var b = true; var roles = ["建宁公主" ...
- C++ 值传递、指针传递、引用传递详解
值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影 ...
- Java值传递和引用传递基础分析
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/77688416冷血之心的博客) 一年前我总结过一篇博客:Java基础 ...
- Java到底是值传递还是引用传递呢(清晰解读版)
前言:当学到Java对象(引用)作为参数传递时,产生疑惑:Java是值传递还是引用传递?查阅资料后,总结了自己认为正确的解释. 什么是值传递? 将实参的内容拷贝一个副本给形参,当形参在方法中被修改时, ...
- C++ 值传递、引用传递、指针传递
一.简介 参数传递的三种方式:值传递.引用传递.指针传递 二.举例如下 #if 1 值传递 引用传递 指针传递的区别void value_input(int a){cout << &quo ...
- Python值传递和引用传递(详细分析)
目录 1. 形参与实参 2. Python的数据类型 3.Python变量及其赋值 3.1 不可变对象赋值 3.2 可变对象赋值 3.3 变量删除 3.4 变量赋值总结 4.Python函数的参数传递 ...
最新文章
- oracle查看表和索引碎片,Oracle 表空间索引存储与碎片检查
- S5P4418/S5P6818核心板EMMC已由原来的4.5版本升级到5.1版本
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)
- Apache Camel 2.9发布–十大变化
- FreeEIM通讯软件平均需要5分钟才能
- Exception in thread “main“ java.lang.UnsupportedOperationException Arrays.asList中add报错
- 自动驾驶——多传感器融合的学习笔记
- CSS缩小窗口时,背景图出现右侧空白
- android6.0原生brower_Android Browser学习一 application的初始化
- Snagit 2019 for Mac(最好用的截图软件)v2019.1.11汉化版 MacOS 11 Big Sur支持
- 浅谈基于以太网的煤矿电力监控系统的设计与应用
- pytorch之transforms
- android移动开发软件安装,android studio 开发的安卓软件怎么安装到手机上
- 关于瞬时功率的无功功率和有功功率,在不同坐标系下的验证
- Docker复习07——Docker 网络
- python做性能测试框架_python常用web框架简单性能测试结果分享(包含dja
- JZOJ5006. A
- 经常掉头发吃什么好?吃什么食物可防脱发
- 纯CSS实现逼真翻页时钟
- 汉诺威工博会开幕 关注5G与人工智能前沿