stringbuilder

5.7字符串生成器

房东的猫 提交于 2020-02-03 03:46:35
字符串生成器 若字符串大量增加例如 循环10000次 A+=“666”;则花费计算机资源极大,需要字符串生成器进行优化 步骤 创建字符串生成器 StringBuilder str = new StringBuilder(字符串); append( content ) 该方法向字符串生成器中追加内容 insert ( int offset , arg ) 该方法向字符串生成器中的指定的位置添加字符 delete ( int star , int end ) 移除字符串生成器中从 star 开始到 end-1 处的字符 String A = new String("abcdefg"); StringBuilder B = new StringBuilder(A); B.append("E"); System.out.print(B); //abcdefgE B.delete(1, 3); System.out.print(B); //adefgE 删除 1 到(3减1)的字符串 B.insert(1,"插入"); System.out.print(B); //a插入defgE 来源: CSDN 作者: #Crazy=man 链接: https://blog.csdn.net/Kkjkjl/article/details/104144315

35个Java代码优化的细节,你知道几个

倾然丶 夕夏残阳落幕 提交于 2020-02-02 23:28:07
目录 前言 代码优化细节 1、尽量指定类、方法的final修饰符 2、尽量重用对象 3、尽可能使用局部变量 4、及时关闭流 5、尽量减少对变量的重复计算 6、尽量采用懒加载的策略,即在需要的时候才创建 7、慎用异常 8、不要在循环中使用 try…catch… ,应该把其放在最外层 9、如果能估计到待添加的内容长度,为底层以数组方式实现的集合、工具类指定初始长度 10、当复制大量数据时,使用 System.arraycopy() 命令 12、循环内不要不断创建对象引用 13、基于效率和类型检查的考虑,应该尽可能使用 array ,无法确定数组大小时才使用 ArrayList 14、尽量使用 HashMap 、 ArrayList 、 StringBuilder ,除非线程安全需要,否则不推荐使用 Hashtable 、 Vector 、 StringBuffer ,后三者由于使用 同步机制 而导致了 性能开销 15、不要将数组声明为 public static final 16、尽量在合适的场合使用单例 17、尽量避免随意使用静态变量 18、及时清除不再需要的会话 19、实现 RandomAccess 接口的集合比如 ArrayList ,应当使用最普通的for循环而不是 foreach 循环来遍历 20、使用同步代码块替代同步方法 21、将常量声明为 static final

cs-HtmlHelpers

