String类

String类equals方法

String类compareTo方法

String类valueOf方法boolean参数

内存分析_字符串拼接只会在内存中开辟一个对象
内存分析_字符串new创建对象

内存分析_变量和字符串拼接字节码执行过程

String类内存分析

package com.cn;public class test01 {public static void main(String[] args) {String s1 = "a" + "b" + "c";String s2 = "ab" + "c";String s3 = "a" + "bc";String s4 = "abc";String s5 = "abc" + "";//上面的字符串,会进行编译器优化,直接合并成完整的字符串"abc",可以通过反编译(编译后的.class文件)验证//在常量池中,常量池的特点是第一次如果没有这个字符串,就放进去,如果有这个字符串,就直接从常量池中取//new关键字创建对象会在内存开辟两个空间,在堆中开辟一个对象,在字符串常量池开辟一个字符串String str = new String("abc");//变量和字符串拼接,编译时不知道变量是字符串,不会进行编译器优化,执行时才进行字符串拼接String a = "abc";String b = a + "def";System.out.println(b);//文件目录下:javap -c 文件名  解析字节码(.class文件)执行过程//String abc  将"abc"入栈/压栈给a//StringBuilder init(初始化)  创建一个StringBuilder对象sb,构造器内完成//sb.append(方法)   sb先拼"abc",再拼"def"//sb.toString      把StringBuilder对象sb转为String类型//打印语句}
}

StringBuilder类(源码-内存分析)

 内存分析—StringBuilder——new对象有参(String类)构造器

内存分析—StringBuilder对象sb用append(str2)

内存分析—StringBuilder对象sb用append数组扩容过程

package com.cn;public class test01 {public static void main(String[] args) {//继承自父类AbstractStringBuilder的两个属性char[] value、int countStringBuilder sb3 = new StringBuilder();//super(16)调用父类构造器,并传入参数16,即字符数组长度为16//表面调用StringBuilder的空构造器,实际底层是对value数组进行初始化,长度为16StringBuilder sb2 = new StringBuilder(3);//表面调用StringBuilder的有参构造器,传入参数int,实际底层是对value数组进行初始化,长度为intStringBuilder sb = new StringBuilder("abc");StringBuilder sb4 = sb.append("def");//在StringBuilder的对象的地址不变的情况下,想改变字符串是可能的,直接追加,底层改变的是sb对象的value字符数组System.out.println(sb == sb4);//true代表地址一致}
}

StringBuilder常用方法

package com.cn;public class test01 {public static void main(String[] args) {StringBuilder sb = new StringBuilder("nihao");//增sb.append("hellojava");System.out.println(sb);//删sb.delete(3, 6);//删除[3,6)位上的字符System.out.println(sb);sb.deleteCharAt(1);//删除指定位置System.out.println(sb);//改 --插入sb.insert(3, ",");System.out.println(sb);//改  --替换sb.replace(4, 6, "...");//替换[4,6)位为...System.out.println(sb);sb.setCharAt(3, 's');System.out.println(sb);//查for (int i = 0; i < sb.length(); i++) {System.out.println(sb.charAt(i) + "\t");}//截取String str = sb.substring(2, 4);//截取[2,4)位,返回一个新字符串,对原字符串无影响System.out.println(str);System.out.println(sb);}
}

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

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

相关文章

QT----简单的htttp服务器与客户端

HTTP协议学习 协议的相关学习可以参考这篇 csdn学习连接 总体流程如下 HTTP服务器 监听ip和端口,有连接时接收请求,发送回复 server.h #pragma once #include <QtWidgets/QMainWindow> #include "ui_httpServer.h" #include <QTcpServer> #include &l…

飞 算 JavaAI 解 析:有 了 它,麻 麻 再 也 不 用 担 心 我 不 会 写 代 码 了!

声 明&#xff1a;本 篇 博 客 为 测 评 体 验 非 广 告。 文 章 目 录一、产 品 简 介二、注 册 与 上 手方 法 一 - - - 从 IDEA 插 件 市 场 安 装方 法 二产 品 使 用三、产 品 体 验智 能 引 导 功 能理 解 需 求设 计 接 口表 结 构 设 计处 理 逻 辑生 成 源 码Java ch…

iOS混淆工具有哪些?在集成第三方 SDK 时的混淆策略与工具建议

许多 iOS 项目中&#xff0c;不可避免地会集成各种第三方 SDK&#xff0c;比如支付、统计、广告、社交登录等。这些 SDK 常常存在逆向被 Hook 或提取业务逻辑的风险&#xff0c;尤其是在流程敏感或要求合规的行业中。 当你无法对第三方源码进行控制或重新编译时&#xff0c;混淆…

【学习笔记之redis】删除缓存

有一串这个代码&#xff0c;staffEmailList这个key值里面的数据是错误的我需要删除它&#xff0c;把数据新的数据加载到redis缓存中。 public EmailAddressRespDTO getAllEmailAddress() { List<EmailAddressRespDTO> staffEmailList redisCache.getCacheList("s…

Redis 持久化机制浅析

1. 持久化机制的作用 Redis 是基于内存的数据结构数据库&#xff0c;虽然读写性能非常高&#xff0c;但所有数据默认保存在内存中。一旦服务器宕机、进程意外崩溃或容器重启&#xff0c;内存中的数据将全部丢失。这对于生产环境的可用性与可靠性是极其危险的。因此&#xff0c;…

使用MatterJs物理2D引擎实现重力和鼠标交互等功能,有点击事件(盒子堆叠效果)

使用MatterJs物理2D引擎实现重力和鼠标交互等功能&#xff0c;有点击事件&#xff08;盒子堆叠效果&#xff09; 效果图&#xff1a;直接上代码&#xff0c;我是用的是html&#xff0c;使用了MatterJs的cdn&#xff0c;直接复制到html文件中然后在浏览器打开即可 <!DOCTYPE …

如何玩转 Kubernetes K8S

在容器化时代&#xff0c;虽然Docker已经很强大了&#xff0c;但是在实际使用上还是有诸多不便&#xff0c;比如集群管理、资源调度、文件管理等等。 不过目前也涌现了很多解决方案&#xff0c;比如 Mesos、Swarm、Kubernetes 等等&#xff0c;其中谷歌开源的 Kubernetes就是其…

论文阅读笔记:Dataset Condensation with Gradient Matching

论文阅读笔记&#xff1a;Dataset Condensation with Gradient Matching1. 解决了什么问题&#xff1f;(Motivation)2. 关键方法与创新点 (Key Method & Innovation)2.1 核心思路的演进&#xff1a;从参数匹配到梯度匹配2.2 算法实现细节 (Implementation Details)3. 实验结…

网安学习no.22

一、基础系统信息命令&#xff08;简单入门&#xff09;uname作用&#xff1a;查看系统内核信息示例&#xff1a;uname -a&#xff08;显示完整内核版本、主机名、硬件架构等&#xff09;hostname作用&#xff1a;查看或设置主机名示例&#xff1a;hostname&#xff08;显示当前…

AJAX的引入

是的&#xff0c;AJAX 的一个主要特点就是通过 局部刷新 来实现与服务器的交互&#xff0c;而不需要重新加载整个页面。通过 AJAX&#xff0c;JavaScript 可以发送异步的 HTTP 请求&#xff0c;接收到响应数据后&#xff0c;更新页面的某个部分&#xff08;DOM&#xff09;。这…

SpringBoot 整合 Langchain4j AIService 深度使用详解

目录 一、前言 二、AIService 介绍 2.1 AiService 是什么 2.2 AiService 主要功能 2.3 AiService 使用步骤 三、AIService 操作实践 3.1 前置准备 3.1.1 获取apikey 3.1.2 导入核心依赖 3.1.3 添加配置文件 3.1.4 前置导入案例 3.2 AIService 案例操作详解 3.2.1 入…

基于FFmpeg和HLS的大文件分片传输方案

1&#xff1a;功能介绍 在视频这类大文件的传输过程中&#xff0c;经常会因为文件太大而受到网络带宽的限制。比如在实现视频预览功能时&#xff0c;常常会出现长时间加载、缓存卡顿的问题。我在项目中也遇到了类似的情况&#xff0c;于是采用了这个解决方案。 我们可以利用 FF…

体育场预定-下单-扣减库存一致性

流程1:通过库存服务缓存(缓存里面不仅有位图存储该时间点id的位置信息还有库存信息)的Redis获取令牌2:拿着令牌向订单服务同步下单如果有令牌就执行下面的Redis&#xff0c;如果没有就直接返回扣减Redis库存缓存扣减成功:继续扣减失败:返回前端重试整套流程3:1锁2查3更新生成订…

【计算机网络】王道考研笔记整理(3)数据链路层

目录 第三章 数据链路层 3.1 数据链路层的功能 3.2 组帧 3.2.1 字符计数法 3.2.2 字节填充法 3.2.3 零比特填充法 3.2.4 违规编码法 3.3 差错控制 3.3.1 奇偶校验码 3.3.2 CRC 校验码 3.3.3 海明校验码 3.4 可靠传输与流量控制 3.4.1 滑动窗口机制 3.4.2 停止 - 等待…

【后端】java 抽象类和接口的介绍和区别

文章目录一、抽象类&#xff08;Abstract Class&#xff09;二、接口&#xff08;Interface&#xff09;三、核心区别总结四、使用场景对比五、从设计思想理解最佳实践在Java中&#xff0c;抽象类&#xff08;Abstract Class&#xff09;和接口&#xff08;Interface&#xff0…

Apache OFBiz Scrum 组件命令注入漏洞

【严重】Apache OFBiz Scrum 组件命令注入漏洞 漏洞描述 Apache OFBiz 是一款知名的开源企业资源规划(ERP)解决方案&#xff0c;它提供了一整套开箱即用的企业级应用。Scrum 是 OFBiz 的一个插件&#xff0c;旨在为敏捷开发团队提供项目管理功能&#xff0c;其中包括与 SVN 版…

FastAPI入门:多个文件、后台任务、元数据和文档 URL

更大的应用 - 多个文件 假设文件结构如下&#xff1a;. ├── app # 「app」是一个 Python 包 │ ├── __init__.py # 这个文件使「app」成为一个 Python 包 │ ├── main.py # 「main」模块&#xff0c;例如 import app.main │ ├…

一个示例mcp agent功能的交互式框架

https://github.com/whym3/Deepseek_MCPDeepseek_MCP https://github.com/whym3/Deepseek_MCP Deepseek_MCP是一个演示mcp agent的框架&#xff0c;基于Flask开发&#xff0c;支持在浏览器采用交互方式与deepseek及agent对话。需要注册外部Deepseek api&#xff0c;不支持本地…

nodejs 基础知识-2

模块的暴露和导入 编写date.js module.exports.echo 导出的名称 module.exports.echo function echo(){ return Date.now(); } 编写 index.js const echoDate require(‘./date.js’) 在index引入 console.log(echoDate.echo()); //调用 开发一个自定义模块 exports.forma…

递归推理树(RR-Tree)系统:构建认知推理的骨架结构

探索基于三维评估的动态推理系统如何实现智能决策与知识演化引言 在复杂问题求解领域&#xff08;如战略决策或科学探索&#xff09;&#xff0c;人类思维的递归本质为AI系统设计提供了重要启发。我设计并实现的递归推理树&#xff08;Recursive Reasoning Tree, RR-Tree&#…