3.基础语法(变量,字符转义和注释)
今天来看看一些基础C#语法,也许对你有所帮助吧!
一.变量
/* 1. 软件如果需要处理数据的话,那么这个数据是需要被存储在内存中.
* 数据如何存在在内存中?
* 在内存中开辟1块指定类型的空间.将这个数据存储到这个空间中就可以.
* 空间的类型一旦指定. 那么这个空间中就只能存储这类型的数据.
*
* 2. 变量: 声明1个变量其实就是在内存中开辟1块指定的类型的空间 用来存储数据.
* 需要注意:
* a. 一定要指定这个变量的类型.
* b. 变量的类型一旦指定以后,那么这个变量中就只能存储这个类型的数据.
*
*
* 3. 声明变量.
* 语法:
* 变量的类型 变量的名称;
* int num;
* 当CPU执行到这句话的时候, 会在内存中开辟1块int类型的空间. 这个空间的名字叫做num
* 因为这个空间的类型是int类型的,所以其中只能存储int类型的数据.
* 注意
* a. 变量的名称一定要独一无二.
* b. 同1个变量是不允许重复定义的.
*
* 4. 为变量所代表的空间中存储数据: 为变量赋值
* 语法:
* 变量的名称=数据;
* num = 12;
* 将12这个数据 存储到 num变量所代表的空间中去.
* =号是赋值符号,它的意义是 将右边的数据存储到左边的变量所代表的空间中去.
* 所以: 赋值符号右边的数据的类型一定要和左边的变量的类型一致.
*
* 5. 使用变量的值.
* 只需要在使用变量的值的地方 直接写上变量的名称就可以了.
* a. 注意细节:
* 1). 变量一定要先声明以后才可以使用. 编译器的提示:当前上下文中不存在名称"xx"
* 2). 变量在使用之前,必须要保证这个变量中已经有值. 提示:使用了未赋值的局部变量"xx"
* 3). 在使用变量的名称的时候 变量的名称不要加双引号 因为加了双引号 就是1个字符串了.
*
* 6. 数据类型:
* a. 在内存中开辟空间大小的模板. 这些模板规定了空间开辟多大 已经可以存储什么样的数据.
* 常见的数据类型:
* 数值类型: 可以存储数字
* 整型: 不带小数点的数字
* long int short byte
* 相同点: 都可以存储整型的数据
* 不同点: 能够存储的整型的数据的范围不同
* long的范围最大. 尽管是最大的 也有范围 不是任意的整型都可以存储.超过范围就不能存储.
* 取得数据类型的范围: 数据类型.MinValue 得到这个数据类型的最小值 数据类型.MaxValue得到这个数据类型的最大值.
* int的范围比long小. -21e +21e 之间
* short的范围比int小. -32768 +32767
* byte的范围比short 0-255
* 浮点型: 带小数点的数字
* decimal double float
* 相同点: 都可以存储带小数点的数字.
* 不同点: 他们各自的精度不同.
* decimal 精度最高 高精度 一般情况下用于表示金钱.
* double 双精度 精度比decimal要低
* float: 单精度 精度最小.
* 注意的细节:
* a. 当我们写1个小数常量的时候. 这个小数的类型默认是double类型的.
* 如果要让它成为1个decimal类型的数据 那么在后面加上m money
* 如果要让它成为1个float类型的数据 那么在后面加上f
* b. 精度最大的是decimal 范围最大的是double.
*
* 非数值类型:
* char: 字符. 单个字符 并且要用单引号引起来才可以. 只能是1个字符 多个或者0个是不行的 空格也是1个字符
* string: 字符串 由多个字符组合起来的 用双引号引起来. 可以由1个或者0个.
*
* 7. 在声明变量的同时就为这个变量赋值.
* 语法: 数据类型 变量的名称=要为变量赋的值;
* int num = 12; 声明1个int类型的变量并将12赋值给它.
* 注意: 为其赋值的时候 仍然要注意数据的类型和变量的类型一致.
*
*
* 8. 同时声明多个相同类型的变量.
* 语法: 数据类型 变量名1,变量名2,变量名3;
* int i1, i2, i3; 表示声明了3个变量i1 i2 i3 他们的类型都是int类型的.
*
*
* 9. 变量中的存储的数据是可以更改的.
* 重新的为这个变量赋值就可以了.
* int num = 12;// 声明1个变量int类型的 叫做num 并赋值12.\
* num = 10;
*
* a. 变量有1个特点: 1个变量中只能存储1个值.
* b. 当我们为变量赋值的时候. 如果变量中已经有值了 那么新值会将老值覆盖掉.
* 喜新厌旧.
*
*
* 10. 变量的命名规则
* 规则相当于现实生活中的法律. 一旦不遵守 就要付出代价.
* a. 变量的名称只能以任意的字母、下划线、@符号开头. 特表强调不能以数字开头.
* b. 后面可以跟任意的字母、下划线、数字. 其他的是不能跟的
* c. 有一些英文单词在C#中代表特殊的意义,关键字. 那么我们不能使用这些关键字来作为变量的名称.
* 在VS中标注为蓝色的单词 就是我们系统中的关键字 无法使用它们作为我们的变量的名称.
* d. 变量的名称是区分大小写的.
* e. 同1个变量名 不允许重复定义. 与变量的类型是没有关系的
*
*
* 变量的命名规范: 相当于现实世界中的道德 可以不遵守 但是你会收到良心的谴责.
* a. 变量的名字一定要取得有意义. 这个变量存储什么样的数据就用这个名称来表示.
* 会英文就用英文单词 不会应英文就拼音.
* b. 变量的名称如果是1个单词组成的. 那么就全部小写.
* 如果是由多个英文单词组成的? 那么第1个单词的全部小写.其他的单词的首字母大写.
* c. 如果使用到的是英文单词的缩写 那么全部大写.
* e. 如果某个单词在英文语法首字母必须要大写 那么我们在前面加下划线就可以
* string _China;
*
*
* 11. 赋值运算符: =
* 注意: 右边的数据的类型 要和 左边的变量的类型一致.
*
* 赋值表达式:
* 通过赋值符号位左边赋值的时候 右边的数据可以是1个变量
* int i1=12;
* int i2 = i1;//代表将i1的值赋值给i2;
*
* 变量之间的赋值:
* 将源变量的值拷贝1份,将这个副本赋值给目标变量.
* int i1 = 12;
* int i2 = i1; 将i1变量的值拷贝1份. 把这个拷贝赋值给i2 所以i1的值仍然是12
*
*
* 为变量赋值的时候:
* a. 可以直接给1个数据
* b. 也可以给变量的值.
* c. 还可以给1个表达式.
* 如果赋值的时候 右边是1个表达式, 那么先将这个表达式的结果算出来,再把结果赋值给左边的变量.
*
*
* 12. 字符串的连接.
* + 加号.
* 表达式: 最大的特点在于它有1个结果. 要求程序员必须处理这个结果才可以.
* 我们不能光秃秃的写1个表达式.因为表达式都是有结果的.要求程序员必须处理这个结果才可以.
* 处理表达的结果
* a. 直接将表达式的结果通过Console.WriteLine()打印 会将表达式的结果先计算出来 再打印结果.
* b. 使用1个变量将这个表达式的结果存储起来.
* +号的作用:
* a.代表数学意义上的求和.
* 当+号两边的数据的类型都是数值类型的时候,此时+号代表求和运算.
*
* b.用于连接字符串.
* 当+号的任意1边的数据类型是字符串的时候,这个时候+号代表字符串的连接 将两边的数据连接起来组成1个新的字符串.
* 如果在遇到连续运算的时候. 从左到右依次的计算 并不是一次性的计算完毕.
* 13. 数据用什么类型的变量来保存:
a. 那么要看这个数据的可能的取值是什么.
1)如果这个数据的取值不是数值类型的. 那么就使用非数值类型来存储.
char 如果取值只有单个字符 那么使用char
string 如果数据的值由多个字符组成的 那么就使用string
2).如果这个数据的取值 看起来 数数值类型的.
如果这个数据要参与算数运算或者比较运算 那么就用数值类型来存储.
又看数据的可能的取值是否只是整数 如果是 那么就使用整型存储
这个数据是带小数点的数据.
如果是表示金钱的 decimal
如果不是表示金钱绝大多数情况下直接使用double
如果这个数据不需要参与算数运算或者比较运算 那么使用字符串存储就可以.
注意:
1. 当交换变量的值.
* a. 声明1个第3方临时变量 用来交换他们的值.
* 转圈:
*
* 这种方式交换变量的值 适合于任意的类型来交换.
string s1 = "小明";
string s2 = "小东";
string temp = s1;
s1 = s2;
s2 = temp
*
* b. 如果是数值类型的变量交换.
* 两两相加再相减.
*/
int num1 = 12;
int num2 = 10;
num1 = num1 + num2;//22
num2 = num1 - num2;//12
num1 = num1 - num2;//10
三.接收用户输入的值
/* 1. 变量的值不希望在写代码的时候写死,而是希望他们的值在程序运行的时候由用户输入进来.
*
* 2. Console.ReadLine();
* 当CPU执行到这句代码的时候 程序会暂停. 当用户按下回车键的时候就会继续往下执行.
* 与Console.ReadKey()的区别
* 相同点: 都可以让程序暂停.
* 不同点: Console.ReadLine()只有按下回车的时候才会继续往下运行 Console.ReadKey()按任意键就会往下执行.
*
* Console.ReadLine(); 当执行到这句代码的时候 程序会暂停 并在用户按下回车键的时候继续往下执行.
* 当用户按下回车键的时候. 它会将用户在回车键之前输入的内容以字符串的形式 返回给程序.
*
* 在代码中我们只需要定义1个字符串类型的变量来接收这句代码的结果就可以了.
* string input = Console.ReadLine(); //"jack"
* 当执行这句话的时候. 程序会暂停 等待用户的输入 当用户输入完毕之后 按下回车键. 就会把用户输入的内容以字符串的形式赋值给input变量.
*
*
* 3. 注意的细节
* a. Console.ReadLine()这句代码接收用户的输入, 一定要用1个字符串的变量来接收输入
* b. 无论用户在控制台输入什么内容.都是以字符串的形式返回给程序的.
*
*
* 4. 代码段.
* cw 按两下tab键 就会自动打印代码 Console.WriteLine(); 快捷键
*
*/
四.字符串的转义
/* 1. 在字符串中 双引号 代表特殊的意义. 不代表字符串的双引号.
* 双引号在字符串中代表字符串的开始和结束. 并不代表字符串的双引号.
*
* 2. 使用转义符 \ 改变后面的字符的原本意义.
* \" 本来引号是代表字符串的开始和结束
* 但是他的前面有1个转义符(\) 转衣符号把"的原本意义改变了
* 这个时候"不代表字符串的开始和结束,而代表字符串的引号
*
* \n 代表换行.
* \r\n 回车换行.
* \b 删除前面的字符.
* \t 代表1个制表符. Tab按键. 制表符是由多个空格组成的.
* \\ 代表1个字符串的\
*
* 3. 在字符串的前面 引号的外面 加1个@符号.代表这个字符串中斜杠(\)不是转义符 而是字符串的斜杠.
*
*
*/
五.字符串的格式化{0}填坑原则
/* 1. 使用占位符在cw的时候来拼接字符串.
* a. 在字符串中挖坑 先把字符串写好,在需要拼接变量的值得地方,使用大括弧占坑并编号.
* b. 填坑: 在字符串的后面 挨个的写上填在没1个坑中的变量 并使用逗号分隔.
* 如何填的.后面的第0个变量就会去填编号为0的坑 后面的第1个变量就会去填编号为1的坑
* 后面的第n个变量就会去填编号为n的坑
*
*
* 2. 后面的填坑的变量要么1个都不给 要么就要给全.
* 如果要给的话,后面的变量的个数应该是 坑的最大编号+1
*
* 3. 在挖坑的时候, 坑的号码你可以随意的编. 但是填坑的变量的个数要是 最大的坑编号+1
* 坑的编号也可以相同,.
*
* 4. 一般情况下我们使用坑
* 编号从0开始 依次的递增. 在后面用变量来依次的填坑,
例如:
/* 1. 使用占位符在cw的时候来拼接字符串.
* a. 在字符串中挖坑 先把字符串写好,在需要拼接变量的值得地方,使用大括弧占坑并编号.
* b. 填坑: 在字符串的后面 挨个的写上填在没1个坑中的变量 并使用逗号分隔.
* 如何填的.后面的第0个变量就会去填编号为0的坑 后面的第1个变量就会去填编号为1的坑
* 后面的第n个变量就会去填编号为n的坑
*
*
* 2. 后面的填坑的变量要么1个都不给 要么就要给全.
* 如果要给的话,后面的变量的个数应该是 坑的最大编号+1
*
* 3. 在挖坑的时候, 坑的号码你可以随意的编. 但是填坑的变量的个数要是 最大的坑编号+1
* 坑的编号也可以相同,.
*
* 4. 一般情况下我们使用坑
* 编号从0开始 依次的递增. 在后面用变量来依次的填坑,
/* 1. 使用占位符在cw的时候来拼接字符串.
* a. 在字符串中挖坑 先把字符串写好,在需要拼接变量的值得地方,使用大括弧占坑并编号.
* b. 填坑: 在字符串的后面 挨个的写上填在没1个坑中的变量 并使用逗号分隔.
* 如何填的.后面的第0个变量就会去填编号为0的坑 后面的第1个变量就会去填编号为1的坑
* 后面的第n个变量就会去填编号为n的坑
*
*
* 2. 后面的填坑的变量要么1个都不给 要么就要给全.
* 如果要给的话,后面的变量的个数应该是 坑的最大编号+1
*
* 3. 在挖坑的时候, 坑的号码你可以随意的编. 但是填坑的变量的个数要是 最大的坑编号+1
* 坑的编号也可以相同,.
*
* 4. 一般情况下我们使用坑
* 编号从0开始 依次的递增. 在后面用变量来依次的填坑,
例如:
/* 1. 使用占位符在cw的时候来拼接字符串.
* a. 在字符串中挖坑 先把字符串写好,在需要拼接变量的值得地方,使用大括弧占坑并编号.
* b. 填坑: 在字符串的后面 挨个的写上填在没1个坑中的变量 并使用逗号分隔.
* 如何填的.后面的第0个变量就会去填编号为0的坑 后面的第1个变量就会去填编号为1的坑
* 后面的第n个变量就会去填编号为n的坑
*
*
* 2. 后面的填坑的变量要么1个都不给 要么就要给全.
* 如果要给的话,后面的变量的个数应该是 坑的最大编号+1
*
* 3. 在挖坑的时候, 坑的号码你可以随意的编. 但是填坑的变量的个数要是 最大的坑编号+1
* 坑的编号也可以相同,.
*
* 4. 一般情况下我们使用坑
* 编号从0开始 依次的递增. 在后面用变量来依次的填坑,
例如
string name = "jack";
int age = 19;
char gender = '男';
string phoneNumber = "18666666666766666";
Console.WriteLine("大家好,我叫"+name+",我的年龄是"+age+",我的性别是"+gender+",我的电话号"+phoneNumber);
Console.WriteLine("大家好,我叫{0},我的年龄是{1},我的性别是{2},我的电话号码{3}",name,age,gender,phoneNumber);
Console.ReadKey();
六.文档的注释
/* 1. 注释: 对代码的注解. 对代码的解释.
* 注释是给谁看的? 程序员.
*
* 注释的内容 编译器在编译的时候 忽略掉注释的内容.
*
* 2. 单行注释.
* // 这1行的后面的内容会被当做注释.
*
* 3. 多行注释.
* 斜杠* 与 *斜杠 中的内容会被当做注释 不管有多少行.
*
* 4. 注释的快捷键.
* ctrl+k+c 注释选中行
* ctrl+k+u 取消选中行的注释.
*
* 5. 文档注释.在类的中输入///来进行注释
*
*
* 6. 在写代码的时候 一定要养成写注释的习惯.
* a. 思路更加清晰.
* b. 方便代码的阅读.
*
*/
七.算数运算符与算数表达式
1. 算术运算符.
* + - * / %(模)
*
* 2. 算术表达式.
* 由算术运算符连接起来的式子. 叫做算术表达式.
* 不能光秃秃的写1个表达式,因为表达式都有1个结果. 我们必须处理这个结果.
* 处理结果的方式有两种
* a。 直接将表达式的结果交给cw打印.
* b. 将表达式的结果通过赋值符号存储到变量中.
*
* 3. + 号.
* 在C#中代表两种意义.
* 代表字符串的连接: 当+号的任意的1边的数据的类型是string的时候 此时+号代表字符串的连接.
* 就会将两边的数据连接起来组成1个新的字符串.
* 代表算术运算中的求和运算. 当加号两边的数据的类型都是数值类型的时候 此时+号代表求和运算.
*
* 要将算术表达式的结果存储起来,那么我们必须要知道算术表达式的结果的类型.
* 因为只有知道结果的类型我们才可以定义1个对应的类型的变量来存储这个算术表达式的结果.
*
* 算术表达式的结果的类型
* 如果参与这个算术表达式的数据的类型是一致的.那么这个算术表达式的结果的类型就是这个类型.
* byte int short他们相互之间参与算术表达式的话,结果都是int类型的.
* 如果参与算术表达式的数据的类型不一致.那么这个算术表达式的结果的类型是范围最大的那个类型.
*
* 关于范围.
* a. 整型的数据: long>int>short>byte
* b. 浮点型的数据的范围一定比整型的大.
* c. 浮点型.范围最大的是 double > float > decimal
*
* 4. - 号 代表数学意义上的求差运算.
* 5. * 号 代表数学意义上的求积运算.
*
* 6. / 号 代表数学意义上的求商运算.
* 如果两个整型的数据参与求商运算 那么表达式的结果的类型也是整型的 不会有小数的.
*
* 如果就是要得到小数的结果
* a. 修改参与算术表达式的其中的1个数据的类型为浮点型.
* b. 通过乘以1.0来使其变成doubel类型的.
*
* 7. % 求模运算. 求余数.
* 10%3 结果是 10除以3的余数.
*
* 判断1个数是不是偶数.
*
*
* 8. 参与算术表达式的数据的类型只能是数值类型的数据或者char类型的数据.
* string类型的数据无法参与算术运算.
*
* 当char类型的数据参与算术表达式的时候,会先将这个char类型的数据转换为其所对应的ASCII码 然后再参与运算.
* 什么是ASCII码? 每1个字符数据都有1个对应的int类型的整数. 那么这个整数就把它叫做这个字符数据的ASCII码.
* 'a' 97
* 'A' 65
* 其他的字母的ASCII代码 增加.
*
* 在计算的时候,先将这个char类型的数据转换为其所对应的ASCII码,然后再计算.
* 虽然是1个char数据 但是实际上在算的时候已经变成了1个int类型的数据.
*
*
* a. 所有的字符数据都有1个对应的int类型的数,那么这个int类型的数就叫做这个字符数据的ASCII码.
* b. 字符数据是可以参与算术运算的.先取到这个字符数据的ASCII码,然后使用这个int类型的ASCII码来参与运算.
* c. char c = 'A'; int res = c+1; 看起来是char和int在参与运算 实际上是int和int参与运算
*
*
*
* 9. 运算时有优先级的.
* 先乘除 后加减. 有括弧的先算括弧中的.
* 如果是同级别的话 那么从左到右依次的计算.
*
* 在C#的算术表达式中仍然是 先乘除 后加减. 如果是同级别的话 那么从左到右依次的计算.
* 可以使用小括弧来改变优先级.
* 小括弧一定要成对的出现.
*
* 10.decimal类型的数据不能与其他的浮点型数据参与算术运算.
* why? 因为会丢失精度.
* 但是decimal类型的数据是可以和整型的数据参与算术运算的 因为不会丢失精度
*
好了各位,今天的复习就这样吧,也许字有点多,如果觉得不太懂可以去我博客相册看看今天的图片也许能对你有所帮助,祝你好运!