StringBuffer的append方法的注意事项(JAVA)

StringBuilder 导致堆内存溢出 Java heap space /GC overhead limit exceeded 现在遇到的问题是在一个大量数据需要重复拼接,我遇到的是word文档需要一直拼接2000多页本地可以正常运行,但是发布到服务器后就会报。将jvm的参数调大(我就是这个方法解决的)(我1048m没好用,直接上到2048m好用了)的时候,扩充内存使得 StringBuilder 的长度超过了上限触发。,查看后发现 StringBuilder 实际能使用的大小和 JVM。有时候没有到达上限,由于JVM堆空间太小,也会触发OOM。提前序列化部分结果,但是效率很低。重新计算最大所需空间,增加。 阅读详情
 
关于StringBuffer对象的append方法介绍,在Ivor Horton所著的《Java 2 入门经典(JDK 5)》(英文名:Beginning Java 2,JDK 5 Edition)中第4章数组和字符串讲解中,第4.4小节(向StringBuffer对象增加其他内容)介绍了用append()方法追加子串的功能。原文提供例子如下:
    StringBuffer buf=new StringBuffer("Hard ");
    String aString = "Waxworks";
    buf.append(aString,3,4);
原文说明:这个操作将aString的从索引位置3开始的由四个字符组成的子串追加到StringBuffer对象buf中。然后buf对象就会包含字符 串"Hard work"。
 
请注意,这个代码的实际运行结果是: buf对象包含的字符串为"Hard w"。
根据运行结果分析,StringBuffer对象的append()方法的参数,如果是String类型,那么,后面取子串的操作实际是从索引3开始,取值到索引4之前的串。如果append的语句改成 buf.append(aString,3,3); ,那么没有添加aString的子串,即 buf包含的字符实际还是"Hard "。如果此语句再改成 buf.append(aString3,2); ,那么系统会抛出"IndexOutOfBoundsException"的异常!
 
但是,如果append()的参数是字符数组(char[]),那么结果就如原文所述,buf将包含串"Hard work". 代码如下:
    StringBuffer buf=new StringBuffer("Hard ");
    char[] text ={'W','a','x','w','o','r','k','s'};
    buf.append(text ,3,4);   // buf包含串"Hard work" 
Java——字符串类实验 【任务一】: 实验要求: 能够根据业务的要求设计和定义类;能够根据业务的要求提取出和业务相关的属性和方法;能够使用定义的属性和 方法完成相应的业务要求;能够使用对象和对象之间的关系完成业务要求;能够将实际的问题描述转换成 Java程序。 实验任务:编写一个 Java 程序,将用户输入的句子当中每一个单词的第一个字母大写, 而单词中的其余字母小写。 要求: 1. 创建类 CaseConv 阅读详情

相关推荐

滚雪球学Java(49):如何使用StringBuilder类在Java中高效地处理字符串?

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!

**My Coding Family** 647

java内存string 溢出_java执行字符串替换时内存溢出是什么原因

Download.java:244行的代码:text=text.replaceAll("","");出错信息:Exceptioninthread"Thread-1"java.lang.OutOfMemoryError:Javaheapspaceatjava.ut...Download.java:244行的代码:text=text.replaceAll("","");出错信息:Exception i...

weixin_36429576的博客 649

从零开始:使用Mask2Former训练你的专属图像分割数据集

本文详细介绍了如何使用Mask2Former训练自定义图像分割数据集,从环境配置、数据集准备到模型训练与优化。通过实战技巧和问题排查指南,帮助开发者高效完成从零开始的图像分割任务,特别适合需要处理自定义数据集的AI研究人员和工程师。

weixin_30566063的博客 645

stringbuffer.tostring引发的 Java heap space

今天在测试“生成报告“功能时,出现了这个问题,java抛出java.lang.OutOfMemoryError: Java heap space: 由于开发使用的tomcat是统一配置的,而且其他地方的文件生成功能正常,所以排除jvm配置的问题,根据java日志,发现还是代码问题 StringBuffer buf=new StringBuffer(); FileOutputSt...

diandou4234的博客 1493

1.47寸ST7789V3彩屏硬件设计与驱动调试指南

TFT LCD是一种基于薄膜晶体管阵列控制像素明暗的主动式显示技术,其核心依赖于专用驱动IC(如ST7789V3)完成时序生成、GRAM管理与伽马校正。该类小尺寸彩色显示屏广泛应用于嵌入式HMI、IoT终端与可穿戴设备,具备高PPI、低功耗和SPI接口易集成等工程优势。理解RGB565数据格式、SPI Mode 0通信时序及关键寄存器(如0x36方向控制、0x3A像素格式、0x2A/0x2B地址窗口)是实现稳定显示的基础;而正确处理电源设计(严禁5V直供)、复位时序与背光PWM调光,则直接决定系统可靠性与能

weixin_30995917的博客 166

【科研导航】【计算机视觉与图像处理】从顶刊到潜力股:跨学科(电子/电气/信息)SCI期刊投稿全景图

