String面试题

news2024/10/6 20:39:57

String面试题

总结的很好:https://blog.csdn.net/qq_45950109/article/details/116992408

String特点

1.被final关键字修饰,不能被继承。实现Serializable,表示支持序列化。实现Comparable,表示可以排序。

2.底层是char数组和hash,jdk9将char数组改成byte数组节省空间

3.两种创建方式

//字面量的定义方式,这种方式会把"a"字符串存放在堆内存中的字符串常量池里面
String s1="a";

//创建对象的方式,首先在堆中创建一个对象,然后将"a"放在字符串常量池中,s2指向的是堆中"a"引用地址
String s2=new String("a");

System.out.println((s1 == s2)); // false

4.一旦创建不能修改,字符串常量池中不会有重复的字符串
a
在这里插入图片描述

b
在这里插入图片描述

c

在这里插入图片描述

字符串拼接操作

1.字符串常量拼接

//编译器在编译时将“+”号两端的字符串解析为常量 helloworld!
String s = "hello" + "world!";
// 反编译后
String s0 = "helloworld!";
System.out.println((s0 == s1)); // true

2.字符串变量拼接

字符串拼接的时候,只要其中有一个字符串是变量,结果就在存放在字符串常量池外的堆中。
在这里插入图片描述

/**
 * 编译期确定
 * 对于final修饰的变量,它在编译时被解析为常量值的一个本地拷贝存储到自己的常量池中或嵌入到它的字节码流中。
 * 所以此时的"a" + s1和"a" + "b"效果是一样的。故结果为true。
 */
String s0 = "ab"; 
final String s1 = "b"; 
String s2  = "a" + s1;  
System.out.println((s0 == s2)); // true

如果字符串拼接出现啦变量就会用StringBuilder的append方法拼接,最后掉toString方法会new一个新对象。

如果拼接的结果调用intern()方法,则主动将常量池中还没有的字符串对象放入池中,并返回此对象地址

new String()到底创建了几个对象

创建了3个对象

//编译器在编译时将“+”号两端的字符串解析为常量 helloworld!
String s = "hello" + "world!";
//对象1:"hello" + "world!"
//对象2:"world!"
//对象3:"helloworld!"

创建了两个对象

请添加图片描述

请添加图片描述

创建了6个对象
请添加图片描述

intern()方法的使用

String s1 = new String(“abc”).intern():

1.如果字符串常量池存在"abc",s1返回的地址是常量池中"abc"的引用地址

2.如果字符串常量池不存在在"abc",在堆内存中创建一个对象,然后在字符串常量池中存入"abc"对象的引用地址,此时字符串变量池中存的就是堆内存"abc"的引用地址。

情况1

请添加图片描述

情况2

请添加图片描述

对于程序中大量存在的字符串,尤其其中存在很多重复字符串时,使用intern()方法可以节省内存空间,也即是在创建字符串的时候后面跟上intern方法,即new String(“abc”).intern()

大的网站平台,需要内存中存储大量的字符串。比如社交网站,很多人都存储:北京市,海淀区等信息。这时候如果字符串都调用intern()方法,就会明显降低内存的大小。

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

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

相关文章

2023上半年软考报名到弘博创新错不了

软考是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。 系统集成…

ChatGPT为什么这么火爆?这是一篇从入门到玩坏的教程

什么是ChatGPT ChatGPT是由OpenAI开发的一个人工智能聊天机器人程序,于2022年11月推出。该程序使用基于GPT-3.5架构的大型语言模型並通过强化学习进行训练。 ChatGPT可以做什么? 你能想到的,它基本上都能和你聊上两句,比如写一…

功率放大器的增益是什么意思

电子工程师在日常实验测试中经常会应用到功率放大器,在介绍功率放大器产品的时候经常会看到增益的参数指标。下面安泰电子就来为大家介绍功率放大器增益是什么意思。 一、功率放大器增益的定义: 功率放大器作为一种电子电路,可以通过获取外部…

TCP连接的状态详解以及故障排查(六)

TCP通信中服务器处理客户端意外断开 如果TCP连接被对方正常关闭,也就是说,对方是正确地调用了closesocket(s)或者shutdown(s)的话,那么上面的Recv或Send调用就能马上返回,并且报错。这是由于close socket(s)或者shutdown(s)有个正…

SQL盲注加速方法总结

sql盲注加速方法总结 盲注分为布尔盲注和时间盲注,一般为加快测试速度都用工具或者脚本跑。但有时还是很慢,这时就需要采取另外办法。在参考了一些资料后经过实验总结可行方案如下。1.二分法加速、2.与运算加速、3.二进制延时注入加速、4.dnslog OOB外带…

[Java 进阶面试题] HashTable, HashMap, ConcurrentHashMap 之间的区别

