string类(一、string基础)
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基础)的更多相关文章
- 关于String类和String[]数组的获取长度方法细节
一.在Java中,以下代码段有错误的是第( )行 public static void main(String[] args) { String name = "小新"; ...
- JAVA之旅(十六)——String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较
JAVA之旅(十六)--String类,String常用方法,获取,判断,转换,替换,切割,子串,大小写转换,去除空格,比较 过节耽误了几天,我们继续JAVA之旅 一.String概述 String时 ...
- Java基础知识强化35:String类之String的其他功能
1. String类的其他功能: (1)替换功能: String replace(char old, char new) String replace(String old,String new) ( ...
- Java基础知识强化34:String类之String类的转换功能
1. String类的转换功能 String[] split(String regex)//将字符串变成字符串数组(字符串切割) byte[] getBytes()//将字符串变成字节数组 char[ ...
- Java基础知识强化33:String类之String类的获取功能
1. String类的获取功能 int length() // 获取字符串中字符的个数(长度) char charAt(int index)//根据位置获取字符 int indexOf(int ch) ...
- Java基础知识强化32:String类之String类的判断功能
1. String类的判断功能: boolean equals (Object obj ) boolean equalsIgnoreCase (String str ) boolean contain ...
- Java基础知识强化31:String类之String的面试题
1.先看一个图: 2.String面试题: (1)题1: package cn.itcast_02; /* * 看程序写结果 */ public class StringDemo3 { public ...
- Java基础知识强化29:String类之String类构造方法
1. 常用String构造方法使用: package cn.itcast_01; /* * 字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. * 通过查看API,我们可以知道 * A: ...
- String类,string类的特点
1,String类是final修饰的,不能被继承 2,String类的底层使用数组存储 JDK1.9之前:char[]value JDK1.9之后:byte[]value 3,String类的对象不可 ...
- Java基础知识强化30:String类之String的特点(String为什么是final)
1. String字符串特点: 一旦被赋值,字符串值就不能改变. 这里String是final修饰的,具有不可继承性. 2. 为什么String是final? 主要是为了"效率" ...
随机推荐
- Oracle 角色、权限
Oracle 角色管理 一.何为角色 角色:角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限.二.系统预定义角色 预定义角色是在数据库安装后,系统自动创建的一些常 ...
- 基于canvas的原生JS时钟效果
概述 运用html5新增画布canvas技术,绘制时钟效果,无需引用任何插件,纯js. 详细 代码下载:http://www.demodashi.com/demo/11935.html 给大家介绍一个 ...
- 【算法剖析】寻找两个已序数组中的第k大元素
1.问题描述 给定两个数组A与B,其大小分别为m.n,假定它们都是已按照增序排序的数组,我们用尽可能快的方法去求两个数组合并后第k大的元素,其中,1\le k\le(m+n).例如,对于数组A=[1, ...
- EF Code First:使用T4模板生成相似代码
http://developer.51cto.com/art/201309/409948.htm
- spring in action 9.1 spring security
spring security是基于spring AOP 和 Servlet 规范中的Filter 实现的安全框架. Spring Security 是为基于 Spring 的应用程序提供声明式安全保 ...
- HDU 5321 Beautiful Set 漂亮集合
题意:给定一个集合,含有n个数.浙理工先生和杭电先生各自有计算这个集合漂亮值的方法. 浙理工先生的计算方法是:对于这个n个数的某个排列,此排列的漂亮值为这个排列全部的区间最大公约数之和.然后这个集合的 ...
- Activity生命运行中的几个方法
给大家看看一个周期图
- Away3D引擎学习笔记(三)模型拾取(翻译)
原文详见http://away3d.com/tutorials/Introduction_to_Mouse_Picking.本文若有翻译不对的地方,敬请指出. 本教程详细介绍了Away3D 4.x中鼠 ...
- 每日英语:The Upside of Favoritism
As the head of the entertainment division of a major public-relations firm in New York, Janelle was ...
- linux 技巧:使用 screen 管理你的远程会话(短时间内同时开启多个会话)
screen -S zyj 开启一个会话窗口 会进入这个页面 然后按 Ctrl+a,再按一下d 退出 然后输入 screen -r -d zyj 会从新进入这个页面 如果你的工作完成就直接输入 关 ...