string基础

1.字符串常量具备字符串池特性。

字符串常量在创建前,首先在字符串池中查找是否存在相同文本。

如果存在,则直接返回该对象引用;若不存在,则开辟空间存储。

目的:提高内存利用率。

2.字符串具有不可变性。

字符串常量一旦进入内存,就不得再次改变。

若在原位置改变会使其他对象内存被破坏,导致内存泄漏。

当遇到字符串变量引用新值时,会在内存中新建一个字符串,将该字符串地址交由该变量引用。

string str="";
for(int i=0;i<10;i++)
{
str=str+i.ToString();
//字符串的拼接:每次拼接都会产生一个新的对象替换原有引用,每次循环都会产生一个垃圾
}
Console.WriteLine(str);//0123456789

解决方案:

可变字符串StringBuilder:一次开辟可以容纳n个字符的空间

StringBuilder builder=new StringBuilder(10);
int length=builder.Length; //有效字符数量
for(int i=0;i<10;i++)
{ //每次循环都在原有对象上修改
builder.Append(i);//使用builder追加字符串
}
Console.WriteLine(builder.ToString());

拓展:

StringBuilder类

1.构造函数

1/ 无参构造 StringBuilder();

创建的对象没有内容,需要加入值才能打出来

2/ 传入容量 StringBuilder(int capacity);

使用指定的容量初始化对象,参数为建议起始大小

3/ 传入内容 StringBuilder(string value);

使用指定的字符串初始化 System.Text.StringBuilder 类的新实例。

StringBuilder sb=new StringBuilder("www.baidu.com");

4/ StringBuilder(int capacity, int maxCapacity);

初始化StringBuilder 类的新实例,该类起始于指定容量并且可增长到指定的最大容量。

5/ StringBuilder(string value, int capacity);

使用指定的字符串和容量初始化 StringBuilder 类的新实例。

6/ StringBuilder(string value, int startIndex, int length, int capacity);

用指定的子字符串和容量初始化StringBuilder 类的新实例。

value: 字符串,包含用于初始化此实例值的子字符串。

startIndex: value 中子字符串开始的位置。

length: 子字符串中的字符数。

capacity: StringBuilder 的建议起始大小。

2.属性

1/ Capacity: 获取或设置可包含在当前实例所分配的内存中的最大字符数。

2/ Length:获取或设置当前StringBuilder 对象的长度。(有效字符数量)

3/ MaxCapacity: 获取此实例的最大容量。

3.功能函数

1/ Append(…)追加值,有空位坐空位,没有则新加一个空位

…可以是bool,byte,char,char[],decimal,double,float,int,long,object,string….

2/ Append(char value,int repeatCount)

在此实例追加 Unicode 字符的字符串表示形式指定数目的副本。

3/ Append(char[] value, int startIndex, int charCount);

Append(string value, int startIndex, int count);

在此实例追加指定的 Unicode 字符子数组的字符串表示形式。

startIndex: value 中的起始位置

charCount: 要追加的字符数。

4/ AppendFormat略

5/ AppendLine()

将默认的行终止符追加到当前 System.Text.StringBuilder 对象的末尾。

6/ AppendLine(string value);

将后面跟有默认行终止符的指定字符串的副本追加到当前 StringBuilder 对象的末尾。

7/ Clear();

从当前 System.Text.StringBuilder 实例中移除所有字符。

8/ CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count);

将此实例的指定段中的字符复制到目标Char数组的指定段中。

sourceIndex: 此实例中开始复制字符的位置。 索引是从零开始的。

destination: 将从中复制字符的数组。

destinationIndex: destination 中将从其开始复制字符的起始位置。 索引是从零开始的。

count: 要复制的字符数。

9/ EnsureCapacity(int capacity);

确保 System.Text.StringBuilder 的此实例的容量至少是指定值。

capacity: 要确保的最小容量。

返回结果: 此实例的新容量。(取两者的最大值)

StringBuilder sb = new StringBuilder(10);
Console.WriteLine(sb.EnsureCapacity(4)); //10
Console.WriteLine(sb.EnsureCapacity(20)); //20

10/ Equals(StringBuilder sb);

返回一个值,该值指示此实例是否等于指定的对象。

如果此实例和 sb 具有相等的字符串、System.Text.StringBuilder.Capacity 和 System.Text.StringBuilder.MaxCapacity值,则为 true;否则,为 false

11/ Insert(int index, …);

…为各种类型数据;将…的字符串表示形式插入到此实例中的指定字符位置。

index: 此实例中开始插入的位置。 …:要插入的值

12/ Remove(int startIndex, int length);

将指定范围的字符从此实例中移除。

13/ Replace(string oldValue, string newValue);

Replace(byte oldValue, byte newValue);

将此实例中所有指定字符串的匹配项替换为其他指定字符串。