大家一切顺利~ 文章目录前言HashTable, HashMap, ConcurrentHashMap 之间的区别前言 本篇主要内容如标题 HashTable, HashMap, ConcurrentHashMap 之间的区别 1.ConcurrentHashMap最大优化之处是相比于HashTable,ConcurrentHashMap大大缩小了所冲突的范围,把一把大锁切成了多…

全球爆火的ChatGPT,能否推动芯片市场增长?

“我所热爱的是我真实的生活,因为它包含了我所有的经历和感受,是我每一天都在体验和思考的。”这句非常有诗意的话,来自最近爆火的ChatGPT。 ChatGPT作为一款智能机器人,上知天文下知地理,不仅能写文案,还…

在github上上传文件

一、new新建一个仓库 填写/勾选下面三个部分 二、右键本地的要上传的文件,选择”Git Bash Here"进入。 进入git界面: 三、依次输入下面的命令 1、生成readme文件。 echo "# 在这里填入readme里面的内容" >> README.md2、建立…

(深度学习快速入门)第五章第一节1:GAN概述

获取pdf:密码7281 一:什么是生成模型 生成模型:在概率统计理论中,生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。为了训练一个生成模型我们首先要收集在特定领域下的大量数据&#xff…

Java开发学习(四十八)----MyBatisPlus删除语句之逻辑删除

1、逻辑删除 接下来要讲解是删除中比较重要的一个操作,逻辑删除,先来分析下问题: 这是一个员工和其所签的合同表,关系是一个员工可以签多个合同,是一个一(员工)对多(合同)的表 员工ID为1的张业绩,总共签了三个合同&a…

蓝桥杯刷题022——发现环(拓扑排序、DFS/BFS)

2017国赛 题目描述 小明的实验室有 N 台电脑,编号1⋯N。原本这 N 台电脑之间有 N−1 条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。 不过在最近一次维护网络时,管理员误操作使得某两台电…

centos7安装pdf2htmlEX

1 概述 需要把PDF 转成 html,使用的是 pdf2htmlEX 工具。 2 安装 2.1 安装基本工具和依赖库 yum install vim unzip wget git gcc* cmake poppler* libtool* glib* gio* freetype* pango* cairo* -y 2.2 安装fontforge 2.2.1 下载 wget https://github.com/coolwanglu/f…

koa2-JWT登录验证、上传图片、上传视频

文章目录什么是JWT?怎么使用?后端进行token处理,传递给前端Token的使用分成了两部分前端的处理处理token后端处理携带和不携带token的请求上传图片会持续更新上传视频会持续更新什么是JWT?怎么使用? JWT(JSON Web Token&#x…

K_A12_001 基于STM32等单片机采集火光火焰传感参数串口与OLED0.96双显示

K_A12_001 基于STM32等单片机采集火光火焰传感参数串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RC火光火焰模块1.2、STM32F103C8T6火光火焰模块五、基础知识学习与相…

Revit中添加水平仰视平面图及水平剖面

一、 Revit中如何添加水平仰视平面图 在Revit平面视图中视角是俯视视角,但是在一些特殊的情况下,我们可能需要创建仰视视角的平面视图,例如我们需要向上看天花板的灯具布置的时候。 1.下面讲一下如何在添加仰视平面视图的方法。如图1在模型中…

STM32CubeMX+FATFS+FREERTOS实现W25Q256虚拟U盘

一、软件硬件说明软件:STM32CubeMX V6.6.1 /KEIL5 V5.29硬件:正点原子阿波罗开发板,核心板STM32F429IGT6(176脚)使用USB_SLAVE接口连接电脑USB,从而读取W25Q256里的文件W25Q256:SPI5接口二、STM32CubeMX配置RCC配置SYS…

Lecture3 梯度下降(Gradient Descent)

目录 1 问题背景 2 批量梯度下降 (Batch Gradient Descent) 3 鞍点(Saddle Point) 3 随机梯度下降 (Stochastic Gradient Descent) 4 小批量梯度下降 (Mini-batch Gradient Descent) 1 问题背景 图1 上节课讲述的穷举法求最优权重值在Lecture2中,介绍了使用穷举…

python+django校园在线拍卖系统pycharm项目源码

登录页和注册页 管理员、用户和拍卖者都可以在此页面登录到该系统 拍卖者注册的页面,拍卖者如果没有账号可以点击注册进入到系统 开发语言:Python 框架:django Python版本:python3.7.7 数据库:mysql 数据库工具&…

在国内有几个CCIE考点?

笔试在VUE指定思科考试中心报考加考试; 实验考试在国内只有北京和香港两个考点。还有一些其他考点,下面让我们一起来看一下。 CCIE笔试考点 思科ccie认证的笔试考试地点都在Vue考试中心,Vue考试中心是思科官方授权的考试地点,在国内大部分城市都有分布 CCIE笔试报…

基于ssm的航空售票系统

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经从做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言&#xf…