a 夏天 提交于 2020-02-02 03:59:50
ylbtech-Unitity: cs-HtmlHelpers PagingHelpers.cs SelectInputHelpers.cs TreeHelpers.cs 1.A,效果图 返回顶部 1.B,源代码 返回顶部 1.B.1,PagingHelpers.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Text; using Core.Repository; namespace Core.HtmlHelpers { public static class PagingHelpers { public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl, string fnData = "") { StringBuilder result = new StringBuilder(); for (int i = 1; i <= pagingInfo.TotalPages; i++) { result.AppendLine("<a

leetcode 67.二进制求和

假装没事ソ 提交于 2020-02-02 02:37:33
67.二进制求和 执行用时 :3 ms, 在所有 Java 提交中击败了60.62%的用户 将每一位数对应并相加,再加上进位(cout),cout只需要将这一位的结果除以2即可 ( 2/2 == 1 , 1/2==0 , 0/2 == 0 ) ,最后将结果mod 2加入到StringBuilder并反转输出 class Solution { public String addBinary ( String a , String b ) { int al = a . length ( ) - 1 ; int bl = b . length ( ) - 1 ; StringBuilder stringBuilder = new StringBuilder ( ) ; int cout = 0 ; int t = 0 ; for ( int i = al , j = bl ; i >= 0 || j >= 0 ; i -- , j -- ) { int l = i >= 0 ? a . charAt ( i ) - '0' : 0 ; int r = j >= 0 ? b . charAt ( j ) - '0' : 0 ; t = l + r + cout ; cout = t / 2 ; stringBuilder . append ( t % 2 ) ; } if ( cout =

TextBox.Text += “string”; vs TextBox.AppendText(“string”);

梦想与她 提交于 2020-02-02 01:55:13
问题 what is the difference between these two methods? Is one more efficient than the other? I was thinking maybe the AppendText() uses a method similar to the StringBuilder, ie it uses its own cache instead of creating and appending a new string each time, is that true? Thanks. 回答1: As it is clearly mentioned in Remarks section of MSDN Documentation The AppendText method enables the user to append text to the contents of a text control without using text concatenation, which, can yield better

String, StringBuffer and StringBuilder 区别

情到浓时终转凉″ 提交于 2020-01-31 14:03:33
1 String (1) String的创建机理 由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池。其运行机制是:创建一个字符串时,首先检查池中是否有值相同的字符串对象,如果有则不需要创建直接从池中刚查找到的对象引用;如果没有则新建字符串对象,返回对象引用,并且将新创建的对象放入池中。但是,通过new方法创建的String对象是不检查字符串池的,而是直接在堆区或栈区创建一个新的对象,也不会把对象放入池中。上述原则只适用于通过直接量给String对象引用赋值的情况。 举例:String str1 = "123"; //通过直接量赋值方式,放入字符串常量池 String str2 = new String(“123”);//通过new方式赋值方式,不放入字符串常量池 注意:String提供了inter()方法。调用该方法时,如果常量池中包括了一个等于此String对象的字符串(由equals方法确定),则返回池中的字符串。否则,将此String对象添加到池中,并且返回此池中对象的引用。 (2) String的特性 [A] 不可变。是指String对象一旦生成,则不能再对它进行改变。不可变的主要作用在于当一个对象需要被多线程共享,并且访问频繁时,可以省略同步和锁等待的时间,从而大幅度提高系统性能

Java学习第二天(System类,StringBuilder类,包装类)

∥☆過路亽.° 提交于 2020-01-31 08:34:18
Java学习第二天 System类 currentTimeMillis() arraycopy​方法 StringBuilder类 StringBuilder() append(任意类型) String和StringBuilder相互转换 包装类 装箱与拆箱 自动装箱与自动拆箱 基本数据类型与字符串类型之间转换 今天学习了System类,StringBuilder类和包装类 System类 和Math一样,不能创建对象 java.lang.System:系统类 System类包含一些和系统相关的方法,是一个工具类,里面的方法都是静态的,可通过类名直接调用. currentTimeMillis() 以毫秒为单位返回当前时间。 此方法相当于 Date类的getTime方法 可用于测试程序的效率 public class Demo01System { public static void main ( String [ ] args ) { /* * static long currentTimeMillis() 以毫秒为单位返回当前时间。 * 此方法相当于Date类的getTime方法 * */ long s = System . currentTimeMillis ( ) ; for ( int i = 0 ; i < 10000 ; i ++ ) { System . out .

StringBuilder与String的区别

↘锁芯ラ 提交于 2020-01-30 16:40:36
String 在进行运算时(如赋值、拼接等)会产生一个新的实例,而 StringBuilder 则不会。所以在大量字符串拼接或频繁对某一字符串进行操作时最好使用 StringBuilder,不要使用 String 如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。 两个类的工作原理不同:   String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。   而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。 转载自https://blog.csdn.net/weixin_34067980/article/details/93082874 来源: https://www.cnblogs.com/qdu-lkc/p/12242705

Java StringBuffer和StringBuilder类

泄露秘密 提交于 2020-01-30 16:35:55
Java StringBuffer和StringBuilder类 (buffer n.缓冲;计算机缓存区;缓冲器;老朽 v.缓冲;减轻;缓存) 当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。 和String类不同的是, StringBuffer和StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。 StringBuilder类在Java5中被提出,它和StringBuffer之间的最大不同在于 StringBuilder的方法不是线程安全的(不能同步访问)。 由于StringBuilder相较于StringBuffer有速度优势,所以在多数情况下建议使用StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用StringBuffer类。 public class Test{ public static void main(String[] args){ StringBuffer sBuffer=new StringBuffer("华南虎的博客:"); sBuffer.append("www"); sBuffer.append(".2020chinasouthtiger"); sBuffer.append(".com"); System.out.println(sBuffer); } }

receiving strings through interop

随声附和 提交于 2020-01-30 08:12:29
问题 I'm having trouble getting a string back from some c code I wrote. First some generally unrealated background info: I'd like to receive the user readable string for a TAPI TSP from the TAPI API. I've implemented a semi workable TAPI solution relying on matching driver names to stored strings, but would like to change this to work on permanant line id's instead, as one of our customers has an (Alcatel) PBX that refuses to work any other way. In C, I define the function in my header file as: _