String 作为方法参数是值传递还是引用传递

        当将一个String作为方法参数传递时,实际上传递的是String对象的引用的副本,而不是String对象本身。即,在方法内部对String对象进行操作时,操作的是引用的副本,而不会影响原始的String对象。这也意味着,如果在方法内部重新赋值给这个参数,只会改变这个参数的引用,而不会对原始的String对象产生影响。  

执行结果:

String重新赋值会创建两个对象吗

当对`String`对象重新赋值时,是否会创建两个对象取决于赋值时的上下文。以下是两种情况的分析:

  1. 直接赋值:如果新赋值的字符串常量已经在字符串常量池中存在,那么赋值操作不会创建新的对象。在这种情况下,只有一个对象被引用,即常量池中的那个对象。

  2. 使用`new`关键字:当使用`new`关键字创建一个新的`String`对象时,无论常量池中是否存在该字符串的引用,都会在堆上创建一个新的对象。然后,这个新对象的引用被存储在字符串常量池中,并赋值给变量。因此,在这种情况下,会创建两个对象:一个在堆上,另一个在字符串常量池中。

综上所述,直接赋值可能只会创建0个或1个对象,而使用`new`关键字创建新对象时,会创建两个对象。

  • 当直接赋值时,可能创建0个或1个对象:

    • 如果常量池中已存在该字符串,则不创建新对象。
    • 如果常量池中不存在该字符串,则在堆上创建新对象,并将其引用存储在常量池中。
  • 当使用`new`关键字时,会创建两个对象:

    • 在堆上创建新字符串对象。
    • 将新对象的引用存储在字符串常量池中。

示例:

使用 `String a = new String("a")` 这个语句创建了两个对象。

具体来说,使用 `new String("a")` 创建了一个新的 `String` 对象,它存储了字符串 "a" 的值。因为字符串在Java中是一种特殊的对象类型,所以该语句会创建一个新的该对象类型的实例。另外,使用 `=` 进行赋值时,会将这个新创建的对象的引用(即内存中的地址)赋值给 `a` 变量,从而使得 `a` 变量引用了该对象。因此,这个语句总共创建了两个对象,一个是 `"a"` 对象,一个是 `a` 变量所引用的对象。

需要注意的是,如果调用 `String a = "a"` 这样的语句来创建 `String` 对象,并且在字符串常量池中已经有了一个值为 `"a"` 的对象,那么就只会创建一个 `"a"` 对象,并且将其引用赋给 `a` 变量。这是因为,Java编译器在遇到字符串字面量时,如果在字符串常量池中已经有了该字面量的对象,就直接返回该对象的引用,而不会再创建一个新的对象。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cubemx串口配置

1.时钟 2.引脚配置 3.重写printf代码 /* USER CODE BEGIN 1 */ int __io_putchar(int ch){HAL_UART_Transmit(&huart1,(uint8_t *) ch, 1,1000);return ch; } /* USER CODE END 1 */

05分布式事务之CAP理论和BASE理论

分布式事务 项目优化 在网站上加载课程详情信息时如果很慢(排除网速)会影响用户的体验性,为了提高响应速度需要将课程详情信息进行缓存并且将课程信息加入索引库方便全局搜索 Redis中的课程缓存信息是将课程发布表中的数据转为json进行存储Elasticsearch中的课程…

Mysql数据库:索引管理

目录 一、索引的概述 1、索引的概念 2、索引的作用 3、索引的副作用 4、创建索引的原则依据 5、索引优化 6、索引的分类 7、数据文件与索引文件 二、管理数据库索引 1、查询索引 2、创建索引 2.1 创建普通索引 2.2 创建唯一索引 2.3 创建主键索引 2.4 创建组合…

58、服务攻防——应用协议设备KibanaZabbix远控向日葵VNCTeamViwer

文章目录 vnc默认端口:5900 or 5902,hydra支持vnc破解。VNC有三种模式:使用vnc密码、windows密码、无密码。 teamviewer、向日葵都是使用之前爆过漏洞进行测试。 zabbix:监控系统,蓝队部署平台。zabbix页面如下&#…

(PAT乙级) 1084 外观数列 (C语言实现,不要使用strcat)

