stringbuilder

Java中的Stringbuilder类

喜夏-厌秋 提交于 2020-01-30 03:22:29
String对象是不可改变的。每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能。   通过用一个重载的构造函数方法初始化变量,可以创建 StringBuilder类的新实例,正如以下示例中所阐释的那样。 StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); (一)设置容量和长度   虽然 StringBuilder对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值。此值称为该对象的容量,不应将它与当前 StringBuilder对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时

【Java 常用类】java.lang包(7)StringBuilder、StringBuffer类的常用方法

醉酒当歌 提交于 2020-01-30 00:18:44
文章目录 前言 一、大纲 二、使用 1.构造器 1.1 创建 2.常用方法 2.1 获取 2.2 追加 2.3 插入 + 移除 2.4 替换(字符) 2.5 替换(字符串) 2.6 反转字符串 2.7 获得子字符串 最后 相关 前言 上一篇 【Java 常用类】java.lang包(6)String类的常用方法 里讲了String的常用方法,但是String是不可变的,如果需要操作大量字符拼接时太占用内存空间。 现在讲可变字符序列,StringBuilder、StringBuffer类的常用方法。 因为这两个类方法与使用都基本一样,只是多线程环境下安全与非安全。所以这篇文章就用StringBuilder示例。 一、大纲 一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。 public final class StringBuilder extends Object implements Serializable , CharSequence 二、使用 1.构造器 1.1 创建 他有不同的构造器用于创建一个可变字符序列StringBuilder。

JAVA 遍历UFT-8所有中文