14/ Replace(string oldValue, string newValue, int startIndex, int count);

将此实例的startIndex开始count计字符数的子字符串中所有指定字符串的匹配项替换为其他指定字符串。

15/ ToString();转换为字符串

ToString(int startIndex, int length);

将此实例中子字符串的值转换为 System.String。

string类(一、string基础)的更多相关文章

  1. 关于String类和String[]数组的获取长度方法细节

    一.在Java中,以下代码段有错误的是第(  )行 public static void main(String[] args) { String name = "小新";     ...

  2. JAVA之旅(十六)——String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较

    JAVA之旅(十六)--String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较 过节耽误了几天,我们继续JAVA之旅 一.String概述 String时 ...

  3. Java基础知识强化35:String类之String的其他功能

    1. String类的其他功能: (1)替换功能: String replace(char old, char new) String replace(String old,String new) ( ...

  4. Java基础知识强化34:String类之String类的转换功能

    1. String类的转换功能 String[] split(String regex)//将字符串变成字符串数组(字符串切割) byte[] getBytes()//将字符串变成字节数组 char[ ...

  5. Java基础知识强化33:String类之String类的获取功能

    1. String类的获取功能 int length() // 获取字符串中字符的个数(长度) char charAt(int index)//根据位置获取字符 int indexOf(int ch) ...

  6. Java基础知识强化32:String类之String类的判断功能

    1. String类的判断功能: boolean equals (Object obj ) boolean equalsIgnoreCase (String str ) boolean contain ...

  7. Java基础知识强化31:String类之String的面试题

    1.先看一个图: 2.String面试题: (1)题1: package cn.itcast_02; /* * 看程序写结果 */ public class StringDemo3 { public ...

  8. Java基础知识强化29:String类之String类构造方法

    1. 常用String构造方法使用: package cn.itcast_01; /* * 字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. * 通过查看API,我们可以知道 * A: ...

  9. String类,string类的特点

    1,String类是final修饰的,不能被继承 2,String类的底层使用数组存储 JDK1.9之前:char[]value JDK1.9之后:byte[]value 3,String类的对象不可 ...

  10. Java基础知识强化30:String类之String的特点(String为什么是final)

    1. String字符串特点: 一旦被赋值,字符串值就不能改变. 这里String是final修饰的,具有不可继承性. 2. 为什么String是final? 主要是为了"效率"  ...

随机推荐

  1. hdu 4742 Pinball Game 3D(三维LIS&amp;cdq分治&amp;BIT维护最值)

    Pinball Game 3D Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. UML基础——统一建模语言简介

    到了21世纪——准确地说是2003年,UML已经获得了业界的认同.在我所见过的专业人员的简历中,75%都声称具备UML的知识.然而,在同绝大多数求职人员面谈之后,可以明显地看出他们并不真正了解UML. ...

  3. 简单hello world

    第一步配置路由: 打开app/http/route.php文件,输入:Route::get('/home', 'HomeController@index'); 第二步配置控制器: 控制文件可以手动添加 ...

  4. C#解析XML文件

    想实现:C#读取XML文件内的内容至List XML文件:AppAttr.xml  其中,一定是要ArrayOfAppAttr(红色部分AppAttr为你的实体类名) <?xml version ...

  5. C#指南,重温基础,展望远方!(11)C#委托

    委托类型表示对具有特定参数列表和返回类型的方法的引用. 通过委托,可以将方法视为可分配给变量并可作为参数传递的实体. 委托类似于其他一些语言中的函数指针概念,但与函数指针不同的是,委托不仅面向对象,还 ...

  6. TCP 三次握手过程详解

    TCP(Transmission Control Protocol) 传输控制协议 TCP:面向连接的,可靠的,基于字节流的传输层通信协议 TCP(传输层)位于IP层(网络层)之上,应用层之下,不同的 ...

  7. java同一个实体的复制

    import org.springframework.beans.BeanUtils; //将mon的值复制给monitorCommission;monitorCommission是实体Monitor ...

  8. atitit。gui 界面皮肤以及换肤总结 java .net c++

    atitit.gui 界面皮肤以及换肤总结 java .net c++ 1. Swing 的皮肤 1 1.1. windows风格 1 1.2. Mac风格 ( liquid 框架) 1 2. 如何给 ...

  9. android.animation(1) - ValueAnimator的ofInt(), ofFloat(), addUpdateListener(), addListener()(转)

    一.概述 long long ago,我写过几篇有关Animation的文章,讲解了传统的alpha.scale.translate.rotate的用法及代码生成方法.其实这三篇文章讲的所有动画效果叫 ...

  10. JAX-WS使用Handler实现简单的WebService权限验证

    WebService如果涉及到安全保密或者使用权限的时候,WS-Security通常是最优选择.WS-Security (Web服务安全) 包含了关于如何在WebService消息上保证完整性和机密性 ...