*作用域:
作用域:变量可以使用的一个范围
局部变量 :只能够在局部使用
全局变量:可以在任何地方使用
{ }他就表示一个作用域
*Random随机数类:
//Random 随机数
//1.创建一个随机数的队列,并指定种子
//如果没有指定种子,会默认使用当前系统的一个时间作为种子去使用
//变量名 r 随机自定义
/定义一个 float 数组,存储 5 个随机数,找出其中的最大值并输出
//2.获取随机数
r.Next();
Console.WriteLine(r.Next());
Console.WriteLine(r.Next());
//2.2可以给Next()里面传递参数 指定随即参数的范围
Console.WriteLine(r.Next(10));//小于指定的值非负整数 0~9 写一个参数的时候默认是从0开始的 到 你写的范围结束
Console.WriteLine(r.Next(10,20));//大于等于10小于20 10~19 包左不包右 左闭右开 [10,20)
//打印出来是相同的
Random r1 = new Random(11);
Random r2 = new Random(11);
Console.WriteLine(r1.Next());
Console.WriteLine(r2.Next());
//10个随机数 1~100
//这个例子打印出来是10个相同的数字,因为循环太快了,使用相同的时间作为种子,所以随机数都一样
for (int i = 0; i < 10; i++)
{
Random r4 = new Random();
Console.WriteLine(r4.Next(1,101));
}
//解决方案
Random r5 = new Random();
for (int i = 0; i < 10; i++)
{
Console.WriteLine(r5.Next(1, 101));
}
//GUTD (全球唯一标识符)
//GUID格式 xxxxxxxx- xxxx-xxxx-xxxx - xxxxxxxxxxxx 其中每个x是0 - 9 a - f范围的一个
//675ee030-8dc9- 4b9d - a200f967bdc61834
Console.WriteLine(Guid.NewGuid());
*DateTime时间类:
//DateTime类 用来进行时间操作的
//DateTime类型的变量用于存储一个时间
//DateTime.Now属性 用于获取当前系统时间
DateTime time = DateTime.Now;
Console.WriteLine(time);
//可以通过时间对象的属性获取时间的详情信息
Console.WriteLine("年:" + time.Year);
Console.WriteLine("月:" + time.Month);
Console.WriteLine("日:" + time.Day);
Console.WriteLine("时:" + time.Hour);
Console.WriteLine("分:" + time.Minute);
Console.WriteLine("秒:" + time.Second);
Console.WriteLine("毫秒:" + time.Millisecond);
//DayOfWeek是一个枚举类型,获取周几
Console.WriteLine("今天是周" + time.DayOfWeek);
//0表示周日 1表示周一 2表示周2
Console.WriteLine("今天是周" + (int)time.DayOfWeek);
Console.WriteLine("今天是今年的第几天:" + time.DayOfYear);
//日期转成字符串类型
Console.WriteLine(time.ToString());//2025/11/10 16:05:19
//字符串转成日期类型
string strDate = "2025年11月10日";
Console.WriteLine(DateTime.Parse(strDate));//2025/11/10 0:00:00
//DateTime的ToString方法可以接收一个参数,用于时间的格式化
Console.WriteLine(time.ToString("G"));//2025/11/10 16:05:19
Console.WriteLine(time.ToString("s"));//2025-11-10T16:05:19
Console.WriteLine(time.ToString("d"));//2025/11/10
Console.WriteLine(time.ToString("D"));//2025年11月10日
//y 表示年
//M 表示月份
//d dd 表示日
//ddd dddd表示周
//h H 表示小时
//mm 表示分钟
//s 表示秒
//fff 表示毫秒
Console.WriteLine(time.ToString("yy")); //25,年份后两位
Console.WriteLine(time.ToString("yyyy")); //2025 完整年份
Console.WriteLine(time.ToString("今年是yyyy年")); //可以和普通字符串连起来用
Console.WriteLine(time.ToString("M"));//7月4日
Console.WriteLine(time.ToString("MM"));//07
Console.WriteLine(time.ToString("MMM"));//7月
Console.WriteLine(time.ToString("MMMM"));//七月
Console.WriteLine(time.ToString("d"));//2025/7/4
Console.WriteLine(time.ToString("dd"));//几号
Console.WriteLine(time.ToString("ddd"));//周几
Console.WriteLine(time.ToString("dddd"));//星期几
Console.WriteLine(time.ToString("现在的小时是h"));//12小时制
Console.WriteLine(time.ToString("现在的小时是H"));//24小时制
Console.WriteLine(time.ToString("分钟m"));
Console.WriteLine(time.ToString("mm"));//分钟
Console.WriteLine(time.ToString("秒s"));//秒
Console.WriteLine(time.ToString("ss"));//秒
Console.WriteLine(time.ToString("fff"));//毫秒
//判断某年是否为一个闰年
//闰年:能被4整除但是不能被100整除或者是能被400整除
bool re = DateTime.IsLeapYear(2025);
Console.WriteLine(re);//fase
Console.WriteLine(DateTime.IsLeapYear(2024));//true
*字符串String属性:
//字符串属性
string a = "abcdy";//0 1 2 3 4
//1.可以通过索引来获取字符串当中的某一个字符 索引:从0开始编号的
//[0] 获取到字符串当中第一个字符 [1]获取到第二个字符
Console.WriteLine(a[0]);//a
char c = a[4];
Console.WriteLine(c);//y
for (int i = 0; i < 5; i++)
{
Console.WriteLine(a[i]);//a b c d y
}
//2.获取字符串的长度 变量名.Length
string a1 = "qwertyuiop";
Console.WriteLine(a1.Length);//10
for (int i = 0; i < a1.Length; i++)
{ Console.WriteLine(a1[i]); }
//字符串内置了很多API(函数)可以让我们灵活处理字符串
string s1 = "abc";
string s2 = "张紫诺";
string s3 = "123";
//1. 变量类型.Concat() 拼接字符串
string s4 = string.Concat(s1, s2, s3);
Console.WriteLine(s4);
//2. 变量类型.Contains() 判断参数字符串是否出现在原字符串当中
bool b = s2.Contains("紫诺");//只能输入字符串
Console.WriteLine(b);//True
//判断当前数字是否出现在字符串中
string str1 = "74093758961284cvnlsdjflsdkj73281973";
int index = 0;
while (str1.Contains("1"))
{
if (str1[index] == '1')
{ Console.WriteLine(index);//10
break; }
index++;
}
//3. IndexOf() 从前往后查询字参数符串首次在原字串符中出当现的位置 索引0的位置 如果没有找到 会返回-1
string str2 = "ABCabc123";
Console.WriteLine(str2.IndexOf("a"));//3
Console.WriteLine(str2.IndexOf("b",5));//-1 从5的位置开始往后找 找到就返回所在的位置 没有找到就返回-1
string str3 = "ABCabc123b";
Console.WriteLine(str3.IndexOf("b",5));//9
//4. LastIndexOf() 从后往前查询参数字符串首次在原字符串当中出现的位置 索引的位置 如果没有找到 会返回-1
Console.WriteLine(str3.LastIndexOf("b"));//9
Console.WriteLine(str3.LastIndexOf("b",5));//4 从5的位置开始往前找 找到就返回所在的位置 没有找到就返回-1
Console.WriteLine(str3.LastIndexOf("b", 3));//-1
int aa = str3.LastIndexOf("b");
Console.WriteLine(str3[aa]);
string name = "张紫诺";
//5. StartsWith() 判断原字符串时候以参数字符串开头
Console.WriteLine(name.StartsWith("张"));//True
Console.WriteLine(name.StartsWith("张紫"));//True
Console.WriteLine(name.StartsWith("诺"));//False
//6.Endswith() 判断原字符串是否以参数字符串结尾
Console.WriteLine(name.EndsWith("诺"));//True
Console.WriteLine(name.EndsWith("紫诺"));//True
Console.WriteLine(name.EndsWith("张紫诺"));//True
Console.WriteLine(name.EndsWith("张紫诺1"));//False
//7. Insert() 在指定的位置插入字符串 生成新的字符串
Console.WriteLine(name.Insert(2,"ZN"));//张紫ZN诺
Console.WriteLine(name.Insert(3, "ZN"));//张紫诺ZN
//8. Replace() 替换关键字
string str4 = "张紫诺马帅";
Console.WriteLine(str4.Replace("张","Z"));//Z紫诺马帅
Console.WriteLine(str4.Replace("张", "****"));//****张紫诺
string phoneNuber = "15139157676";
string number= phoneNuber[3].ToString()+phoneNuber[4].ToString() +phoneNuber[5].ToString()+phoneNuber[6].ToString();
Console.WriteLine(number);
Console.WriteLine(phoneNuber.Replace(number,"****"));
//9. ToUpper() 将小写字母转换为大写字母
string str5 = "ABCabc";
Console.WriteLine(str5.ToUpper());
//10. ToLower() 将大写字母转换为小写字母
Console.WriteLine(str5.ToLower());
//11. Remove() 删除指定的字符串
Console.WriteLine(str4.Remove(1));//张//从索引为1的位置 后面的全部删除
Console.WriteLine(str4.Remove(1,3));//张帅//从索引为1的位置开始删删除了3个
//12. String str = new string(new char[]{单个字符内容}) 把字符数组转成字符串
//定义一个字符串数组
char[] chars = { 'A', 'B', 'C' };
string stri = new string(chars);
Console.WriteLine("转成为字符串内容为:" + stri);//ABC
//13. ToCharArray() 字符串转成字符数组
char[] chars2 = stri.ToCharArray();
//14. IsDigit() 指定字符串是否为十进制数字
string r = "Today is 2023-10-05, temperature is 25℃";
string num = "";
foreach (char c in r)
{
// 判断当前字符是否为数字
if (char.IsDigit(c))
{
num += c;
}
}
Console.WriteLine("提取的数字字符串:" + num);
*ArrayList动态数组:
//ArrayList动态数组(一个集合),就是一个长度不固定并且存储数类型也不固定的数组是C#为我们封装好的类
//本质是一个object类型的数组
//可以存储任意类型的数据,数组的长度会根据存储内容的增加或减少进行改变
//普通数组的创建
int[] arr1 = new int[10];
int[] arr2 = new int[] { 1, 2, 3 };
arr1[0] = 666;
//动态数组的创建
ArrayList list1 = new ArrayList();
ArrayList list2 = new ArrayList() { "李易", "罗志", 666, true, new int[] { 1, 2, 3 } };
foreach (var item in list2)
{ Console.WriteLine(item); }
//普通数组获取数组的长度
Console.WriteLine(arr1.Length);
//动态数组获取数组的长度
Console.WriteLine(list2.Count);
//初始化ArrayList
ArrayList list = new ArrayList();
//核心特性
//动态扩容
list.Capacity = 0;//预分配容量 刚开始没有长度 一般不用预分
//扩容机制:首次扩容为4,其他次每次扩容为原来长度的2倍
//混合类型存储,可以存储任意类型的对象
//变量名.Add()
//添加元素,末位添加,有序的(存入顺序和取出顺序一致)
list.Add(111);
list.Add("abc");
list.Add(true);
list.Add(new DateTime(2025, 7, 9));
list.Add("abc");
//变量名.Add() 向ArrayList 的最后位置添加数据
list2.Add("李云");//{ "李易", "罗志", 666, true, new int[] { 1, 2, 3 }, "李云" };
// 变量名.AddRange() 将一个集合的内容添加到ArrayList的尾部
int[] ints1 = { 1, 2, 3, 4, 5 };
list2.AddRange(ints1);//{ "李易", "罗志", 666, true, ints1, "李云", 1,2,3,4,5};
// 变量名.Insert() 在指定 索引的位置插入 数据
list.Insert(1, "aaa");
// 变量名.InsertRange() 在指定的 位置插入 集合的内容
list2.InsertRange(2, ints1);
// 变量名.Sort() 升序排序
list.Sort();
// 变量名.Reverse() 降序排序
list.Reverse();
// 变量名.Remove() 删除动态数组中指定的第一个数据
list.Remove(111);
// 变量名.RemoveAt() 删除指定索引位置的数据
list.RemoveAt(1);
// 变量名.RemoveRange() 删除指定范围的数据
list.RemoveRange(0, 2);
// 变量名.Clear() 清空数组,删除动态数组中所有的数据,并将Count重置为0
list.Clear();
// 变量名.Contains() 判断当前动态数组里面有没有对应的数据 有则返回true 没有返回false
list.Contains("abc");
// 变量名.IndexOf() 查找元素 首次 出现的 索引
list.IndexOf("abc");
// 变量名.LastIndexOf() 查找 最后一次 出现的 索引
list.LastIndexOf("abc");
// 变量名.GetRange() 从数组中截取对应的数据 返回一个新的ArrayList
// 参数1:开始截取的索引位置
// 参数2:截取的个数
ArrayList list4 = list2.GetRange(1, 3);
// 变量名.Reverse() 反转
list.Reverse();
//变量名.OfType<数据类型>().ToList() 从原集合中筛选出所有原本就是指定数据类型的元素,将其整理成一个该类型的 List 集合输出
ArrayList arrayList = new ArrayList { 1, "a", 2, "b", 3, "c", "aaa", "张三" };
List<string> ints = arrayList.OfType<string>().ToList();
foreach (var item in ints)
{ Console.WriteLine(item); }//迭代器遍历
//装箱与拆箱:
//ArrayList本质上是一个可以自动扩容的object数组
//由于用万物之父来存储数据,自然存在装箱拆箱。
//当往其中进行值类型存储时就是在装箱,当将值类型对象取出来转换使用时,就存在拆箱。
//性能问题
//装箱与拆箱
//存值类型时:会被装箱成Object,导致内存分配和性能损失
//存引用类型时:无装箱操作,但读取时仍需类型转换
ArrayList arrayList1 = new ArrayList { 1, "a", 2.0 };
int i = 1;
arrayList1[0] = i;//装箱:int(值类型)→ object(引用类型)
i = (int)arrayList1[0];//拆箱:object → int
int a = (int)arrayList1[0];
Console.WriteLine(i);//1
Console.WriteLine(a);//1
1645

被折叠的 条评论
为什么被折叠?