戏子无情 提交于 2020-01-29 20:23:12
import java.io.File; import java.io.FileWriter; import java.io.IOException; public class Chinese { public static void main(String[] args) { int start = Integer.parseInt("4e00",16); int end = Integer.parseInt("9fa5",16); StringBuilder stringBuilder = new StringBuilder(); for (int i = start; i < end; i++) { stringBuilder.append((char) i); stringBuilder.append('\n'); } try { // 文件保存到项目目录下 File file = new File("text.txt"); file.createNewFile(); FileWriter fileWriter = new FileWriter(file); fileWriter.write(stringBuilder.toString()); fileWriter.close(); } catch (IOException e) { e.printStackTrace()

建造者模式与StringBuilder源码

落爺英雄遲暮 提交于 2020-01-29 13:47:49
建造者模式 建造者模式是一种对象创建模式,用于组合对象的创建。当一个对象由多个对象组合而成,并且组合可能发生较大的变化时,可以采用建造者模式将子对象的构造和子对象的组合封装起来。以下是快餐店组装食物的一个例子。 驱动类:Main.java public class Main { public static void main ( String [ ] args ) { Meal chickenMeal = MealBuilder . getChickenMeal ( ) ; System . out . println ( chickenMeal ) ; // Meal: Chicken Burger + Coke, Price: 14.0 Meal beefMeal = MealBuilder . getBeefMeal ( ) ; System . out . println ( beefMeal ) ; // Meal: Beef Burger + Orange Juice, Price: 20.0 } } 主食基类:Burger.java public abstract class Burger { public String getVegetable ( ) { return "lettuce" ; } public abstract String getMeat ( )

编写高质量代码改善C#程序的157个建议[1-3]

本小妞迷上赌 提交于 2020-01-29 04:06:50
原文: 编写高质量代码改善C#程序的157个建议[1-3] 前言   本文主要来学习记录前三个建议。    建议1、正确操作字符串   建议2、使用默认转型方法   建议3、区别对待强制转换与as和is 其中有很多需要理解的东西,有些地方可能理解的不太到位,还望指正。 建议1、正确操作字符串   字符串应该是所有编程语言中使用最频繁的一种基础数据类型。如果使用不慎,我们就会为一次字符串的操作所带来的额外性能开销而付出代价。本条建议将从两个方面来探讨如何规避这类性能开销:   1、确保尽量少的装箱   2、避免分配额外的内存空间 先来介绍第一个方面,请看下面的两行代码: String str1="str1"+9; String str2="str2"+9.ToString(); 从IL代码可以得知,第一行代码在运行时完成一次装箱的行为,而第二行代码中并没有发生装箱的行为,它实际调用的是整型的ToString()方法,效率要比装箱高。所以,在使用其他值引用类型到字符串的转换并完成拼接时,应当避免使用操作符“+”来完成,而应该使用值引用类型提供的ToString()方法。 第二方面,避免分配额外的内存空间。对CLR来说,string对象(字符串对象)是个很特殊的对象,它一旦被赋值就不可改变。在运行时调用System.String类中的任何方法或进行任何运算(如“=”赋值、“+”拼接等)

mp4文件解析(c#)

瘦欲@ 提交于 2020-01-28 21:44:11
ISO/IEC 14496 ISO/IEC 14496 是MPEG专家组制定的MPEG-4标准,于2000年年初正式成为国际标准。MPEG-4与MPEG-1和MPEG-2有很大的不同。MPEG-4不只是具体压缩算法,它是针对数字电视、交互式绘图应用(影音合成内容)、交互式多媒体(WWW、资料撷取与分散)等整合及压缩技术的需求而制定的国际标准。 MPEG-4由一系列的字标准组成,包含以下的部分: ISO/IEC 14496-1: 系统 - 描述视频和音频数据流的控制、同步以及混合方式(即混流Multiplexing,简写为MUX)。 ISO/IEC 14496-2: 视频 - 定义一个对各种视觉信息(包括自然视频、静止纹理、计算机合成图形等等)的编解码器。例如,XviD编码就属于MPEG -4 Part 2。 ISO/IEC 14496-3: 音频 - 定义一个对各种音频信号进行编码的编解码器的集合,包括高级音频编码(Advanced Audio Coding,缩写为AAC)的若干变形和其他一些音频/语音编码工具。 ISO/IEC 14496-4: 一致性 - 定义对本标准其他的部分进行一致性测试的程序。 ISO/IEC 14496-5: 参考软件 - 提供用于演示功能和说明本标准其他部分功能的软件。 ISO/IEC 14496-6: 多媒体传输集成框架 - DMIF for

网站转接支付宝解决方案

拜拜、爱过 提交于 2020-01-28 11:27:37
大型网上购物系统除了能让会员选择货到付款结账方式外,还应该提供一些更方便快捷的网上支付方式。如果网上商店没有足够的实力提供会员直接在网站中建立现金账户的功能,就可以将订单信息转接到支付宝,让会员从支付宝付款。当然就算会员可以在网站上建立自己的现金账户,提供支付宝支付功能也不失为另一种方便快捷的支付方式,这可以给客户提供更多可选的支付方式。 首先,网上购物系统必须与支付宝公司签订合作协议,以确保从本购物网站上传到 支付宝网站上的订单信息能被正确接收。 当会员于购物网站上买下一系列商品并选择支付宝付款方式后,购物系统即将会员购物的订单信息转发到支付宝,网站页面也会转到支付宝的付款页面。此时,支付宝页面会发送一个验证信息到本网站以确认支付宝正确收到订单信息。 会员于支付宝网站付款完成后,网站页面会重新跳回本购物网站,同时支付宝会将已付款的订单信息发回本网站以便对本购物网站的数据库进行必要的修改操作。另外本网站还需要向支付宝网站发送一个返回信息,告知支付宝本系统已正确收到付款完毕的订单信息并且已经完成对数据的处理操作。 向支付宝网站传送订单信息时主要参数的含义: gateway :支付接口 service:识别是何接口实现何功能的表示 seller_email:商家签约时的支付宝账号,即收款的支付宝账号 key:安全校验码,与partner是一组 partner:商户ID,合作伙伴ID

Java:一些题目(一)

 ̄綄美尐妖づ 提交于 2020-01-28 07:03:54
1、如何将字符串反转? 使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。代码如下: // StringBuffer reverse StringBuffer stringBuffer = new StringBuffer(); stringBuffer. append("abcdefg"); System. out. println(stringBuffer. reverse()); // gfedcba // StringBuilder reverse StringBuilder stringBuilder = new StringBuilder(); stringBuilder. append("abcdefg"); System. out. println(stringBuilder. reverse()); // gfedcba 2、 final 在 Java 中有什么作用? final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。 特征:凡是引用final关键字的地方皆不可修改! (1)修饰类:表示该类不能被继承; (2)修饰方法:表示方法不能被重写; (3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。 3、 两个对象的 hashCode() 相同, 那么 equals() 也一定为

Java 之 可变字符序列:字符串缓冲区(StringBuilder 与 StringBuffer)

喜欢而已 提交于 2020-01-28 00:24:05
一、字符串拼接问题   由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。   Demo: 1 public class StringDemo { 2 public static void main(String[] args) { 3 String s = "Hello"; 4 s += "World"; 5 System.out.println(s); 6 } 7 }    上面这段代码,总共产生了三个字符串,即“Hello”,“world” 和 “HelloWorld”。引用变量 s 首先执行 Hello 对象,最终指向拼接出来的新字符串对象,即 HelloWorld。       由此可见,如果对字符串进行拼接操作,每次拼接,都会构建一个新的 String 对象,既耗时,又浪费空间。为了解决这一问题,可以使用 java.lang.StringBuilder 类。 String类有这样的描述:字符串是常量,它们的值在创建后不能被更改。 二、可变字符序列:字符串缓冲区   1、StringBuffer、StringBuilder、String 的区别           (1) 一个类似于 String 的字符串缓冲区,但能被修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容,所有对

day12_Object类、常用API

徘徊边缘 提交于 2020-01-26 10:51:49
Object类 概述 java.lang.Object 类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类(包括数组)都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类, 那么默认则继承自Object类。例如 public class MyClass /*extends Object*/ { // ... } 根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。今天我们主要学习其中的2个: public String toString() :返回该对象的字符串表示。 public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。 toString方法 方法摘要 public String toString() :返回该对象的字符串表示。 下面我们以代码举例的方式来说明toString方法。首先我们自定义Person类,代码如下 package demo01; public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age