Java的值传递

1. 形参和实参

  • 实参(实际参数) :用于传递给函数/方法的参数,必须有确定的值。
  • 形参(形式参数) :用于定义函数/方法,接收实参,不需要有确定的值

2. 值传递和引用传递

  • 值传递 :方法接收的是实参值的拷贝,会创建副本。
  • 引用传递 :方法接收的直接是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参

3. Java的值传递

/*
   用于说明java是值传递
 */
public static void main(String[] args) {
    int a = 0;
    System.out.println(a);
    method1(a);
    System.out.println(a);
    User zhangsan = new User("zhangsan");
    User lisi = new User("lisi");
    method2(zhangsan, lisi);
    System.out.println("zhangsan:"+zhangsan.getName());
    System.out.println("lisi:"+lisi.getName());
}
//传递基本数据类型
public static void method1(int num){
    num = 1;
    System.out.println("num:"+num);
}
//传递引用数据类型
public static void method2(User person1, User person2){
    User person3 = person1;
    person1 = person2;
    person2 = person3;
    System.out.println("person1:"+person1.getName());
    System.out.println("person2:"+person2.getName());
}

运行结果:

0
num:1
0
person1:lisi
person2:zhangsan
zhangsan:zhangsan
lisi:lisi

4. 结论

1. 在传递基本数据类型时,明显时值传递,形参会创建副本,对形参的操作,都是在这个副本上进行的
2. 在传递引用数据类型时,我们会错误的认为是引用传递,但其实依旧是值传递,只不过传递的是实参的地址罢了
    在上面的例子中,形参只是把里面地址的值换了,并没有影响实参,可见是值传递;实参指向的还是那个空间地址

Original: https://www.cnblogs.com/suwuji/p/16524773.html
Author: 苏无及
Title: Java的值传递

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611541/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • redis 从安装到实现远程连接–centos7下

    Java 端配置 上面的配置完成后,我们可以创建一个普通的 JavaSE 工程来测试下了,Java 工程创建成功后,添加 Jedis 依赖,如下 然后我们可以通过如下一个简单的程序…

    数据库 2023年6月16日
    093
  • Python:如何只用十几行代码写一个程序?

    Python可以做的事情真的太多了,常见的网站开发,软件开发,爬虫,数据分析,人工智能,机器学习,量化投资,自动化办公,自动化运维,游戏开发,脚本制作,树莓派等等等等~ 今天咱们就…

    数据库 2023年6月14日
    097
  • 系统架构的11条原则

    基本原则 原则一:价值为王 解析: 价值为王的另一种说法叫做YAGNI。YAGNI 是 You aren’t gonna need it 的缩写。该原则的基本含义就是,…

    数据库 2023年6月6日
    0100
  • 01-MySQL主从复制

    问题导入 在之前项目的基础功能实现中,后台管理和移动端在进行数据访问的时候,都是直接操作数据库MySQL。此时的系统有且仅有一台MySQL服务器,则可能会出现如下问题 ①、读和写所…

    数据库 2023年5月24日
    088
  • Ajax请求下载文件的解决方案

    写这个博客之前我并不清楚 ajax请求是下载不了文件的 😅 这段时间在写一个自己的项目,用到了ajax下载文件,请求到了controller层并返回文件下载成功 但是浏览器就是没有…

    数据库 2023年6月9日
    0256
  • 23种设计模式之命令模式

    文章目录 概述 命令模式的优缺点 命令模式的应用场景 命令模式的结构和实现 * 模式的结构 模式的实现 总结 ; 概述 命令模式(Command Pattern)是一种数据驱动的设…

    数据库 2023年6月6日
    0137
  • 简单的2021年终总结

    当大家开开心心跨年的时候,我在补年终总结。 小时候恨不得时间过得快一点,现在不这么想了。 我的 2021年,都是平静、反复的一天天,没有出书、没有开源、没有跳槽、没有升官。没错,这…

    数据库 2023年6月6日
    089
  • 重返MySQL之MySQL基础

    重返MySQL之MySQL基础 本章详细介绍了,什么是数据库,常见的关系型数据库有哪些,什么是MySQL,及MySQL中DDL操作表,DML操作表记录。 1.0 数据库概述 1.1…

    数据库 2023年6月9日
    0146
  • 删除我的电脑设备和驱动器下迅雷云盘、百度网盘、WPS云盘、腾讯视频等标识

    使用 win+R键打开运行窗口,输入 regedit进入注册表编辑器,找到 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Current…

    数据库 2023年6月16日
    0260
  • jdbc-实现用户登录业务(解决sql注入问题)

    package com.cqust; import java.sql.*;import java.util.HashMap;import java.util.Map;import …

    数据库 2023年5月24日
    084
  • 2022-8-27 vue 第一天

    什么是vue? Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建…

    数据库 2023年6月14日
    084
  • Spring Boot + MyBatis 多模块项目搭建教程

    一、前言 1、开发工具及系统环境 * – IDE:IntelliJ IDEA 2020.2.2 – 系统环境:Windows 2、项目目录结构 * &#82…

    数据库 2023年6月6日
    0108
  • Indian Math tech

    https://www.youtube.com/watch?v=2j0nHEy5y18 本文来自博客园,作者:ukyo–BlackJesus,转载请注明原文链接:htt…

    数据库 2023年6月11日
    095
  • 对于Java循环中的For和For-each,哪个更快

    Which is Faster For Loop or For-each in Java 对于Java循环中的For和For-each,哪个更快 通过本文,您可以了解一些集合遍历技…

    数据库 2023年6月11日
    095
  • 2022蓝帽杯初赛wp(取证)

    战果 取证全解 misc出了1个 解其他题就像在坐牢 有那么一点思路,但不是完全有 手机取证_1 解压并打开阅读器,搜索627604C2-C586-48C1-AA16-FF33C3…

    数据库 2023年6月11日
    0112
  • 解决PHP undefined function mcrypt_encrypt()的报错问题

    今天迁移服务器代码遇到了一个未定义的错误 查找了相关资料后,发现是缺少php_mcrypt扩展 于是去下载扩展: https://windows.php.net/downloads…

    数据库 2023年6月14日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球