7.27扣...

知识点补充:

1.StringBuilder 

StringBuilder 类在 Java 中是一个可变字符序列。与 String 类不同,StringBuilder 可以在创建之后被修改。这意味着你可以向 StringBuilder 对象追加、插入或删除字符,而不需要创建新的对象(辅助数组=0!)。这种特性使得 StringBuilder 在处理大量字符串连接操作时比直接使用 String 类更加高效,因为 String 类是不可变的,每次修改都会生成一个新的字符串对象,这可能会导致大量的内存浪费和性能下降。

主要特点

  • 可变性StringBuilder 可以在创建后修改其内容。
  • 线程不安全:与 StringBuffer 相比,StringBuilder 不是线程安全的。如果你在多线程环境下使用 StringBuilder,并且多个线程可能会同时修改它,那么你需要自行同步对它的访问。
  • 性能:由于 StringBuilder 是可变的,它避免了在字符串连接时创建大量中间对象,从而提高了性能。

常用方法

  • append(String str):将指定的字符串追加到此字符序列。
  • insert(int offset, String str):将字符串插入此字符序列的指定位置。
  • delete(int start, int end):移除此序列的子字符串中的字符。
  • length():返回此序列的当前长度。
  • toString():返回用此序列表示的字符串。

示例

public class StringBuilderExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
// 追加字符串
sb.append("Hello, ");//0-6位被占据
sb.append("World!");
// 插入字符串
sb.insert(7, "Java ");
// 获取字符串
String result = sb.toString();
// 输出结果
System.out.println(result); // 输出: Hello, Java World!
}
}

2.charAt()

在Java中,charAt()方法是String类的一个方法,用于获取字符串中指定索引位置的字符。索引值从0开始,即字符串的第一个字符位于索引0处,第二个字符位于索引1处,依此类推。

方法签名

public char charAt(int index)
  • 参数index - 所需字符的索引。
  • 返回值:指定索引处的字符。如果索引超出范围(小于0或大于等于字符串的长度),则抛出StringIndexOutOfBoundsException异常。

示例

public class Main {
public static void main(String[] args) {
String str = "Hello, World!";
// 获取索引为7的字符,即'W'
char ch = str.charAt(7);
System.out.println("The character at index 7 is: " + ch);
// 尝试获取一个超出范围的索引,这将导致StringIndexOutOfBoundsException
// char outOfBoundsChar = str.charAt(100); // 这行代码会抛出异常
}
}

注意

  • 使用charAt()方法时,确保索引值在字符串的有效范围内,以避免StringIndexOutOfBoundsException异常。
  • 如果你需要经常根据索引访问字符串中的字符,并且担心性能问题(尽管在现代JVM中,这种担忧通常是多余的),那么可以考虑使用char[]数组,通过toCharArray()方法将字符串转换为字符数组。但是,请记住,字符串在Java中是不可变的,因此每次修改字符数组时,都需要将修改后的数组转换回字符串(如果需要的话)。

代码:

