new String创建几个对象

news/2024/5/20 6:27:21/文章来源:https://blog.csdn.net/qq_63431773/article/details/132397915

在java17中 :

问题1:new String("abc")会产生多少个对象?

分两种情况:

情况1:

如果”abc”这个字符串常量不存在,则创建两个对象,分别是“abc”这个字符串常量,以及new String这个实例对象

情况2:

如果”abc“这个字符串常量存在,则只会创建一个对象,就是String这个对象。

分析:

new关键字根据已经加载的系统类Sting在堆内存里面去实例化一个字符串对象,然后在String对象的构造函数里面传递了一个”abc“的一个字符串,因为String里面的字符串成员变量是一个final修饰的,所以它是一个字符串常量,所以接下来JVM会去拿字面量"abc"去字符串常量池里面去试图找到对应它的一个String的对象引用,如果拿不到就会在堆内存里面去创建一个”abc“的String对象,并且把引用保存到字符串常量池里面,后续如果再有字面量”abc“的一个定义,只需要从常量池里面获取对应的引用就可以了,不需要再创建。 

问题2:String str =“ab”+ “c” 会创建几个对象 ? 

分析:

”ab“+”c”在编译阶段编译为abc字符串,被放到字符串常量池中。常量与常量的拼接,在编译阶段会优化。

所以会创建一个对象:abc

问题3:String abc ="a"+ new String("bc")会创建几个对象 ? 

 分析:

通过javap -v test.class反编译可知 

 会产生一个new String(”bc“)对象和一个bc字符串常量 

问题4:String str =new String(“a”) + new String(“b”) 会创建几个对象 ?

分析:

 通过javap -v test.class反编译可知

 会创建四个对象,一个 new String(“a”)、一个常量池的a、一个 new String(“b”)和一个常量池的b

 在java1.8中

问题1:new String("abc")会产生多少个对象?

与java17一致

问题2:String str =“ab”+ “c” 会创建几个对象 ? 

 与java17一致

问题3:String abc ="a"+ new String("bc")会创建几个对象 ? 

分析: 

 会产生一个StringBuilder对象、一个字符串常量a、一个string(”bc“)对象、一个bc字符串常量      深入剖析: StringBuilder 的 toString() 方法中有 new String(value, 0, count)、加上new String(“abc”)对象 ,总共4个对象

 问题4:String str =new String(“a”) + new String(“b”) 会创建几个对象 ?

分析:

 会产生一个StringBuilder对象、一个string(”a”)对象、一个a字符串常量、一个string(“b”)对象、一个b字符串常量、加上一个new String(“ab”)对象,总共6个对象

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

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

相关文章

C# 设置、获取程序,产品版本号

右键,程序属性。打开“程序集信息” 选择需要设置的版本信息。下面的代码,获取不同的设置内容。 string 其他 Assembly.GetExecutingAssembly().FullName; string 程序集版本 Assembly.GetExecutingAssembly().G…

从头预训练大模型实践经验

前言 如何从头训练一个基座大模型? 今天介绍一篇文章,其没有更多的理论依据,一切都是一些实践经验。Weights & Biases是一个强大的用于深度学习可视化的工具,可以实现对深度学习各项参数的可视化,本篇介绍的文章…

el-table根据容器大小自适应滚动条-修改滚动条样式

需求:父容器里有多个容器为上下级,之后浏览器在缩放的时候,上面容器高度改变了,所以el-table被挤压,如果el-table设置的是固定的高度,那么挤压后内容超出父容器,本文章就是解决这个问题 不自适…

pytorch 入门1-tensor 广播 view reshape

tensor 的四则运算broadcast import torch import numpy as np # 张量tensor 随机初始化 x torch.rand(4,3) print(x) y torch.randn(4,3) print(y)# 初始化全零 张量 a torch.zeros((4,4),dtypetorch.long) print(a) #初始化全一 张量 b torch.ones(4,4) print(b) c tor…

【MyBatis面试题(20道)】

文章目录 MyBatis 面试题(20道)基础1.说说什么是MyBatis?2.Hibernate和MyBatis有什么区别?3.MyBatis使用过程?生命周期?4.在mapper中如何传递多个参数?5.实体类属性名和表中字段名不一样&#x…

LeetCode863. 二叉树中所有距离为 K 的结点(相关话题:深度遍历,广度遍历)

