【基础知识】.Net基础加强 第05天
一、 . 字符串的特性:不可变性(ToUpper()演示)、字符串池、字符串留用(不常用)
1. 不可变性:由于字符串是不可变的。所以每次修改字符串都是创建一个单独的字符串副本(有拷贝了一个字符串);
2. 字符串池:当程序中有多个相同的字符串常量时,这时,这些字符串都是指向内存中的同一个字符符串,这个特性叫做:字符串池。
之所以字符串池不会造成程序的混乱,是因为:字符串具有不可变性。
3. 字符串留用(不常用,因为会有一定的内存损耗):
二、 string字符串
1. string的属性
1> Length //获得字符串中字符的个数
2. string的方法
1> IsNullOrEmpty() //静态方法,判断为null或者为空
(string str =“” 和string str= null和 string str = string.Empty的区别:stirng str = “”;会在堆内存中开辟一块儿内存空间,string str= null 则不会在堆中开辟内存空间,string str = string.Empty;和string str =”” 在堆内存中的地址是一样的。 使用str.Length == 0 来判断字符串是否为空,不要使用str ==””,str.Length==0的效率比较高,微软内部就是这样实现的。)
2> ToCharArray() //将string 转换为char[]
3> ToLower() //小写,必须接收返回值。(因为字符串的不可变)
4> ToUpper() //大写
5> Equals() //比较两个字符串是否相同。忽略大小写的比较Equals(obj,StringComparation.I….)。
6> IndexOf() //如果没有找到对应的数据,返回-1。返回对应的字符第一次出现未知的索引://作业:面试题:统计一个字符串中天安门出现的位置
7> LastIndexOf() //找到字符串最后一次出现的位置的索引,其他同IndexOf
8> Substring() //截取字符串 //作业:动态截取[某某某],获取第一次出现的索引的位置N1,获取第一次出现的索引位置N2。用N2-N1计算长度
9> Split() //可以根据字符把字符串分开
10> Join() //和split()正好是相反的;是将字符用指定的连接符连起来
11> Format() //利用占位符拼接字符串,并且返回
12> Trim() //去掉两边的空格
13> Replace() //执行替换
三、 StringBuilder
1.使用Stopwatch来监视程序运行用了多长时间。Start();stop(); sw.Elapsed//将最终的结果打印出来 //与程序的代码stringbuilder的内容无关
2. 使用大量字符串拼接的时候,String的问题:
1> 内存浪费,产生大量的垃圾内存
2> 由于String的不可变性,每次拼接都会创建一个新的string对象,每次创建对象的时候本身也是比较耗时耗资源的。所以造成了使用string拼接字符串性能极其低。
3> 解决方法就是使用stringbuilder
3. 只有使用大量字符串拼接的时候使用StringBuilder,其他的情况都用string。因为各种方法要求的参数都是string类型,并且string类型具有一些特性:不可变性、字符串池等。
4. StringBuilder的一些方法:
StringBuilder sb = new StringBuilder();
Sb.Append();//追加字符串
Sb.AppendLine();//拼接完最后添加一个换行
Sb.ToString();//把StringBuilder转换为字符串
Sb.Insert();//在指定字符中插入
Sb.Replace();//在指定的字符串中替换
四、 字符串的比较
1. String类型重写了Object类中继承下来的Equals方法。
重写为:只要两个字符串中的字符完全相同就返回true或者两个字符串是同一个对象也返回true
2. 由于Equals方法子类可以重写,所以通过Equals 方法判断是否为同一个对象是不正确的,所以判断两个对象是否同一个对象用:
Object.ReferenceEquals();//这个才是判断对象是否相等的方法。
【基础知识】.Net基础加强 第05天的更多相关文章
- Linux基础知识与基础命令
Linux基础知识与基础命令 系统目录 Linux只有一个根目录,没有盘符的概念,文件目录是一个倒立的树形结构. 常用的目录功能 bin 与程序相关的文件 boot 与系统启动相关 cdrom 与Li ...
- java线程基础知识----线程基础知识
不知道从什么时候开始,学习知识变成了一个短期记忆的过程,总是容易忘记自己当初学懂的知识(fuck!),不知道是自己没有经常使用还是当初理解的不够深入.今天准备再对java的线程进行一下系统的学习,希望 ...
- day63:Linux:nginx基础知识&nginx基础模块
目录 1.nginx基础知识 1.1 什么是nginx 1.2 nginx应用场景 1.3 nginx组成结构 1.4 nginx安装部署 1.5 nginx目录结构 1.6 nginx配置文件 1. ...
- 这些C++基础知识的基础知识你都学会了吗?
一.C++基础知识 新的数据类型 C语言中的数据类型 C++中新的数据类型 思考:新的数据类型有什么好处?请看下面的代码: 可以见得:新的类型使整个程序更加简洁,程序变得易读易懂!这个就是bool ...
- Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别
1. Java中线程的创建有两种方式: (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. ...
- Java基础知识强化之多线程笔记05:Java程序运行原理 和 JVM的启动是多线程的吗
1. Java程序运行原理: Java 命令会启动Java 虚拟机,启动 JVM,等于启动了一个应用程序,也就是启动了一个进程.该进程会自动启动一个 “主线程” ,然后主线程去调用某个类的 m ...
- Ceph基础知识和基础架构认识
1 Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...
- Ceph 基础知识和基础架构认识
1 Ceph基础介绍 Ceph是一个可靠地.自动重均衡.自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储.块设备存储和文件系统服务.在虚拟化领域里,比较常用到的是Cep ...
- 算法导论 - 基础知识 - 算法基础(插入排序&归并排序)
在<算法导论>一书中,插入排序作为一个例子是第一个出现在该书中的算法. 插入排序: 对于少量元素的排序,它是一个有效的算法. 插入排序的工作方式像许多人排序一手扑克牌.开始时,我们手中牌为 ...
- 集合框架基础知识-----java基础知识
Java集合框架 :接口:Collection.List .Set. Map:实现类:ArrayList.LinkedList.Vector.HashSet.TreeSet.HashMap.HashT ...
随机推荐
- 使用虚幻引擎中的C++导论(三-反射系统与迭代器)
使用虚幻引擎中的C++导论(三) 第一,这篇是我翻译的虚幻4官网的新手编程教程,原文传送门,有的翻译不太好,但大体意思差不多,请支持我O(∩_∩)O谢谢. 第二,某些细节操作,这篇文章省略了,如果有不 ...
- 30. PL/SQL Developer连接服务器查询时,数据乱码处理
在windows中创 建一个名为“NLS_LANG”的系统环境变量,设置其值为"AMERICAN_AMERICA.ZHS16GBK", NLS_LANG的值为:select u ...
- 属性传值,协议传值,block传值,单例传值四种界面传值方式
一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...
- CentOS6.5 Openssl版本升级
CentOS6.5 Openssl 升级: 第一步:在openssl官网(https://www.openssl.org/)下载最新版 Ps:个人使用的是openssl-1.0.1u.tar.gz版 ...
- 关于网站高性能中磁盘cpu以及内存对网站性能的影响
之前和同事聊天的时候,提到了这个硬件方面(包括内存,cpu,以及硬盘的存储选择),个人认为可以从这几个方面来提高底层硬件的性能,从而提高网站的整体吞吐量和速度. 一.主机: (1).CPU:决定处理的 ...
- 使用WCF 测试客户端测试你的WCF服务
wcftestclient.exe是一个GUI的工具用于测试WCF,只需在Visual studio command line 窗口中键入 wcftestclient,就启动这个程序.如下图: 然后通 ...
- JDK 环境变量设置
.net转JAVA了.记心不好,记录一下. 安装好jdk(64位)后找到我的电脑(右键)>属性>高级选项卡>环境变量>,里面有管理员的用户变量,有系统变量.我选的是系统变量.点 ...
- C# 中的IOCP线程池
原文地址:http://www.theukwebdesigncompany.com/articles/iocp-thread-pooling.php PartOne : Introduction 当使 ...
- cadence学习之——原理图库的添加及器件的放置
画原理图,库是必不可少的,库有cadence自带的,也可以自己建自己的库,然后在画原理图工程时, 这些库都需要被添加进原理图工程才能使用. 1.库的添加 打开Place Part属性框,操作如下: ( ...
- CSS3--选择器
子元素选择器: div>p{background:yellow:} 相邻的后兄弟选择器(必须相邻) h1+p{padding-top:20px:} 后兄弟选择器(同级的当前元素后面的元素) di ...