非计算机专业的码农C#学习笔记 三、变量 表达式 字符串

时间:2021-03-04 09:14:36

三、变量常量

说在前:

其实,写这个东西的时候,我也是在复习,因为这个都是一年前的笔记了。今天我看了几章,贴上来吧。我也是求高手指点,因为变量类型很多,我真的背不出来,只有用的时候记起来或者查查资料。

为什么会这样呢?短期项目用到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(“需要替换的字符”,”要替换成的字符”);

2string使用方法

*比较: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分成数组,就能提取相应的信息了