题目描述 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 k 。 返回到目标结点 target 距离为 k 的所有结点的值的列表。 答案可以以 任何顺序 返回。 示例 1: 输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, k = 2 输出:[7,4,1] 解释…

5种做法实现table表格中的斜线表头效果(HTML+CSS+JS+Canvas+SVG)

table表格,这个东西大家肯定都不陌生,代码中我们时常都能碰到,那么给table加一个斜线的表头有时是很有必要的,但是到底该怎么实现这种效果呢? 我总结了以下几种方法: 1、最最最简单的做法 直接去找公司的…

c语言每日一练(10)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

【Linux】Centos安装 mariadb 并授权远程登陆

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

ubuntu 20.04 安装 高版本cuda 11.7 和 cudnn最新版

一、安装显卡驱动 参考另一篇文章:Ubuntu20.04安装Nvidia显卡驱动教程_ytusdc的博客-CSDN博客 二、安装CUDA 英伟达官网(最新版):CUDA Toolkit 12.2 Update 1 Downloads | NVIDIA Developer CUDA历史版本下载地址:C…

干货!一文告诉你SCRM和CRM有什么区别和联系?

在现代商业领域,我们经常听到两个缩写词,即"SCRM"和"CRM"。它们都与客户关系管理有关,但具体是什么意思?本文将用通俗易懂的方式解释这两个概念,以实例分析SCRM和CRM的功能并探讨它们之间的区别和…

【搭建WebDAV服务手机ES文件浏览器远程访问】

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址6. 使用固定地址测试连接 有时候我们想通过移动设备访问群晖NAS 中的文件,以满足特殊需求,我们在群辉中开启WebDav服务,结合cpolar内网工具生成的公网地址,通过移动客户端ES文件…

一种新型的4H-SiC超结共模场效应晶体管(UMOSFET),具有异质结二极管,以提高反向恢复特性

标题:A novel 4H-SiC super junction UMOSFET with heterojunction diode for enhanced reverse recovery characteristics 摘要 摘要—本文提出并通过数值模拟研究了一种新型的碳化硅(SiC)超结共模场效应晶体管(UMOSFET&#xf…

发布python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api,以及安卓接入案例代码

python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api,以及原生安卓接入案例代码案例 源码地址:keyxh/newsapi: python模仿2023年全国职业的移动应用开发赛项样式开发的开源的新闻api,以及安卓接入案例代码 (github.com) 目录 1.环境配…

WSL2和本地windows端口互通

众所周知 WSL 默认安装后,只允许windows访问 Windows Subsystem for Linux,而WSL是不能反之访问本地windows。我之前用vmware的思路认为是nat的网络模式,于是改成了桥接,结果wsl的桥接模式被我改的能访问本地,但是却不…

Jmeter 接口测试总结

背景介绍 对于 Android 项目来说,使用的是 Java 开发,网络请求接口的数量庞大且复杂,测试人员无法很直观的判断、得出网络请求是否存在问题。另一方面,为了验证请求接口是否能够在大负荷条件下,长时间、稳定、正常的运…

3、Spring之底层架构核心概念解析

BeanDefinition BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如: class,表示Bean类型scope,表示Bean作用域,单例或原型等lazyInit:表示Bean是否是懒加载initMethodName:表示Bean初始化时要执行的方法destroyMethodName:表示Be…

善于打仗的人,没有特别大的名气和勇功

善于打仗的人,没有特别大的勇功 【安志强趣讲《孙子兵法》第15讲】 【原文】 见胜不过众人之所知,非善之善者也;战胜而天下曰善,非善之善者也。 【趣讲白话】 预判胜负没有超出常人的见识,算不上高明中最高明的&#x…

简单认识Docker的资源控制

文章目录 一、CPU资源限制1.设置CPU使用率上限2.设置CPU资源占用比(设置多个容器才有效)3.设置容器与CPU绑核 二、内存资源限制三、对磁盘I/O配额的限制 一、CPU资源限制 1.设置CPU使用率上限 Linux通过CFS(Completely Fair Scheduler&#…

【C语言学习】二分法查找有序数组中的数

二分查找的基本原理 二分查找的基本逻辑就是每次找区间的中间数,然后与要查找的数进行比较,不断的缩小区间,最后区间中只剩一个数,即为要查找的数。如果不是,则没有该数。 二分查找只适用于有序数组 以数组中的数从左…