黑马程序员_变量和表达式
1、c#基本语法
1.语句如何结束
c#的编译器是不考虑代码中的空格、回车符、和tab字符的,它们都被视为空白的字符,编译器识别一段语句的结束标准是遇到“;”(分号)或“}”(大括号);
eg:
{
<code line1,statement1>;
<code line2,statement2>
<code line3,statement3>;
}
上面是演示用的伪代码,想表达的意思是,总共有三行的语句,第一行语句的最后有一个“;”号,故这一行是一个部分;而第二行的结尾并没有分号结尾,所以它并没有结束,而第三行却有,所以它们属于同一部分;
2.代码的易读性
在程序代码编写的时候尽量的遵守一个大家都使用的编程习惯,比如对于变量和方法采用统一的命名方法,在代码格式的书写上,在适当的时候,要使用缩进,这样可以增加代码的易读性,方便于自己日后的维护,也方便别人的查看;我们写的代码再好,只有你自己能够看的懂,那不是本事,自己看得懂,别人也能一下看懂,那才是大牛;
eg:
{
<code line1>;
{
<code line2>;
<code line3>;
}
<code line4>;
}
在适当的时候加入适当的缩进和换行,可以使程序的结构一目了然;
注:不过即使你的代码样式写的十分的丑,VS还是为我们提供了,统一格式化代码的功能,也就是说,即使你所有的源代码都没有缩进和换行,只要程序没有显示的语法错误按下快捷键ctrl+E、D,就可以将代码的样式格式化成默认的格式;
3.代码中的注释
随着程序的规模越来越大,在一开始就养成写代码注释的习惯显得尤为重要,因为它可以帮助我们在日后,清楚的了解自己所写的代码的具体功能,也方便于我们日后的查找和维护;
c#中的代码注释分为三种:1.行注释 2.块注释 3.文档注释
eg:{
<a statement>; //前面两个斜杠的是行注释,编译时直接忽略
/*
以一个斜杠和星来开头,星斜杠来结尾的是块注释,其中的语句都是一些说明性的文字,编译时也是忽略
*/
///三个斜杠是文档注释,在vs中输入三个斜杠时,会智能的转换成一系列为方法做注释的一些参数,我们直接填入即可;在软件完成时,可以生成类中方法的文档;
}
2、变量及其用法
1.变量的概念
“程序的核心是处理各种数据,数据的表现形式即是各种变量”,这句话说明了变量为什么会产生的原因。实际上我们电脑中所有的数据,在计算机硬盘上的存储形式,都是用0和1的。我们为了区分存储东西的不同,就使用到了变量。
变量在内存中,可以想象成架子上的盒子,这个盒子可以是空的,当然也可以放不同的东西,关键取决于盒子的形状和功能;这样的话,变量为了存储不同的数据,就要有一个名称和类型;名称可以让我们方便的使用到它们,类型则代表了它们存储数据的不同类型;
2.变量的定义
前面讲了变量是要有名称和类型的,所以在定义它的时候,就必须指定这些内容;
eg: <type> <name>;
int age;
注:1.变量在使用前必须声明;
2.在C#中我们可以使用的变量是无限多的,因为我们可以自己定义变量类型;
还可以一次定义多个变量
eg:<type> ,<name>,<name>...;
int a,b,c;
3.变量的类型
变量的类型可以分为简单类型和复杂类型,我这里主要总结的是简单类型变量;
简单类型变量又可以分为值类型、字符型、布尔型;值类型中又有整数型,和实数型之分。具体如下表
整型:
类型 允许的取值范围 sbyte -2^7到2^7-1 byte 0到2^8-1 short -2^15到2^15-1 ushort 0到2^16-1 int -2^31到2^31-1 uint 0到2^32-1 long -2^63到2^63-1 ulong 0到2^64-1 long类型在定义时,要在后面加入L或l因为默认的字面类型是int型;
浮点型:
类型 取值范围 可以显示的小数点后的位数 float 1.5*10^-45到3.4*10^38 7 double 5.0*10^-324到3.4*10^308 15到16 decimal 1.0*10^-28到3.4*10^28 28到29 float类型在定义的时候要在数值后加入f或F表示,因为浮点型的默认类型是double类型的,不加的话就是double类型的,就要进行强制类型转换;
decimal在定义时,要在后面数值后面加入m,或M个人猜测这个m应该代表的是money也就是钱的意思,因为设计这个类型就是专门用在钱的计算上的;
其他类型:
类型 允许的值 char 一个unicode字符;0-65535 string 一组字符 bool 只有true和false string类型的字符数是没有上限的,因为它们使用的可变大小的内存;
bool类型虽然简单,只有两个值,但是它在程序的流程控制上却起到了,至关重要的作用;
4.变量的命名
之前也提到了程序规范化的重要性,好的代码结构可以让我们一目了然,虽然VS可以帮我们格式化代码,但是它却不能格式化我们的变量名,而在c#中变量的命名,又是没有限制的,如果没有统一的规范的话,在程序后期的维护时,会相当的痛苦;以下是一些约定俗成的一些变量命名的规范:
1.变量名的第一个字符必须是:字母、下划线、汉字或@符号(注意不能以数字开头);
2.其后的字符可以字母、数字、下划线或汉字;
3.变量名不能和c#中的关键字重名(像int、double、if、using等都是),如果实在要重名的话,可以在重名关键字的前面加一个其他的字符用于区分;
4.尽量取有意义的名称,可以表示变量的作用的名字;
5.简单类型变量,采用帕斯卡命名法(PascalCase),即首字母大写,随后的单词的首字母也都是大写;
注:c#的变量名是区分大小写的。这点一定要注意,即使名称相同,大小写不同,表示的也是不同的变量;
5.变量的赋值
变量可以在定义过后赋值,也可以在声明的时候直接的赋值;
eg:
{
int age;
age = 20;
}
{
int age = 20;
}
以上两个赋值的方式效果都差不多,看具体的场合采用不同的初始化方法;(变量在使用前,必须初始化,因为空的盒子是不能被使用的);
还可以同时为多个变量赋值
eg:
1.{
int a = 3,b =4 ,c =5;
}
2.{
int a,b,c;
a = b= c = 3;//abc值都被赋值成了3
}
3、表达式及其用法
1.什么是表达式
c#中的表达式是利用运算符和操作数所建立的,这个表达式有点像数学计算中的表达式,而说到数学中的表达式,就肯定要牵涉到运算符和操作数。C#中同样也涉及到各种各样的运算符。
2.表达式中的运算符
可以分为一元、二元和三元,它们分别代表1、2和3个操作数。其中二元占多数,三元的只有一个。下表列出了c#中所有的数学运算符,这个不用刻意的记忆,它就是来自数学中运算符,只是书写形式变了而已;
数学运算符
运算符 类别 结果 + 二元 和 - 二元 差 * 二元 积 / 二元 商 % 二元 取余数 + 一元 表示整数 - 一元 表示负数 表示整数的”+“在代码中是可以忽略的,就像在数学中一样;
自增运算符
其中”a=3,b=4;”
运算符 类别 示例 结果 ++ 一元 b=a++; a = 4,b = 3; -- 一元 b = a--; a = 2,b = 3; ++ 一元 b = ++a; a = 4,b = 4; -- 一元 b = --a; a= 2,b = 2; 其中的规律是:++或--的符号在操作数的左边的话,就先把值赋给表达式,然后操作数才自增1;反之操作数先自增1,然后再赋值;
赋值运算符
运算符 示例 结果 = a = b; b的值赋给a += a+=b; a,b的和给a -= a-=b; a,b的差给a *= a*=b; a,b的积给a /= a/=b; a,b的商给a %= a%=b; a,b的余数给a
3.运算符的优先级
数学中运算也存在诸如”先算乘除,后算加减,括号中的要最先算“这样的计算优先级问题,所以这里的表达式自然也少不了;
我们可以类比与数学中的运算符优先级来记忆这里的优先级;
”++,--(用于前缀),+,-(表示正负的)“它们优先级是最高的,不言而喻;
”()“括号的优先级最高可以改变原本的优先级顺序;
”*,/,%“它们是统一级别的高于”+,-“;
”=,+=,-=,*=,/=,%=“运算符优先级低于”+,-“;
“++,--(用于后缀)”它们最低,因为它们不对表达式的结果产生任何的影响,支持改变的了操作数的值;
以上的优先级,还是及其的符合我们正常的思维逻辑的,在创建某一表达式的时候,如果实在记不住,这些优先级。就使用”()“一层层的嵌套,这样虽然麻烦,但却行之有效;