Java:数据结构-再谈String类

字符串常量池

首先我们来思考这段代码,为什么运行结果一个是true,一个是false呢?

public class Test {public static void main(String[] args) {String s1="123";String s2="123";String s3=new String("555");String s4=new String("555");System.out.println(s1==s2);System.out.println(s3==s4);}
}

 

在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、 更节省内存,Java为8种基本数据类型和String类都提供了常量池。

常量池的存储方法

通过用new来创建String类的对象 

public class Test {public static void main(String[] args) {char[] ch =new char[]{'a','b','c'};String s1=new String(ch);String s2="abc";System.out.println(s1==s2);}

 

intern方法

intern 是一个native方法(Native方法指:底层使用C++实现的,看不到其实现的源代码),该方法的作用是手动将创建的String对象添加到常量池中。

public class Test {public static void main(String[] args) {char[] ch =new char[]{'a','b','c'};String s1=new String(ch);s1.intern();String s2="abc";System.out.println(s1==s2);}

 

 s1.intern();调用之后,会将s1对象的引用放入到常量池中,"abc" 在常量池中存在了,s2创建时直接用常量池中"abc"的引用,所以运行的结果为true。

希望能对大家有所帮助!!!!

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

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

相关文章

centos7,yum安装mongodb

yum安装mongodb 1.配置MongoDB的yum源2.安装Mongodb3.启动Mongodb4.配置远程访问5.设置mongo密码 1.配置MongoDB的yum源 1.创建yum源文件,输入命令: vim /etc/yum.repos.d/mongodb-org-5.0.repo然后在文件中输入以下内容并保存: [mongodb-…

关于软测面试的20个终极问题,春招软测人快来看..

1. 项目测试流程你是怎么开展的? 【参考回答】 首先,需求分析阶段,主要参与需求评审会议,阅读理解业务需求,分析需求点。 需求确定后,进入测试计划阶段,参考软件需求规格说明书及项目总体计划…

深度学习:encoder 详解

encoder 详解 为了提供一个更为深入和细致的解释关于编码器(encoder)的设计与应用,我们可以通过以下几个维度来展开,包括其在不同领域中的实现形式、其内部工作机制的具体操作、以及如何优化和调整以适应不同任务的需求。 1. 编…

风华高科签约实在RPA,引领粤港澳大湾区制造业数字化腾飞

近日,制造业单项冠军 “广东风华高新科技股份有限公司”(以下简称 “风华高科”,股票代码:000636.SZ)与实在智能达成合作。 为贯彻落实党中央、国务院决策部署和国务院国资委《国有企业数字化转型行动计划》要求,培育…

数据采集之selenium模拟登录

使用Cookijar完成模拟登录 本博文爬取实例为内部网站,请sduter使用本人账号替换*********(学号),***(姓名)进行登录 from selenium import webdriver from selenium.webdriver.common.by import By from…

快速查看一个文件夹占用的硬盘空间(重点linux系统命令)

要查看当前文件夹在硬盘上分配的空间大小,可以根据你使用的操作系统选择合适的方法。 在 Windows 中: 文件资源管理器: 打开文件资源管理器,定位到你想查看的文件夹。右键点击文件夹,选择“属性”。在弹出的窗口中&am…

Unity中IK动画与布偶死亡动画切换的实现

在Unity游戏开发中,Inverse Kinematics(IK)是创建逼真角色动画的强大工具。同时,能够在适当的时候切换到布偶物理状态来实现死亡动画等效果,可以极大地增强游戏的视觉体验。本文将详细介绍如何在Unity中利用IK实现常规…

关于vue如何监听route和state以及各自对应的实际场景

一、监听route 场景:监听浏览器地址栏分页参数的变化 // 注意 newPageNum和 oldPageNum是 string类型 $route.query.pageNum(newPageNum, oldPageNum) {if (newPageNum ! oldPageNum && newPageNum ! this.pageNum.toString()) {this.handleCurrentChange(p…

Windows换机华为擎云(银河麒麟V10+麒麟9000C CPU)后,使用selenium的程序怎么办(20241030)

原本的 seleniumChrome 已无法正常工作。chromedriver 报错:不支持 Linux/aarch64。 1、尝试Firefox、edge驱动。Firefox有一个geckodriver版本与Firefox版本的对照表,我看了一下,感觉他们是始终跟进新技术的。银河麒麟的很多库都是几年前的…

【大数据学习 | kafka高级部分】kafka的优化参数整理

1. 优化参数 参数解释buffer.memoryRecordAccumulator 缓冲区总大小,默认 32mbatch.size默认 16k,sender线程拉取数据大小linger.mssender线程拉取数据等待时长acks确认应答 0 1 -1max.in.flight.requests.per.connection没有ack返回时候可以发送几次数…

一篇Spring Boot 笔记

一、Spring Boot 简介 Spring Boot 是一个用于创建独立的、基于 Spring 的生产级应用程序的框架。它简化了 Spring 应用的初始搭建和开发过程,通过自动配置等功能,让开发者能够快速地构建应用,减少了大量的样板代码和复杂的配置。 二、核心特…

【MongoDB】MongoDB的Java API及Spring集成(Spring Data)

文章目录 Java APISpring 集成1. 添加依赖2. 配置 MongoDB3. 创建实体类4. 创建 Repository 接口5. 创建 Service 类6. 创建 Controller 类7. 启动 Spring Boot 应用8. 测试你的 API 更多相关内容可查看 Java API maven <dependency><groupId>org.mongodb</gr…

【人工智能】ChatGPT多模型感知态识别

目录 ChatGPT辅助细化知识增强&#xff01;一、研究背景二、模型结构和代码任务流程一&#xff1a;启发式生成 三、数据集介绍三、性能展示实现过程运行过程训练过程 ChatGPT辅助细化知识增强&#xff01; 多模态命名实体识别&#xff08;MNER&#xff09;最近引起了广泛关注。…

【嵌入式】STM32中的SPI通信

SPI是由摩托罗拉公司开发的一种通用数据总线&#xff0c;其中由四根通信线&#xff0c;支持总线挂载多设备&#xff08;一主多从&#xff09;&#xff0c;是一种同步全双工的协议。主要是实现主控芯片和外挂芯片之间的交流。这样可以使得STM32可以访问并控制各种外部芯片。本文…

map.computeIfAbsent() 与 map.putIfAbsent()的异同

map.computeIfAbsent() 和 map.putIfAbsent() 都是 java.util.Map 接口提供的方法&#xff0c;用于处理键值对的插入操作。它们在功能上有相似之处&#xff0c;但也有一些重要的区别。下面详细解释这两个方法的异同&#xff1a; map.putIfAbsent(K key, V value) 功能&#xf…

Python 常用数据容器(学习笔记)

文章目录 前言1、什么是数据容器&#xff1f;2、列表 (list)2.1 列表的定义和使用2.2 列表元素的访问2.3 列表的常用操作方法2.4 列表的循环遍历 3、元组 (tuple)3.1 元组的定义和使用3.2 元组的访问3.3 元组的常用操作方法3.4元组的循环遍历 4、字符串 (str)4.1 字符串的定义与…

【汽车租聘管理与推荐】Python+Django网页界面+推荐算法+管理系统网站

一、介绍 汽车租聘管理与推荐系统。本系统使用Python作为主要编程语言&#xff0c;前端采用HTML、CSS、BootStrap等技术搭建前端界面&#xff0c;后端采用Django框架处理用户的请求。创新点&#xff1a;使用协同过滤推荐算法实现对当前用户个性化推荐。 其主要功能如下&#…

快速入门CSS

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ 目录 CSS css的三种引入方式 css书写规范 选择器分类 标签选择器 class选择器 id选择器 复合选择器 通配符选择器 color颜色设置 border边框设置 width/heigth 内/外边距 C…

uniapp实现H5和微信小程序获取当前位置(腾讯地图)

之前的一个老项目&#xff0c;使用 uniapp 的 uni.getLocation 发现H5端定位不准确&#xff0c;比如余杭区会定位到临平区&#xff0c;根据官方文档初步判断是项目的uniapp的版本太低。 我选择的方式不是区更新uniapp的版本&#xff0c;是直接使用高德地图的api获取定位。 1.首…

探索Python网络请求新纪元:httpx库的崛起

文章目录 **探索Python网络请求新纪元&#xff1a;httpx库的崛起**第一部分&#xff1a;背景介绍第二部分&#xff1a;httpx库是什么&#xff1f;第三部分&#xff1a;如何安装httpx库&#xff1f;第四部分&#xff1a;简单的库函数使用方法1. 发送GET请求2. 发送POST请求3. 超…