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…

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

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

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

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

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

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

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

导语 大家好&#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、做好外置数据库移植&…

【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…

【STM32本科毕业设计】基于STM32的多功能MP3播放器设计

目录 一. 概述二. 系统硬件设计2.1 整体设计思路2.2 硬件器件的选择2.2.1 MP3解码芯片选择 2.2.2 收音机芯片选择2.2.3 温度传感器选择2.2.4 彩灯驱动芯片选择2.2.5 音效处理芯片选择2.2.6 EEPROM芯片选择2.2.7 功率放大芯片选择2.2.8 电源芯片选择2.2.9 人机交互设备选择 2.3 …

Django学习第一天(如何创建和运行app)

前置知识&#xff1a; URL组成部分详解&#xff1a; 一个url由以下几部分组成&#xff1a; scheme&#xff1a;//host:port/path/?query-stringxxx#anchor scheme:代表的是访问的协议&#xff0c;一般为http或者ftp等 host&#xff1a;主机名&#xff0c;域名&#xff0c;…

Spring Security学习笔记(二)Spring Security认证和鉴权

前言&#xff1a;本系列博客基于Spring Boot 2.6.x依赖的Spring Security5.6.x版本 上一篇博客介绍了Spring Security的整体架构&#xff0c;本篇博客要讲的是Spring Security的认证和鉴权两个重要的机制。 UsernamePasswordAuthenticationFilter和BasicAuthenticationFilter是…

【JVM基础05】——组成-能不能解释一下方法区?

目录 1- 引言&#xff1a;方法区概述1-1 方法区是什么&#xff1f;(What)1-2 为什么用方法区&#xff1f;方法区的作用 (Why) 2- ⭐核心&#xff1a;详解方法区(How)2-1 能不能解释一下方法区&#xff1f;2-2 元空间内存溢出问题2-3 什么是常量池&#xff1f;2-4 运行时常量池 …

SAP PP学习笔记31 - 计划运行的步骤2 - Scheduling(日程计算),BOM Explosion(BOM展开)

上一章讲了计划运行的5大步骤中的前两步&#xff0c;计算净需求和计算批量大小。 SAP PP学习笔记30 - 计划运行的步骤1 - Net requirements calculation 计算净需求(主要讲了安全库存要素)&#xff0c;Lot-size calculation 计算批量大小-CSDN博客 本章继续讲计划运行的后面几…

360:从安全卫士到智能生活——一个科技巨头的成长之路

自2005年成立以来&#xff0c;360公司&#xff0c;全称北京奇虎科技有限公司&#xff0c;已经成为中国乃至全球科技领域的一股不可忽视的力量。从最初的互联网安全服务提供商&#xff0c;到如今涉足智能硬件、云计算、大数据、人工智能等领域的多元化科技公司&#xff0c;360的…

**卷积神经网络典型CNN**

LeNet&#xff1a;最早用于数字识别的CNN AlexNet&#xff1a;2012年ILSVRC比赛冠军&#xff0c;远超第二名的CNN&#xff0c;比LeNet更深&#xff0c;用多层小卷积叠加来替换单个的大卷积 ZF Net&#xff1a;2013ILSVRC冠军 GoogleNet&#xff1a;2014ILSVRC冠军 VGGNet&a…