stringbuilder

java-API之StringBuilder类型

南楼画角 提交于 2020-03-04 08:34:16
StringBuilder创建对象 // StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。 StringBuilder sb = new StringBuilder(); 常用方法 在 StringBuilder 上的主要操作是 append 和 insert 方法。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。 StringBuilder sb = new StringBuilder(); System.out.println( sb.append("app") ); System.out.println( sb.append("le") ); // apple StringBuilder sb2 = new StringBuilder(); sb2.append("le"); System.out.println( sb.insert(0,"app") ); // apple 字符串拼接效率问题及解决方法 我们都知道字符串可以通过“+”进行连接,但是这种方式方式效率如何,下面让我们测试下: public class Test_StringBuilder { public static void main(String[] args) { StringConcat();// +

C#字符串操作大全

戏子无情 提交于 2020-03-04 08:17:09
===============================字符串基本操作================================    一、C#中字符串的建立过程     例如定义变量     strT="Welcome to ";     strT+="www.cuit.edu.cn";     程序首先创建一个System.String 类型的对象并初始化为“Welcome to”。此时编译程度会分配足够的内存来保存这个文本串。并用变量strT来表示这个实例。当执行strT+="www.cuit.edu.cn"时,系 统会创建一个新的实例,并分配足够的内存来保存复合后的文本。然后用变量strT来表示这个新的字符串,旧的字符串被撤消。    二、字符串处理     1、从字符串中提取子串     StringBuilder 类没有支持子串的方法,因此必须用String类来提取。(关于StringBuilder 类,文末会提到)     string mystring="My name is ynn.";     //Displays "name is ynn."     Console.WriteLine(mystring.Substring( 3 ));     //Displays "ynn"     Console.WriteLine(mystring

Java StringBuilder 类

