首页 > 代码库 > 非计算机专业的码农C#学习笔记 三、变量 表达式 字符串
非计算机专业的码农C#学习笔记 三、变量 表达式 字符串
三、变量常量
说在前:
其实,写这个东西的时候,我也是在复习,因为这个都是一年前的笔记了。今天我看了几章,贴上来吧。我也是求高手指点,因为变量类型很多,我真的背不出来,只有用的时候记起来或者查查资料。
为什么会这样呢?短期项目用到access,sqlserver,oracle后我开始张冠李戴了.....所以,我在学习过程,真的是抄下来,放在办公室座位前....
变量(int Int=0)
1.值类型
(1)整型
类型 | 说明(二进制) | 范围 |
Sbyte | 8位有符号 | -128-127 |
Byte | 8位无符号整数 | 0-255 |
Short | 16位有符号 | -32768--32767 |
Ushort | 16位无符号 | 0-65535 |
Int | 32位有符号 | -2147483648--2147483647 |
Uint | 32为无符号 | 0-4294967295 |
Long | 64位有符号 | -9223372036854775808--..5807 |
Ulong | 64位无符号 | 0-18446744073709551615 |
(2)浮点类型
类型 | 说明 | 范围 |
Float | 7位 | 10负45-38次方 |
Double | 15-16位 | 10负324-308次方 |
(3)布尔类型
Bool x=true or false
(4)特殊:枚举类型
Enum 枚举名
{list1=1,list2=2,…}枚举可以为整数、浮点和布尔类型
小知识积累:(int)datetime.now().dayofweek;返回一周第几天(小知识不一定和主题密切相关,只是我看到书本案例有,就抄下来,下同)
2.引用类型(定义在栈,内存大内存空间中,值类型定义在堆小内存空间)
定义一个类定值,然后赋值:class Int{Int a=0;};class UsingInt{Int.a=10;}
常量-const来创建:const in tint=0;tint是固定不变的
四、表达式和运算符
1.算术运算符
+,-,*,/,%求余运算;
2.赋值运算符
有=、+=、-=、*=,&=,>>=等,一般表示运算符号的混合,读作赋值、加赋值(运算符号名+赋值),表示:i+=2等价于i=i+2;
3.关系运算符(比较)
==等于,>,<,!=,>=,<=,比较并返回一个布尔结果
4.逻辑运算符
(1)按位(按照二进制的位数上的值比较,0或者1,0&1=0返回0所在的十进数字,0|1=1,返回1对应的十进制数字):&与,|或,^异或;
(2)布尔预算中的(条件成立情况):&与,|或,^异或;
5.移位运算符-用于计算机变量所对应的二进制位置的移动:
>>右移位,<<左移位:string a=5;a>>1,a<<1,5-二进制010,左移一位01,对应十进制3
数位移动,我是靠画图理解的,不过平时没用到这么高深的,就不了了之。
6.其他运算符
名称 | 说明 | 用法举例 |
Is | 用于检查是不是指定类型 | Bool b=0 is int;b结果true |
?条件运算符 | 变量?成立:不成立 | String yn=(bool)b?”yes”:”no”;b成立b=yes,不成立b=no |
new | 创建新的类型实例 | String[] s=new string[5];s[0]=1,s[1]=2… |
typeof | 获取对象所属的命名空间.类型 | Type t=typeof(int);console.write(t)结果为sysytem.int32 |
运算符号的优先顺序高-低:属性typeof等-——一元(!++,--增大减少)——乘除加减——移位>>——比较<>=——位与——位或——逻辑与或——条件?——赋值:+=等等
五、字符和字符串
(char和string,char集合成string)
1.字符char类:表示一个Unicode字符
1.1char.方法(参数、对象等)P64,常用的有:
Console.WriteLine("判断是不是字母:{0}",char.IsLetter(a));
Console.WriteLine("判断是不是数字:{0}", char.IsDigit(b));
Console.WriteLine("判断是数字还是字母:{0}", char.IsLetterOrDigit(c));
Console.WriteLine("判断是不是小写:{0}", char.IsLower(a));
Console.WriteLine("判断是不是标点:{0}", char.IsPunctuation(d));
Console.WriteLine("判断是不是分隔符:{0}", char.IsSeparator(e));
Console.WriteLine("判断是不是空格:{0}", char.IsWhiteSpace(f));
此外还有用char.Tostring(a);char.toUpper(a)等转换为相应的类型
1.2char的转义符”\”反斜杠:\n—回车换行;\t跳下一个字符,\v竖直换行,\b退格,\r回车,\f换页,
\标点符号-表示标点符号(防止程序混淆)
2.字符串string类(重点,char的集合)
(1)方便和实用性一般建议用sringbuilder类
Using system.text;
Stringbuilder strb=new stringbuilder(“字符串”,100);//(string,初始大小)
Strb.append(“追加到原string后面的字符”);
Strb.appendformat(”{0:c}”,1000)//指定追加格式为{0}类型c货币,内容为“1000”
Strb.insert(0,”名称”)//(从零开始的需要插入到第几位,要插入的内容)
Strb.remove(15,strb.length-15); //(除去的开始位置,除去的位数)
Strb.replace(“需要替换的字符”,”要替换成的字符”);
(2)string使用方法
*比较:string.compare(a,b),a.compareto(b) //ab两变量比较—a>b结果1,等于结果为0,小于结果-1
String.equal(a,b),a.equal(b)等于结果为true,不等则为false(字符串比较一般比英文字母,字母表后面比前面大)
*格式化字符串:string.format(“{0:格式规范},{1},…,”,参数1,参数2…)
这个也是比较常用的,一般时间这类从数据库出来很容易格式不统一,用上格式化,能够解决新手常出现的DB exception
格式规范:
d-yyyy-mm-dd;D-年-月-日;t-时:分;T-时:分:秒;f-年月日时分;F年月日时分秒;
G和g排序的时间格式年月日时分(秒);M月日;Y年月;C-货币¥
*分割字符串:分割之后的结果是数组string[] ss=a.split(“分割字符或者符号1”,” 分割字符或者符号2”,….,),然后用foreach(string str in ss){console.writeline(str);}罗列所有分割形成的字符串
*插入和填充:str1.insert(起始位置,要插入内容);填充str.padleft/right(加入后总该字符串总长度,加入的内容)
*删除字串:str1.remove(起始位置,删除多少位)如果没有指明删除多少位,起始位置后面都删
*复制字符:str2=string.copy(str1);str1.copyto(str1起始位置,str2,str2起始位置,str1需要复制的位数)
*替换字符:str1.replace(需要替换的内容,要替换成的内容);
项目经验来说,split是个好东西,大平台的接口开发很多都是返回字符串或者解密的md5字符串,一般用“|”,“¥%”等特殊符号划分,这时候用split分成数组,就能提取相应的信息了
非计算机专业的码农C#学习笔记 三、变量 表达式 字符串