本文全面解析了计算机视觉与图像处理领域的SCI期刊投稿策略,涵盖从顶刊到潜力股的各类期刊特点。重点介绍了IEEE Transactions系列、Elsevier旗舰期刊以及二区优质期刊的审稿偏好和投稿技巧,特别适合电子/电气/信息交叉学科的研究者。文章还提供了三区、四区期刊的实用投稿建议,帮助科研新手快速找到适合的发表平台。

weixin_30897233的博客 83

java字符串拼接_我不建议在for循环中使用"+"进行字符串拼接

阅读本文约需要5分钟大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。昨天给给大家分享了Java性能优化的十几个细节。今天来跟大家分享一下平时写代码中的for循环细节问题。1. 字符串拼接字符串,是 Java 中最常用的一个数据类型了。字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。我们都知道,Strin...

weixin_39633089的博客 5658

Cursor Pro版保姆级开通教程:绕过7天试用,支付宝一步搞定(附地区报错解决方案)

本文详细介绍了Cursor Pro版的订阅流程,包括支付宝支付步骤和解决区域报错的实用方案。针对开发者常见的网络问题和云服务器配置需求,提供了从本地环境调整到云端部署的完整指南,帮助用户高效解锁Pro版的代码补全、私有代码库等核心功能。

weixin_28710999的博客 2105

(JAVA):字符串的拼接插入-----StringBuffer类的常见API

前言: 1、StringBuffer类的初始化 注意: StringBuffer在字符串操作上克服了String拼接会产生多个对象的问题。它可以以一个字符串作为参数进行初始化。 常见的三种初始化: 第一种: StringBuffer str1 = new StringBuffer(); //无参构造函数初始化 第二种: StringBuffer str1 = new StringBuffer("ting"); //使用字符串对象进行初始化 第三种: ...

yzh2776680982的博客 3070

Openwifi 开源项目解读(一)

Openwifi wifi 80211 无线网卡 基带 FPGA linux 驱动 开源

2万+

Android15音频进阶之4种调试线程死锁利器(八十九)

本篇目的:Android15音频进阶之4种调试线程死锁利器对于开发者来说,最令人头疼的,莫过于多线程交互出问题的时候,我们应该从哪里找突破口呢?下面来介绍一下调试Android音频中线程死锁的四种方案线程死锁是并发编程中常见的问题之一,它指的是在多个线程竞争资源的过程中,由于相互等待对方持有的资源而无法继续执行,从而导致所有线程都无法向前推进的现象。死锁不仅会导致系统性能严重下降,甚至可能导致整个系统崩溃。线程死锁的产生有四个必要条件:互斥条件:资源不能被多个线程共同使用,只能由一个线程独占。

Android系统攻城狮 1997

StringBuilder 和 append() 方法

多次拼接会产生大量中间对象,浪费内存和 GC 时间。,用于高效地拼接、修改字符串,而。是其最核心的方法之一。是 Java 提供的。

m0_45322619的博客 1157

华为MetaERP的交易计税模块(即“税务引擎”)在设计上确实受到Oracle E-Business Tax(EBTax)等国际先进税务架构理念的影响,但结合了华为自身全球化运营、多准则合规、高并发处

华为MetaERP税务引擎在借鉴Oracle EBTax三层架构基础上,创新升级为五层智能税务架构,实现从"税码驱动"到"场景+规则+AI驱动"的转变。该模块采用云原生微服务架构,支持全球190+国家税务规则动态加载,具备实时计税、多准则并行处理、AI风险预警等核心能力,深度适配金税工程等国内合规要求。通过税务数字孪生、RPA机器人等创新,形成自主可控的智能税务中枢,为跨国企业提供全栈国产化税务解决方案,重新定义ERP税务管理范式。

金牌架构师 114

java--关于setCharAt()方法的一点注意

代码如下: public class StringBufferDemo { //setCharAt()方法练习 public void setCharAtDemo() { StringBuffer sbt=new StringBuffer("learning"); System.out.println(sbt.setCharAt(0, 'L');//此行报错 } //appen()...

qq_43612957的博客 1363

【深度学习】脸部修复,CodeFormer,论文,实战

Blind face restoration是一个高度 ill-posed 的问题,通常需要辅助引导来 1) 改善从降级输入到期望输出的映射,或者 2) 补充在输入中丢失的高质量细节。在本文中,我们展示了在一个小的代理空间中学到的离散码本先验可以通过将盲目的面部恢复建模为 a code prediction task来大大减少恢复映射的不确定性和模糊性,同时为生成高质量面部提供丰富的视觉元素。

q742971636的博客 2994

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java StringBuffer

StringBuffer的直接父类是 AbstractStringBuilder StringBuffer`实现了Serializable,即StringBuffer`的对象可以串行化 在父类中AbstractStringBuilder有属性byte[] value,不是final 该value数组存放字符串内容,因此是存放在堆中的,而不是常量池 StringBuffer 是一个final类,不能被继承 String 和 StringBuffer比较 String保存的是字符串常量,里面的值不能更改,.

