c#值类型与引用类型 /字符串的不可变性/字符串的方法
来源:互联网 发布:淘宝秋季女装风衣 编辑:程序博客网 时间:2024/05/21 17:37
1 值类型与引用类型
值类型:int、double、bool、char、decimal、struct、enum
引用类型:string、自定义类、数组
存储:
值类型的值是存储在内存的栈当中。
引用类型的值是存储在内存的堆中。
2、字符串
1)、字符串的不可变性
当你给一个字符串重新赋值之后,老值并没有销毁,而是重新开辟一块空间存储新值。
当程序结束后,GC(垃圾回收器)扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁。
s先指向“张三”的地址0x001001,在对s又赋值为“孙全”时,在堆中另外开盘一块内存0x010101存放“孙全”。s指向孙全地址,但张三并没有被销毁,直到程序结束,由GC进行销毁
2)、我们可以讲字符串看做是char类型的一个只读数组,可以通过下标对其进行访问
ToCharArray();将字符串转换为char数组
new string(char[] chs):能够将char数组转换为字符串
例:如何将string s的值由:“abcdefg”变为“bbcdefg”
string s = "abcdefg"; //s = "bbcdefg"; ***最直接的方法*** // s[0] = 'b';不能这样做 因为是只读的 //首先将字符串转换为char类型的数组 char[] chs = s.ToCharArray(); chs[0] = 'b'; //将字符数组转换为我们的字符串 s = new string(chs); //既然可以将string看做char类型的只读数组,所以我可以通过下标去访问字符串中的某一个元素 Console.WriteLine(s[0]); Console.WriteLine(s); Console.ReadKey();
3 字符串的方法
1)、Length:获得当前字符串中字符的个数
Console.WriteLine(“请输入你心中想的那个人的名字”);
string name = Console.ReadLine();
Console.WriteLine(“你心中想的人的名字的长度是{0}”,name.Length);
Console.ReadKey();
2)、ToUpper():将字符转换成大写形式
3)、ToLower():将字符串转换成小写形式
4)、Equals(lessonTwo,StringComparison.OrdinalIgnoreCase):比较两个字符串,可
**Console.WriteLine(“请输入你喜欢的课程”);
string lessonOne = Console.ReadLine();
//将字符串转换成大写
// lessonOne = lessonOne.ToUpper()
Console.WriteLine(“请输入你喜欢的课程”);
string lessonTwo = Console.ReadLine();
//将字符串转换成小写
// lessonTwo = lessonTwo.ToLower();
if (lessonOne.Equals(lessonTwo,StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine(“你们俩喜欢的课程相同”);
}
else
{
Console.WriteLine(“你们俩喜欢的课程不同”);
}
Console.ReadKey();*
5) Split():分割字符串,返回字符串类型的数组。
//从日期字符串("2008-08-08")中分析出年、月、日;2008年08月08日//让用户输入一个日期格式如:2008-01-02,你输出你输入的日期为2008年1月2日string s = "2008-08-08";char[] chs = { '-' };//不想要的字符//string[] str = s.Split(chs)// s = "2008 08 08";不想要的字符全变为 空("")了string[] date = s.Split(chs, StringSplitOptions.RemoveEmptyEntries);//去掉空Console.WriteLine("{0}年{1}月{2}日", date[0], date[1], date[2]);Console.ReadKey();
6)、Replace():将字符串中某个字符串替换成一个新的字符串
7)、Contains():判断某个字符串是否包含指定的字符串
string str = "国家关键人物老赵"; if (str.Contains("老赵")) { str = str.Replace("老赵", "**"); } Console.WriteLine(str); Console.ReadKey();
输出结果:国家关键人物**
8)、Substring():截取字符串。在截取的时候包含要截取的那个位置。
string str = “今天天气好晴朗,处处好风光”;
str = str.Substring(1,4);//从第1个开始截取,共截取4个
Console.WriteLine(str);
Console.ReadKey();
输出结果:天天气好
9)、StartsWith():判断以….开始
10)、EndsWith():判断以…结束
string str = "今天天气好晴朗,处处好风光"; if (str.EndsWith("风")) { Console.WriteLine("是的"); } else { Console.WriteLine("不是的"); } Console.ReadKey();
输出结果:不是的
11)、IndexOf():判断某个字符串在字符串中第一次出现的位置,如果没有返回-1、值类型和引用类型在内存上存储的地方不一样。
12)、LastIndexOf():判断某个字符串在字符串中最后一次出现的位置,如果没有同样返回-1
string str = “今天天天气好晴朗,天天处天好风光”;
int index = str.IndexOf(‘天’, 4);//第4次出现“天”的位置
Console.WriteLine(index);
Console.ReadKey();
输出结果 9
string str = “今天天气好晴朗,处处好风光”;
int index = str.LastIndexOf(‘天’);
Console.WriteLine(index);
Console.ReadKey();
输出结果:-1
13) 利用LastIndexOf +Substring获取路径中最后一个文件名
string path = @"c:\a\b\c\d\e文件\f\g\\fd文件\fd\fdf\d\vfd\重要文件.wav"; int index = path.LastIndexOf("\\");//\\表示的是字符"\"(斜杠),是一个转义符 path = path.Substring(index + 1); Console.WriteLine(path); Console.ReadKey();
输出结果:重要文件.wav
14)、Trim():去掉字符串中前后的空格
15)、TrimEnd():去掉字符串中结尾的空格
16)、TrimStart():去掉字符串中前面的空格
string str = " hahahah "; str = str.Trim(); //str = str.TrimStart(); // str = str.TrimEnd(); Console.Write(str); Console.ReadKey();
17)、string.IsNullOrEmpty():判断一个字符串是否为空或者为null
string str = "fdsfdsfds"; if (string.IsNullOrEmpty(str)) { Console.WriteLine("是的"); } else { Console.WriteLine("不是"); } Console.ReadKey();
18)、string.Join():将数组按照指定的字符串连接,返回一个字符串。
string[] names = { "张三", "李四", "王五", "赵六", "田七" }; //张三|李四|王五|赵六|田七string strNew = string.Join("|",names);// string strNew = string.Join("|", "张三", "李四", "王五", "赵六", "田七"); Console.WriteLine(strNew);Console.ReadKey();
输出结果:张三|李四|王五|赵六|田七
- c#值类型与引用类型 /字符串的不可变性/字符串的方法
- C#之11 字符串的不可变性 -----值类型与引用类型
- C# 字符串的不可变性
- 20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)
- 字符串的不可变性
- 字符串的不可变性
- C#中字符串的不可变性
- c#之字符串的不可变性
- 字符串的相等性和不可变性
- Java中字符串的不可变性
- C#(FCL)字符串对象的不可变性
- C# 引用类型-字符串类型
- C#的值类型与引用类型
- C#命名空间的使用、添加命名空间、引用类型和值类型、字符串与char数组转换
- 字符串、值类型引用类型
- 字符串的引用类型当做值类型来处理
- Java中String类型的不可变性和驻留池
- 图解String类型的不可变性及其原因
- 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!
- 实参和形参
- HTTP协议状态码详解(HTTP Status Code)
- AndroidStudio安装流程
- Java并发编程:线程池的使用(源码解析)
- c#值类型与引用类型 /字符串的不可变性/字符串的方法
- http 抓取数据问题
- RabbitMQ与Spring的整合
- 关于移动端rem 布局的一些总结
- 嵌入式软件系统概述
- Java语言转成json(导入jar文件)
- 《大话数据结构》——学习笔记(概述&线性表)
- Ubuntu16.04根目录下文件夹介绍
- 指向const的指针和const指针