淺唱寂寞╮ 提交于 2020-03-02 14:46:36
目录 StringBuilder 1. 构造方法 2. 常用方法 3. 常用方法体 a. 数组拼接成字符串 b. 反转 c. 去掉最后一个字符 StringBuilder StringBuilder 是可变的字符序列,是 Java 5.0 新增的类; 包括方法 append(E e), reverse(), length(), toString() ; 1. 构造方法 构造方法 说明 StringBuilder() 创建一个空的字符串缓冲区,初始容量为16个字符 StringBuilder(int capacity) 创建一个空的字符串缓冲区,初始容量为 capacity StringBuilder(String s) 创建一个字符串缓冲区,其内容初始化为指定字符串 s,初始容量为 s 的长度 + 16个字符 2. 常用方法 类型 方法 说明 StringBuilder append(String s) 追加字符串 StringBuilder insert(int offset, String s) 在 offset 位置插入字符串 s StringBuilder deleteCharAt(int index) 删除字符 StringBuilder delete(int start, int end) 删除子字符串,包含开始,不包含结束 void setCharAt(int

String和StringBuilder的区别

为君一笑 提交于 2020-03-02 10:30:01
String和StringBuilder的区别(详细) 总的来说吧,String类的内容是不可变的,StringBuilder的内容是可变的 有好长一段时间都很迷这个String和StringBuilder之间的区别,我想着大家详细介绍一下。 他们之间最主要的区别在于对字符串拼接的处理: String 在做字符串拼接的时候,不会覆盖掉原来的字符串,原先的字符串还在堆内存里占用着内存,这样一来,拼接的多了,会产生更多的垃圾对象,占去大量内存,现在公司里在拼接字符串这个问题都不采用String,而是采用StringBuilder。 StringBuilder 解决了字符串拼接问题,他所拼接的字符串,会自动覆盖上一级,不会产生多余的垃圾,不会占用太多内存。 StringBuilder的基本语法 StringBuilder sb = new StringBuilder ( ) ; StringBuilder – append()方法 reverse()反转 //创建对象 StringBuilder sb = new StringBuilder ( ) ; //public StringBuilder append(任意类型):添加数据,并返回对象本身 // StringBuilder sb2 = sb.append("hello"); // // System.out.println(

java-字符串处理

末鹿安然 提交于 2020-03-01 20:08:50
String、StringBuffer和StringBuilder类的区别 String 类来创建和操作字符串。String 类是不可变类,即一旦一个 String 对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁 StringBuilder 类是 JDK 1.5 新增的类,它也代表可变字符串对象。实际上,StringBuilder 和 StringBuffer 功能基本相似,方法也差不多。不同的是,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此在通常情况下,如果需要创建一个内容可变的字符串对象,则应该优先考虑使用 StringBuilder 类 StringBuffer、StringBuilder、String 中都实现了 CharSequence 接口。CharSequence 是一个定义字符串操作的接口,它只包括 length()、charAt(int index)、subSequence(int start, int end) 这几个 API StringBuffer、StringBuilder、String 对 CharSequence 接口的实现过程不一样 String 直接实现了 CharSequence 接口,StringBuilder 和 StringBuffer

IT公司100题-26-左旋转字符串

我是研究僧i 提交于 2020-03-01 19:11:22
‍ ‍ 问题描述: ‍ ‍ 给定字符串和左旋的字符数,写程序实现字符串的左旋操作。例如对于字符串”12345678″, 左旋转4个字符后,变成”56781234″。要求时间复杂度为O(n),空间复杂度O(1)。 ‍ 问题分析: ‍ 假设字符串表示为XY,X表示需要左旋的部分,左旋后字符串表示为YX。 根据公式: 代码实现: package oschina.IT100; /** * @project: oschina * @filename: IT26.java * @version: 0.10 * @author: JM Han * @date: 5:23 PM 1/5/2016 * @comment: Rotate characters of a String * @result: After rotate 3 of 12345678 is: 45678123 */ public class IT26 { public static String rotateString(String s, int n){ StringBuilder sxb = new StringBuilder(s.substring(0, n)); StringBuilder syb = new StringBuilder(s.substring(n)); StringBuilder srb = sxb

深入分析Java中String、StringBuilder、StringBuffer的区别

早过忘川 提交于 2020-03-01 17:30:19
此文章转载于Java的架构师技术栈微信公众号 StringBuilder和StringBuffer StringBuilder和StringBuffer是可变的,也就说我们的增删改都是在原字符串的基础上操作的,操作次数再多内存也不会被白白的浪费,那他们俩又有什么区别呢? StringBuffer是线性安全的,支持并发操作,适合多线程。 StringBuilder线性不安全,不支持并发操作,适合单线程。 也就是说他们俩区别就在于支不支持并发操作,使用上基本上类似,你知道上面的区别之后就可以根据自己的业务需求来决定具体使用哪一个。这里就以StringBuffer为例说明一下吧。 1、构造方法 //第一种:直接new出一个空对象 StringBuffer s = new StringBuffer(); //第二种:new一个对象,并为其分配1024个字节缓冲区 StringBuffer s=new StringBuffer(1024); //第三种:new一个带有内容的对象 StringBuffer sb2=new StringBuffer(“张三”) 2、增删改操作 //第一种:增加内容 //1、增加内容:相当于字符串拼接 s.append("Java的架构师技术栈"); //2、增加内容:在指定位置插入 s.insert(2,"张三"); //第二种:删除内容 //1、删除内容

String拼接方式

假如想象 提交于 2020-03-01 16:47:15
String 字符串的拼接方式有以下几种:“+”号拼接、concat()、StringBuilder、StringBuffer 先说结论,就性能方面而言,建议使用顺序为 StringBuilder > StringBuffer > concat() > "+" StringBuilder 和 StringBuffer 都是可变字符串,但StringBuilder不是线程安全的,适用于单线程环境,StringBuffer 是线程安全的,用于多线程环境。 两者的实现是封装一个可修改的字符数组,字符数组中可以有空位置未被使用,有实例变量记录已使用的字符个数,append方法会直接拷贝字符到内部的字符数组,如果长度不够还可以拓展。 StringBuilder 方法的实现 StringBuffer 在方法中加上synchronized关键字,即加锁保证线程安全。 “+”号拼接 实现原理是将String转成了StringBuilder后,使用其append方法进行处理的。 1 String str0 = "a"; 2 StringBuilder sb = new StringBuilder(); 3 sb.append(str0).append("b"); 4 String str1 = sb.toString(); concat() 拼接 首先创建一个字符数组

35 个 Java 代码性能优化总结-----转载到处都有,不知原创是谁

▼魔方 西西 提交于 2020-03-01 15:02:32
35 个 Java 代码性能优化总结 前言 代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。 代码优化的目标是: 1、减小代码的体积 2、提高代码运行的效率 代码优化细节 1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50%。 2、尽量重用对象 特别是String对象的使用,出现字符串连接时应该使用StringBuilder

JavaBasic:StringBuidler和StringBuffer

眉间皱痕 提交于 2020-03-01 03:29:40
StringBuidler是可变对象,用来高效拼接字符串 StringBuilder支持链式操作 实现链式操作的核心是返回对象本身 StringBuffer是线程安全的,但是在多线程情况下改变字段值的操作比较少见,所以一般都会用StringBuilder public class StringBuilderClass { public static void main ( String [ ] args ) { String name = "Lucy" ; StringBuilder stringBuilder = new StringBuilder ( ) ; stringBuilder . append ( "Hello" ) . append ( name ) ; String s = stringBuilder . toString ( ) ; System . out . println ( s ) ; } } 来源: CSDN 作者: weixin_45215505 链接: https://blog.csdn.net/weixin_45215505/article/details/104579133