weixin_45129218的博客 246

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java基础知识(五) 字符串定义(String)与字符串的修改(StringBuffer)

(1)String与equals的用法:(equals比较的变量所指向的对象是否相等,equals                          是String类带参数的一个方法)     String str1=new String("avsd");     String str2=new String("avsd");     if(str1.equals(str2))

xiaotian15的专栏 733

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JAVA中带参方法与字符串方法详解

带参方法 定义: 访问修饰符 返回值类型 方法名 (参数列表){ // 方法主体 } 访问修饰符指该方法允许被访问的权限范围,只能是public,protected或private,其中public访问修饰符表示该方法可以被任何其他代码调用,另外两种修饰符将再后续的课程中陆续学习 返回值类型指方法返回值的类型,如果方法不返回任何值,它应该声明为void类型,Java对待返回值的要求很严格,方法的返回值必须与所说明的类型相匹配。使用return语句返回值。 方法

qq_61748807的博客 912

java 字符串定义_java基础知识(五) 字符串定义(String)与字符串的修改(StringBuffer)...

(1)String与equals的用法:(equals比较的变量所指向的对象是否相等,equals 是String类带参数的一个方法) String str1=new String("avsd"); String str2=new String("avsd"); if(str1.equals(str2)) S...

weixin_34526937的博客 262

Java常用类库之String

Java常用类库之String 概述 在学习Java时,我们知道Java的基本数据类型有整型的int,byte,short,long,字符型的char,布尔型的Boolean和浮点型的float、double,String虽然不是基本数据类型,但是我们在使用Java的时候,经常会用到String字符串,String是Java中一个重要的常用类库,任何一个字符串都是String类的实例,String类的对象。 JDK解释: JDK中对String的介绍中,我们可以发现有这么一句话(如图红色部分) 为什..

weixin_44646497的博客 401

java String(Buffer&Builder)类的常用构造器和方法

【代码】java String类的常用构造器和方法。

Txydzz的博客 441

8G显存跑通MiniMaxH3+ComfyUI:AI视频生成本地实战指南

视频生成作为AIGC的重要分支,正从云端走向本地。其核心原理是通过扩散模型逐帧推理,在连续时间轴上保持画面连贯,同时依赖显存、内存与硬盘的协同工作。对于普通用户,显卡显存成为本地化落地的主要门槛,而参考模式的引入则解决了角色一致性与场景衔接问题,让多段视频生成成为可能。在实际工程中,分辨率、帧率、生成时长是决定显存压力的三个关键参数,低显存环境下需要通过分段生成、参考帧衔接与参数降级来稳定产出。本文以MiniMaxH3配合ComfyUI整合包为例,详细拆解了8G显存N卡环境下从环境准备、参数调优到参考模式使

weixin_33861800的博客 436

常见类

StringBuffer类: String在对字符串进行处理的时候,会创建新的对象,效率慢而且占空间。所以我们经常采用StringBuffer处理字符串,此种方式不会创建新的对象,所以效率更快,占用空间更少。 StringBuffer的默认容量是16个字符。当加入的字符长度超过16时,对象的容量会和长度保持一致,进行拓展。容量就像一个杯子的容积,长度就像杯子中水的体积。只是这个“杯子”可以自动变大,为了装更多的水。 StringBuffer常见方法: public int capacity():获得本对象的

qq_45142938的博客 119

【JAVA-Day45】Java常用类StringBuffer解析

在Java中,StringBuffer是一个用于处理字符串的类,它允许我们对字符串进行动态操作,如拼接、插入、删除等。通过本篇文章的学习,我们深入了解了Java中常用类StringBuffer的各种方法及其应用场景。同时,我们也比较了StringBuffer与String的不同之处,并分享了一些在实际开发中的最佳实践。希望本文能够对你在Java字符串处理中提供有价值的指导。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 3万+

深入理解StringBuilder的append方法

然而,由于String类的不可变性,频繁的字符串拼接操作可能会带来一定的性能问题。避免创建多个中间字符串对象:由于String类的不可变性,每次字符串拼接都会创建一个新的字符串对象,存在大量的对象创建和销毁操作。高效的字符串操作:由于StringBuilder底层使用了字符数组来存储字符串,因此在执行append操作时,仅需改变内部字符数组的值,而不需要重新分配内存空间。希望通过本文对StringBuilder的append方法有了更深入的理解,能够在实际的编程中合理应用,提升字符串操作的效率和性能。

weixin_48307977的博客 5758

Java--StringBuffer的添加、删除功能

StringBuffer的删除功能:StringBuffer sb = new StringBuffer();sb.deleteCharAt(5); //当缓冲区中索引上没有元素时就会报StringIndexOutOfBoundsExceptionsb.append("heima");//根据索引删掉索引位置上对应的字符sb.deleteCharAt(4);//删除的时候是包含头,不包含尾sb.d...

BIGBOSS_Wang的博客 3192
上一篇: 提高JDBC应用程序的性能
下一篇: 文件数据流操作命令及意义
hwctl
博客等级 码龄20年 13粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值