参数传递(值传递与引用传递)

按值传递和按引用传递。按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。

1、对象是按引用传递的
2、Java 应用程序有且仅有的一种参数传递机制,即按值传递(引用传值传递的是原始值的内存地址,其实也是一种按值传递)
3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本
4、按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本

程序运行的结果为:xiaohua111 boy 0

原始对象内的成员变量name的值改变,原始String类型的变量a 和原始int类型的变量b值没有发生改变。

说明:

1.对象就是传引用
2.原始类型就是传值(boolean 、char、byte、short、int、long、float、double)
3.String类型因为没有提供自身修改的函数,每次操作都是新生成一个String对象,所以要特殊对待。可以认为是传值。

注:通过查资料发现String类型比较特殊,在Java中,String是一个引用类型,但是在作为参数传递的时候表现出来的却是基本类型的特性。
原因:首先我们看一下String类的实现,String类是通过private final char value[]数组实现的,从给的数组我们能够发现这个char[]数组使用了final关键字修饰,也就意味着,这个String类型的对象不可变,那么就有人要问了,既然不可变,那么我们如何修改字符串的值喃?例如:String str=”xiaotiaosi321″;如何将已创建的字符串对象修改成”xiaoshuaige321″,首先我想给你们扫除一个误区,String类创建的字符串对象是不可变的,也就是修改不了的,哪有人就要问了,为啥str=”xiaoshuaige321″;语句好使啊,首先str并不能完全代表String类创建的字符串对象,str只是一个字符串变量的引用,str=”xiaoshuaige321″;语句只是将str引用指向了”xiaoshuaige321″字符串对象,相当于str=new String(“xiaoshuaige321″); ,所以当String作为传参类型时,在方法中进行了字符串引用的重新复制时,只是将引用指向了新的对象,并没有对原始的对象进行修改,当方法执行完毕之后,作为虚拟机栈中局部变量都会被销毁,方法一些操作被还原,str引用重新指向”xiaotiaosi321”;,故执行后和执行前值没有改变。

Original: https://www.cnblogs.com/toSeeMyDream/p/12969318.html
Author: nickTimer
Title: 参数传递(值传递与引用传递)

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

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

(0)

大家都在看

  • LeetCode2.两数相加

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新…

    技术杂谈 2023年7月24日
    067
  • Html转换PDF(Java实用版)

    前言: 在工作当中,遇到了需要把HTML页面转化为PDF文档,有很多中实现,如下进行一个对比,大家个借鉴去进行使用 各实现对比表 于Windows平台进行测试: 此博客仅基于ITe…

    技术杂谈 2023年6月21日
    0147
  • 006 Linux 命令三剑客之-grep

    01 一起来认识 grep! Linux 命令三剑客,sed、grep、awk。 sed:擅长数据修改。 grep:擅长数据查找定位。 awk:擅长数据切片,数据格式化,功能最复杂…

    技术杂谈 2023年7月10日
    0106
  • Plugin caching_sha2_password could not be loaded: The specifiedmodule could not be found.

    MySQL新版默认使用caching_sha2_password作为身份验证插件,而旧版是使用mysql_native_password 当连接MySQL时报错”plu…

    技术杂谈 2023年5月31日
    099
  • 燕小千智能机器人让你告别传统人工客服运作模式

    ZKNOW 前台警报,某用户的提问因为不能及时得到响应,投诉企业的服务太差这种场景是不是经常出现? 人工客服是一对一,还是一对N?企业因此付出了巨大的人力成本,依然无法提高用户的满…

    技术杂谈 2023年7月23日
    099
  • LVS DR模式配置

    LVS+Keepalived配置: LVS使用两个网卡,网卡一对外提供服务(VIP也位于该网卡),网卡二连接后端RealServer(网卡二和RealServer位于同一网段) R…

    技术杂谈 2023年5月31日
    0114
  • Jquery获取selelct选中值

    javascript;gutter:true; 误区:</p> <pre><code> 一直以为jquery获取select中option被选中…

    技术杂谈 2023年5月31日
    0111
  • Random在高并发下的缺陷以及JUC对其的优化

    Random可以说是每个开发都知道,而且都用的很6的类,如果你说,你没有用过Random,也不知道Random是什么鬼,那么你也不会来到这个技术类型的社区,也看不到我的博客了。但并…

    技术杂谈 2023年7月25日
    0116
  • Python Django构建简易CMDB

    前言 本文仅是对以前写的小示例进行一次梳理和代码优化,由于本人菜鸟一枚,前端,系统运维知识只知皮毛,后端python也没有实际开发经验,在开发过程中也没有考虑堡垒机等一系列服务器的…

    技术杂谈 2023年7月11日
    090
  • blktrace 编译与使用【转】

    转自:https://www.cnblogs.com/linhaostudy/p/16182795.html 正文 在对ssd性能调优过程中,有使用到blktrace,本文对blk…

    技术杂谈 2023年5月30日
    0143
  • 什么是NTP服务器?ntp时间服务器京准带你从入门到了解

    什么是NTP服务器?ntp时间服务器京准带你从入门到了解 什么是NTP服务器?ntp时间服务器京准带你从入门到了解 京准电子科技官微——ahjzsz 1、NTP协议概述 NTP最早…

    技术杂谈 2023年6月21日
    0103
  • go-结构体内存布局

    方式一:通过 var 声明结构体 在 Go 语言中当一个变量被声明的时候,系统会自动初始化它的默认值,比如 int 被初始化为 0,指针为 nil。 var 声明同样也会为结构体类…

    技术杂谈 2023年7月11日
    075
  • [转帖]vagrant打造自己的开发环境~~我也来一发

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月30日
    0112
  • PyQt5 UI文件的使用方法

    ################################ PyQt5中文网 – PyQt5全套视频教程 # https://www.PyQt5.cn/ # 主讲: 村长 #…

    技术杂谈 2023年5月31日
    0100
  • c#常用快捷键

    相信.Net开发人员都想能够熟记各种VS快捷键以提高平时开发的效率,但苦于记忆能力太差而快捷键又特别多,特别烦,所以作罢! 下面我将简单介绍一下我记忆VS快捷键的一些方法,希望对大…

    技术杂谈 2023年7月24日
    0104
  • 语音开源库积累

    音频采集播放 OpenAL OpenAL 最初是由 Loki Software 所开发。是为了将 Windows 商业游戏移植到 Linux 上。Loki 倒闭以后,这个专案由自由…

    技术杂谈 2023年5月31日
    0118
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球