c # 基础入门
(纯小白的学习记录)
变量
常量
转义字符
类型转换
异常捕获
算术运算符
条件分支语句
显示转换
数据变量类型
数组
值类型和引用类型
特殊的引用类型
变量
一、变量
1.变量的类型
有符号 所占字节数(字节数越大,范围越大)
sbyte(-128~127) 1
int(-21亿多~21亿多) 4
short(-3万多~3万多) 2
long (-9百万兆多~9百万兆多) 8
无符号 ----不能装负数
byte (0~255) 1
uint (0~42亿多) 4
ushort (0~6万多) 2
ulong (0~18百万兆多) 8
浮点数
float (7~8位有效数字) 4
double (15~17位有效数字) 8
decimal (27~28位有效数字) 16
特殊
bool (true 和false) 1
char (一个字符) 2
string (一串字符) 【该字符串较为特殊,范围可变】
2.变量的储存空间
1byte = 8bit
1MB = 1024 byte
1GB = 1024MB
1TB = 1024 GB
通过sizeof 方法 可以获取变量类型所占的内存空间(单位:字节)
(sizeof 是不能得到string 类型所占的内存大小的,因为string字符串的长度是可变的)
int sbyteSize= sizeof (sbyte);
Console.WriteLine("sbyte 所占的字节数为:” +sbyteSize);
3.变量的本质是2进制
计算机中所有数据的本质都是二进制,实际上是一堆0和1
数据传递只能通过电信号,只有开和关两种,所以就用0和1 表示这两种状态
1bit就是一个数,要不是0要不是1,为了表示数据方便,出现一个叫bite(字节)的单位,它是由8个bit组成的存储单位,所以我们一般说一个字节为8位
4.变量的命名规范
规则
1.不能重名
2.不能以数字开头
3.不能使用程序关键字命名
4.不能有特殊符号,下划线除外
*建议的命名规则 变量名要有含义,用英文表示变量的作用 ,尽量不用汉字
*命名法
驼峰命名法 (变量)
首字母小写,之后单词首字母大写,相当于间隔的作用
帕斯卡命名法 (函数,类)
所有字母都大写
常量
二、常量
1.常量的申明
关键字 const
const 变量类型 变量名 = 初始值
常量的申明 const int i2 = 20;
变量的申明 int i = 10;
2.常量的特点
//变量的申明可以不初始化
string name;
//之后可以修改
name = “123”;
name = “345”;
3.常量的申明必须初始化,且不能被修改
const string myName = “肖战”;
//常量的作用,申明一些常用的不变的量
转义字符
三、 转义字符
定义 它是字符串的一部分,用来表示一些特殊含义的 字符,如在字符串中表现单引号双引号 空行等等
1.固定写法 \字符
不同的 \和字符的组合,表示不同的含义
2.转义字符,举例单引号
string str = "\'哈哈哈\'";
Console.WriteLine(str);
单引号 ’
双引号 "
换 行 \n
斜杠 \ (计算机文件路径 是要用到 \ 符号的)不常用的转义字符 制表符 tab键,快速空四格 \t 光标退格 \b 空字符 \0 警报音 \a
4.取消转义字符
string str2 = @"哈哈\哈哈”;
Console.WriteLine(str2);
本来\是不能在该字符串中体现,但是现在加了@,打印出后就是 哈哈\哈哈
类型转换
四、类型转换(不用变量类型间的转换)
//隐式转换----不同类型间的自动转换
大范围装小范围
//1.相同大类型之间的转换
//有符号 long int short sbyte(范围一次减小)
long l = 1;
int i = 1;
short s = 1;
sbyte sb = 1;
l = i ;
//隐式转换int 转换成了long,可用大范围装小范围, i= l 就不能实现
-
decimal 这个类型 没有办法用隐式转换去存储float 和double,但是可以隐式存储整形(有符号和无符号);特殊类型(bool char string)之间不存在隐式转换
//2.不同大类型之间的转换 *无符号和有符号之间 (1)无符号装有符号(不能实现) //有符号的变量是不能隐式转换成 无符号的 (2)有符号装无符号(可以) // 只要有符号的变量 都在无符号变量的范围内 *浮点数 可以装任何类型 整数的 *整数 不能装浮点数 *特殊类型 和其他类型之间 //bool没有办法和其他类型相互转化 ;char 没办法隐式储存其他类型的变量,但是可以隐式转换成 整形和浮点型 //char隐式转换成数值类型,对应的数字其实是一个ASCII码(百度搜),计算机里存储二进制,字符中文英文标点符号在计算机中其实都是一个数字,一个字符对应一个数字,ASCII码就是一种对应关系
总结 double–>float—>整数(有符号,无符号)---->char
decimal ---->整数(有符号,无符号)---->char
string 和bool 不参与隐式转换规则
异常捕获
五、异常捕获
//异常捕获作用
//将玩家输入的内容存储 string 类型的变量(容器)中
string str = Console.ReadLine() ;
//Parse转字符串 为 数值类型时 必须要合法合规
int i = int.Parse(str);
//通过对异常捕获的学习,可以避免当代码报错时,造成程序卡死的情况
//必备部分
try
{
//希望进行异常捕获的代码块
//如果try中的代码 报错了不会让程序卡死
}
catch
{
//如果出错了 会执行 catch中的代码 来捕获异常
//catch(Exception e )具体报错跟踪 通过e得到 具体的错误信息
}
//可选部分
finally
{
//最后执行的代码 不管有没有出错 都会执行其中的代码
// 目前可以不用
}
// try
//{
// string str = Console.ReadLine();
// int i = int. Parse(str);
// Console.WriteLine(i);
//}
//catch
//{
// Console.WriteLine("请输入合法数字");
//}
//注意 异常捕获代码基本结构中 不需要加 ; 在里面写代码逻辑的时候 每句代码才要加 分号
算术运算符
六、算术运算符
1.赋值符号
//=
//先看右侧 再看左侧 把右侧的值赋给左侧的变量
2.算术运算符
// +
(1) 用自己计算 先算右侧结果 再赋值给左侧变量
int i = 1;
i = i +2;
(2)连续运算
(3)初始化就运算 先算右侧结果 再赋值给左侧变量
int i2 = 1+2+3;
Console.WriteLine(i2);
// 除法
int chu = 1;
chu = 10 / chu;
Console.WriteLine(chu);
默认的整数 是int类型 如果用来做除法运算 会丢失小数点后的小数
如果想用浮点数来存储 一定是 在运算的时有浮点数的特征
chu = 1;
chu = 1 / 2;
Console.WriteLine(chu);
float f = 1 / 2f;
Console.WriteLine(f);
//取余 %
int y= 4;
y = y % 3;
Console.WriteLine(y);
3.算术运算符的优先级
先乘除后加减
4.复合运算符
//固定写法 运算符= // += -= *= %= // 复合运算符 用于 自己= 自己进行运算
int i3 = 1;
i3 += 2;// i3 = i3 + 2 ;
Console.WriteLine(i3);
//复合运算符 只能进行一种运算 不能混合
5.算数运算符的自增减
//自增运算符 让自己+1
a2 = 1;
Console.WriteLine(a2++);//先用再加 //1
//2
Console.WriteLine(++a2);//先加再用 //3
//只有加减才有自增减
6.字符串的拼接1
//之前的算术运算符只是用来数值类型变量进行数学运算的 //而string 不存在算术运算符 但是可以通过 + 号来进行字符串 的拼接
string str = "123";
str = str + "456";
Console.WriteLine(str);
str = str + 1;
Console.WriteLine(str);
复合运算符
str = "123";
str += "1" + 4 + true;
Console.WriteLine(str);
str += 1 + 2 + 3 + 4;
Console.WriteLine(str);
str += "" + 1 + 2 + 3 + 4;
Console.WriteLine(str);
str = "";
str += 1 + 2 + "" + (3 + 4);
Console.WriteLine(str);
字符串的拼接2
//固定语法
//string.Format(“待拼接的内容”,内容1,内容2,…);
//想要被拼接的内容用占位符代替 {数字} 数字:0-n,依次往后
string str2 = string.Format("我是{0},我今年{1}岁,我想要{2}", "王垚", "18", "去重庆");
Console.WriteLine(str2);
//控制台打印拼接
//后面的内容比占位符 多 不会报错,比占位符少 会报错
Console.WriteLine("A{0},B{1},C{2}"