字符串的操作
字符串类型
1、去空格
Trim(); // 取头尾空格,还有去前边空格,去后边空格
2、全部大小写
ToUpper(); //全部大写
ToLower(); //全部小写
3、判断是否以子串开头、结尾、是否包含
StartsWith("s"); //是否以 s 开头,是返回true
EndWith("s"); //是否以 s 结尾,是返回true
Contains("s"); //是否包含 s ,是返回true
4、判断字符串出现的位置
IndexOf("s"); //从字符串中找到 s 第一次出现的位置,没有返回-1
LastIndexOf("s");//最后一次出现的位置,没有返回-1
5、字符串的截取、替换、拆分
SubString(起始位置,长度(可以省略)); //字符串的截取
Replace("_","-");//替换
Split('_'); //拆分
string a = "a_sdfw";
string b = a.Replace("_","-"); //替换
Console.Write(b + "\t");
string[] c = b.Split('-'); //拆分
for (int i = 0; i < c.Length; i++)
{
Console.Write(c[i]+"\t");
}
日期时间类型
1、设置时间
DateTime dt = new DateTime();
DateTime dt = new DateTime(1999,3,12);
DateTime dt = new DateTime(1999,3,12,15,47,56);年月日时分秒
2.获取当前时间
DateTime dt = DateTime.now;
3、分别获取年月日时分秒
dt.Year; dt.Mouth; dt.Day;......
4、星期的第几天,年的第几天
dt.DayOfWeek; dt.DayOfYear;
5、增加多少个月...之后是哪一天,— 号表示之前多少个月是哪一天
dt.AddMouth(12); dt.AddMouth(-12); dt.Add×××();
6、设定格式
1、日期时间类型格式
dt.tostring("yyyy年MM月dd日hh时mm分ss秒");
yyyy、yy MM,M dd,d......
2、double类型格式
double a = 0;
a.tostring("#,#.00"); //总共四个符号 # 0 , .
逗号表示三位一分,0表示必须显示,没有就显示0
#.00 #.## #,#.##
数学运算符
天花板数、地板数、四舍五入
math.ceiling(3.14);只对小数有效 天花板数 3.0 ==3 3.1 ==4 大于等于当前小数的最小整数
math.Floor(3.14); 小于当前小数的最大整数
math.Round(3.14); 四舍五入
数组中存储的是连续的同一类型的数据。
一维数组:
定义: 数据类型[] 数组名 = new 数据类型[数组长度];
数据类型[] 数组名 = new 数据类型[数组长度]{元素1,元素2,元素3......};
例如:1、 int[] a = new int[5];
2、 int[] a = new int[5]{1,2,3,4,5}
问题:示例 2 中数组长度可不可以不写,请在评论中回答
说明:
1、数据类型[] 表示数组类型
数组名 表示数组变量
new 表示创建
数据类型[数组长度] 数组长度不能为空(第一种定义)
2、数组下标:用来确定数组中每个元素的位置,数组下标从0开始
3、数组赋值:数组名[数组下标] = 值 注意数据类型相同
4、数组取值:变量 = 数组名[数组下标] 注意数据类型相同
5、数组的遍历:
for循环遍历数组
int[] a = new int[5];
for(int i = 0;i<a.length;i++) //a.length表示数组长度
{ //需要注意数组长度与下标的关系
Console.WriteLine(a[i]);
}
foreach遍历数组
int[] a = new int[5];
foreach(int i in a)
{
Console.WriteLine(i);
}
具体操作看博客:数组操作
二维数组
定义: 数据类型[,] 数组名 = new 数据类型[行数,列数];
数据类型[,] 数组名 = new 数据类型[3,2]{{1,2},{2,3},{3,4}};
例如: int[,] a = new int[3,4];
......
说明: 1、名词解释同一维数组
2、数组下标同一维数组
3、数组赋值:数据类型[行下标,列下标] = 值
a[0,0] = 1;
4、数组取值:数据类型[行下标,列下标]
5、数组的遍历:
for循环遍历数组
int[,] a = new int[3,4];
for(int i = 0;i<3;i++)
{
for(int j = 0;i<4;j++)
{
Console.WriteLine(a[i,j]);
}
}
具体操作看博客:二维数组操作
锯齿数组:数组的数组
定义: 第一步:定义大数组
数据类型[][] a= new 数据类型[行数][]; 列数不写
第二步:定义小数组
数据类型[] a1 = new 数据类型[列数];
数据类型[] a2 = new 数据类型[列数];
......
第三步:把小数组放到大数组中
a[0] = a1;
a[1] = a2;
......
例如:
int[][] a = new int[3][];
int[] a1 = new int[] { 3, 4, 5, 6, 7 };
int[] a2 = new int[] { 1, 2, 3 };
int[] a3 = new int[] { 7, 8, 9, 10 };
a[0] = a1;
a[1] = a2;
a[2] = a3;
a.Length == 3;
其中锯齿数组的 length是3 指的是三个元素,每个元素中还有数组
二维数组与锯齿数组的比较:
int[,] a = new int [3][4]; //错
int[][] a = new int[3,4]; //错
int[][] a = new int[3][4]; //错
int[,] c = new int[3,4]; //对
c.Length == 12;
二维数组中的 length 是12 指的是个数
集合
1、ArrayList
链表结构,没有长度限制,可以随时向里添加或删除元素
需要在前面加上:using System.Collections;
定义: ArrayList a = new ArraryList90;
操作:
添加: a.Add(数据);
插入: a.Insert(索引号,数据);
删除: a.RemoveAt(索引号);
集合长度: a.Count //集合中元素的个数
取值: a[下标] //取出来的值需要进行强制转换
2、List<类型>
链表结构,没有长度限制,可以随时向里添加或删除元素
只能放指定类型的数据,取出来不用强制转换
定义: List<类型> 变量名= new List<类型>();
List<int> a = new List<int>();
操作:
添加: a.Add(数据);
插入: a.Insert(索引号,数据);
删除: a.RemoveAt(索引号);
集合长度: a.Count //集合中元素的个数
取值: a[下标]
排序: a.Sort();
反转: a.Reverse();
3、Dictionary<key,value>字典或哈希表
定义: Dictionary<int,string> a = new Doctionary<int,string>();
操作:
添加: a.Add(键值,数据);
删除: a.Remove(键值);
集合长度: a.Count;
取值: a[键值]
4、栈,队列 知道就行了
栈:先进后出,不能随机取其中任意一个值
定义: Stack<数据类型> a = new Stack<数据类型>();
添加: a.Push(值);
取值: 数据类型 变量名 = a.Pop();
队列:先进先出,不能随机取其中任意一个值
定义: Queue<int> a = new Queue<int>();
添加: a.Enqueue(值);
取值: 数据类型 变量名 = a.Dequeue();
函数:
1、主要功能就是为了让代码结构更加良好
2、函数是---实现相对独立功能的程序代码模块(程序段)
3、函数的四要素:函数名、输入、输出、运算
4、有的函数没有输入,函数名后的小括号可以不写东西,但必须有小括号
5、有的函数没有返回,在函数名的左侧不要写数据类型,写void即可
定义语法:
static 返回类型 函数名(形参列表)
{
函数体,运算
}
例:
static int Max(int a,int b)
{
if(a > b)
{
return a;
}
else
{
return b;
}
}
调用方法:
数据类型 变量名 = 函数名(实参列表);
int n = Max(7,8);
形参与实参一定要一一对应。 包括 个数,类型
传值
把实参的数据做个复本,送到函数的形参中取。
一般基本类型(int、double、char、bool、DateTime)都是值类型,
默认情况下会传值
传址
吧实参的地址传到函数的形参中区
形参与实参公用一个数据空间
一般引用类型都是传址(string 数组)
string传址 但是操作的话会新建一个