外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, ...它从不等于 1 的数字 d 开始,序列的第 n1 项是对第 n 项的描述。比如第 2 项表示第 1 项有 1 个 d,所以就是 d1;第 2 项是 1 个 d(对…

建立一个高效协作的团队从《团队章程》开始

《团队章程》 项目资源分为团队资源(人力)和实物资源。而项目资源管理的目的拿今天最流行的说法就是降本增效,那么建立一个高效协作的团队从《团队章程》开始,以某供应链团队的团队章程(简化)举例&#xf…

puppeteer使用示例云顶之弈官网

自己从0到1开发的,微信小程序【云顶宝藏】求求点个5星好评吧! 需求:拿到所有英雄的信息 思路:点击每个英雄,进入英雄详情页,拿信息,并返回,继续下一个英雄** 最终效果 本地环境 win…

如何搭建DolphinScheduler服务并结合内网穿透公网远程任务调度

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

C语言学习 四、选择与循环

4.1关系表达式与逻辑表达式 算术运算符的优先级高于关系运算符关系运算符的优先级高于逻辑与 和 逻辑或运算符相同优先级的运算符从左到右进行结合 【例】 表达式 5 > 3 && 8 < 4 - !0 的最终值为多少 4.2 if-else语句 4.2.1 if-else单分支语句 if判断条件&am…

力扣日记3.21【贪心算法篇】45. 跳跃游戏 II

力扣日记&#xff1a;【贪心算法篇】45. 跳跃游戏 II 日期&#xff1a;2024.3.21 参考&#xff1a;代码随想录、力扣 45. 跳跃游戏 II 题目描述 难度&#xff1a;中等 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转…

C语言例:设 int x; 则表达式 (x=4*5,x*5),x+25 的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int x,m;m ((x4*5,x*5),x25);printf("(x4*5,x*5),x25 %d\n",m);//x4*520//x*5100//x2545return 0; } 结果如下&#xff1a;

网络仿真3-NS2协议修改和移植

Ns2实现原理 OTcl与C关联 执行路径&#xff1a;Tcl->Otcl->C 返回路径&#xff1a;C->Otcl->Tcl NS2协议修改和移植 NS2中的各种网络协议在底层通过C实现&#xff0c;在网络仿真过程中最终通过调用底层C代码实现网络行为、算法、功能等各种仿真 NS2协议修改&…

牛客NC403 编辑距离为一【中等 模拟法 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/0b4b22ae020247ba8ac086674f1bd2bc 思路 注意&#xff1a;必须要新增一个&#xff0c;或者删除一个&#xff0c;或者替换一个&#xff0c;所以不能相等1.如果s和t相等&#xff0c;返回false,如果s和t长度差大于1…

【数据库系统】SQL和T-SQL

第四章 SQL 基本内容 系统结构、DDL、DML、视图、数据控制、嵌入式SQL SQL介绍 特点 一体化&#xff1b;面向集合操作&#xff1b;非过程化语言&#xff1b;可以单独写&#xff0c;也可以作为嵌入式语言&#xff08;JDBC&#xff09; 体系结构 数据库存储结构 逻辑存储结构 面…

在vscode中使用git-新手向

Git 应该是必学的版本同步工具&#xff0c;是代码管理的好帮手。 可是对新手来说上手还是有一丢丢门槛&#xff0c;结合 vscode 同步非常方便。 可实现可视化代码变化&#xff0c;提醒自己记录版本修改内容。非常好用。 在 VSCode 中将项目上传至 GitHub 私有仓库基本步骤 确保…

基于ssm电子竞技管理平台的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本电子竞技管理平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

Prometheus(四):VMware Vsphere监控及数据展示

目录 1 vmware exporter安装配置1.1 vmware exporter介绍1.2 安装 - 使用kubernetes部署1、下载2、修改配置文件3、执行安装4、查看 1.3 安装-使用docker的方式1.4 Prometheus配置1.5 Grafana配置&#xff08;模板页面还需要修改&#xff09; 总结 1 vmware exporter安装配置 …

cloudflare 应用例子几则

Cloudflare&#xff08;以下简称 CF&#xff09; 堪称互联网活菩萨&#xff0c;造就一大批高质量的互联网基础技术服务&#xff0c;更难得的是&#xff0c;几乎所有的服务都有对应的免费的套餐&#xff0c;而且出手大方&#xff0c;基本上有足够的容量或请求次数。 CDN CF 最…

MySQL的基本操作

目录 引言 一、SQL语句简介 &#xff08;一&#xff09;SQL通用语法 &#xff08;二&#xff09;SQL分类 &#xff08;三&#xff09;数据类型 1.数值类型 2.字符串类型 3.日期/时间类型 4.修饰符 二、登录mysql服务 三、SQL语句操作 &#xff08;一&#xff09;DD…

深度学习500问——Chapter04:经典网络解读(1)

文章目录 4.1 LeNet-5 4.1.1 模型介绍 4.1.2 模型结构 4.1.3 模型特性 4.2 AlexNet 4.2.1 模型介绍 4.2.2 模型结构 4.2.3 模型特性 4.3 ZFNet 4.3.1 模型介绍 4.3.2 模型结构 4.3.3 模型特性 4.4 Network in Network 4.4.1 模型介绍 4.4.2 模型结构 4.4.3 模型特性 4.1 LeNet-…