package CharacterString;
public class ReverWords {public static void main(String[] args) {/*不使用Java内置方法实现1.去除首尾以及中间多余空格2.反转整个字符串3.反转各个单词*/}public  String reverseWords(String s) {// System.out.println("ReverseWords.reverseWords2() called with: s = [" + s + "]");// 1.去除首尾以及中间多余空格StringBuilder sb = removeSpace(s);// 2.反转整个字符串reverseString(sb, 0, sb.length() - 1);// 3.反转各个单词reverseEachWord(sb);return sb.toString();}private StringBuilder removeSpace(String s) {System.out.println("初始:ReverseWords.removeSpace() called with: s = [" + s + "]");int start = 0;int end = s.length()-1 ;System.out.println(s.length());while (start <= end && s.charAt(start) == ' ') {start++;}// 去除尾随空格while (end >= start && s.charAt(end) == ' ') {end--;}StringBuilder sb = new StringBuilder();boolean flag =false;for (int i = start; i <=end; i++) {char c =s.charAt(i);//获取start的字符if (c!=' '|| !flag){sb.append(c);flag=c==' ';//允许字符之间只有一个连续的空格;当添加一个空格后c==' '位true,将flag置true,下次循环若c还是空格则不会发生添加;}}System.out.println("完成:ReverseWords.removeSpace returned: sb = [" + sb + "]");return sb;}public void reverseString(StringBuilder sb, int start, int end) {System.out.println("初始:ReverseWords.reverseString() called with: sb = [" + sb + "], start = [" + start + "], end = [" + end + "]");while (start < end) {char temp = sb.charAt(start);sb.setCharAt(start, sb.charAt(end));sb.setCharAt(end, temp);start++;end--;}System.out.println("完成:ReverseWords.reverseString returned: sb = [" + sb + "]");}private void reverseEachWord(StringBuilder sb) {//按空格拆分并反转单个单词int start = 0;int end = 1;int n = sb.length();while (start < n) {while (end < n && sb.charAt(end) != ' ') {end++;}reverseString(sb, start, end - 1);start = end + 1;end = start + 1;}}
}

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

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

相关文章

企业公户验证API如何使用JAVA、Python、PHP语言进行应用

在纷繁复杂的金融与商业领域&#xff0c;确保每笔交易的安全与合规是至关重要的。而企业公户验证API&#xff0c;正是这样一位默默守护的数字卫士&#xff0c;它通过智能化的手段&#xff0c;简化了企业对公账户验证流程&#xff0c;让繁琐的审核变得快捷且可靠。 什么是企业公…

chrome浏览器驱动(所有版本)

chrome浏览器驱动 114之前版本 https://chromedriver.storage.googleapis.com/index.html 125以后 125以后版本下载链接在此&#xff0c;只有后面status是绿色对勾的才可以下载&#xff0c;驱动大版本一致就可以使用&#xff0c;不需版本号一模一样&#xff1b;下载所需版本只…

语言转文字

因为工作原因需要将语音转化为文字&#xff0c;经常搜索终于找到一个免费的好用工具&#xff0c;记录下使用方法 安装Whisper 搜索Colaboratory 右上方链接服务 执行 !pip install githttps://github.com/openai/whisper.git !sudo apt update && sudo apt install f…

在appium中,如何通过匹配图片来进行断言?

在Appium中进行图片匹配断言&#xff0c;可以使用OpenCV来实现。以下是使用Appium和OpenCV进行图片匹配断言的示例代码。 首先&#xff0c;需要确保安装了必要的库&#xff1a; pip install opencv-python-headless pip install opencv-python pip install numpy然后&#xf…

【区块链+绿色低碳】绿色电力分布式身份管理系统 | FISCO BCOS应用案例

目前&#xff0c;绿色电力场景在身份管理方面存在一些痛点&#xff0c;如&#xff1a;绿色电力交易场景中&#xff0c;主体地理位置分散&#xff0c;主体类型&#xff08;人、机、 物&#xff09;差异较大&#xff0c;主体身份认证和管理方式要求差异较大&#xff1b;在着力发展…

高性能 Java 本地缓存 Caffeine 框架介绍及在 SpringBoot 中的使用

在现代应用程序中&#xff0c;缓存是一种重要的性能优化技术&#xff0c;它可以显著减少数据访问延迟&#xff0c;降低服务器负载&#xff0c;提高系统的响应速度。特别是在高并发的场景下&#xff0c;合理地使用缓存能够有效提升系统的稳定性和效率。 Caffeine 是一个高性能的…

《程序猿入职必会(4) · Vue 完成 CURD 案例 》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

Eclipse的一些使用

出错的原因: eclipse中&#xff0c;当声明了变量&#xff0c;没有进行初始化&#xff0c;然后在方法中引用该变量的时候&#xff0c;就会报出如下错误&#xff1a; The local variable XXX may not have been initialized意思是该变量没有进行初始化&#xff0c;解决这个错误就…

【C++刷题】优选算法——队列+宽搜

N 叉树的层序遍历 vector<vector<int>> levelOrder(Node* root) {vector<vector<int>> ret;if (root nullptr) return ret;queue<Node*> q;q.push(root);ret.push_back({root->val});int size 1;while (!q.empty()) {vector<int> v…

【机器学习】Jupyter Notebook如何使用之基本步骤和进阶操作

引言 Jupyter Notebook 是一个交互式计算环境&#xff0c;它允许创建包含代码、文本和可视化内容的文档 文章目录 引言一、基本步骤1.1 启动 Jupyter Notebook1.2 使用 Jupyter Notebook 仪表板1.3 在笔记本中工作1.4 常用快捷键1.5 导出和分享笔记本 二、进阶用法2.1 组织笔…

CSS性能优化:从加载速度到渲染效率的全方位提升

在快节奏的互联网环境中&#xff0c;网页的加载速度和渲染效率直接关系到用户体验和搜索引擎排名。CSS作为网页样式的主要描述语言&#xff0c;其性能优化同样不容忽视。本文将介绍一系列CSS性能优化的策略&#xff0c;帮助开发者从加载速度到渲染效率实现全方位的提升。 1. 压…

从零开始学习网络安全渗透测试之基础入门篇——(二)Web架构前后端分离站Docker容器站OSS存储负载均衡CDN加速反向代理WAF防护

Web架构 Web架构是指构建和管理Web应用程序的方法和模式。随着技术的发展&#xff0c;Web架构也在不断演进。当前&#xff0c;最常用的Web架构包括以下几种&#xff1a; 单页面应用&#xff08;SPA&#xff09;&#xff1a; 特点&#xff1a;所有用户界面逻辑和数据处理都包含…

vscode container

附加到已有容器 终端进程“/sbin/nologin”启动失败(退出代码: 1)。 原因是因为默认vscode container 使用default 这个用户进行登陆。而这个default 是使用shell 的&#xff08;在/etc/passwd中配置&#xff09;。我们要修改vscode 行为&#xff0c;添加默认的bash 终端启动…

劝你不要上自动化立体库,非要上,砸锅了吧

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 在当今这个科技日新月异的时代&#xff0c;自动化立体库作为仓储物流领域的佼佼者&#xff0c;以其高效、精准、节省人力的优势&#xff0c;吸引…

Windows下帆软BI(finebi)单机部署移植(Tomcat)攻略

一、基础环境 操作系统&#xff1a;Windows 10 64bit 帆软BI 版本&#xff1a;V9.0/V10.0 HTTP工具&#xff1a;Tomcat 外置数据库&#xff1a;Oracle 11g 实验内容&#xff1a;将已经部署好的帆软BI从一台电脑移植到另一台电脑 二、前期准备 1、做好外置数据库移植&…

spring —— IoC 容器(一)

IoC 不是一种技术&#xff0c;而是一种设计思想&#xff0c;旨在降低代码之间的耦合性。Spring 通过 IoC 容器管理所有 Java 对象的实例化和初始化&#xff0c;控制对象与对象之间的依赖关系。 一、基于 XML 管理 bean &#xff08;一&#xff09;通过 XML 获取 bean public…

【Three.js基础学习】17.imported-models

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 课程回顾&#xff1a; 如何在three.js 中引入不同的模型&#xff1f; 1. 格式 &#xff08;不同的格式&#xff09; https://en.wikipedia.org/wiki/List_of_file_form…

杭州东网约车管理再出行方面取得的显著成效

随着科技的飞速发展&#xff0c;网约车已成为人们日常出行的重要选择。在杭州这座美丽的城市&#xff0c;网约车服务更是如雨后春笋般蓬勃发展。特别是杭州东站&#xff0c;作为杭州的重要交通枢纽&#xff0c;网约车管理显得尤为重要。近日&#xff0c;沧穹科技郑重宣告已助力…

达梦数据库系列—33.日志总结

目录 1、SQL日志 SQL 日志开启 SQL日志分析 2、Redo日志 3、归档日志 联机配置归档 手动配置归档 归档信息的查看 清理归档日志 4、闪回 查看闪回功能状态 开启闪回 闪回查询 5、其他事件日志 数据库实例日志 DMAP进程日志 数据库备份日志 dmwatcher日志 dm…

[Python][字典]详细讲解

目录 0.什么是字典&#xff1f;1.创建字典2.查找key3.新增/修改元素4.删除元素5.遍历字典元素6.取出所有 key 和 value7.合法的key类型 0.什么是字典&#xff1f; 字典是一种存储键值对(K-V)的结构 但是key不能重复 以C/C的视角看&#xff0c;就是map注意&#xff1a; 一个字典…