目录
一.程序语言是什么
通过程序语言,让计算机响应我们发出的指令.
二.IDE是什么
集成开发环境.它是一类用于程序开发的软件,这一类软件一般包括了代码编辑器,编译器,调试器,图形用户界面等等工具,只要安装了这种软件我们就可以进行程序开发了.
三.AP应用程序接口
是一些预先定义的代码逻辑.用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节.
四.控制台输入输出
Console.WriteLine();//输出一行
Console.Write();//输出,不换行
Console.ReadLine();//输入,按回车结束,不传参数
Console.ReadKey();//输入,只要按下键盘,则认为输入结束,不需要参数
五.变量
1.折叠代码
#region NAME
可以在输入#region后按Tab,自动补全
#endregion
本质是编辑器提供的预处理指令,程序发布时会被自动删除
2.变量申明
使用变量前要申明
格式:
类型 名字 = 值;
int i = 1;
3.变量类型
变量表示的数据范围参考C#中各种数据类型可以表示的数据的范围
①有符号整型
能存储一定范围类的正负,包括0的整型.
范围:
sbyte -128~127
int -21亿~21亿多
short -32768~32767
long -9百万兆~9百万兆
②无符号整型
存储一定范围0~正上限
byte 0~255
uint 0~42亿多
ushort 0~65535
ulong 0~18百万兆
③浮点
float 7~8位有效数字,从非零数开始数,超出部分会四舍五入.因编译器不同而有区别.末尾要加f
例:float f = 0.1f;
double 15~17位有效数字,类似float规则,但精度不同.末尾不加f,默认小数就是double类型
decimal 27~28位有效数字,少用.末尾加m.
④特殊
bool true false
char 存储单个字符,单引号
char a = 'A';//正确
char b = 'asd';//错误
string 存储字符串类型(多个字符),双引号
string str = "asdasdasdasd";
4.为什么有这么多变量类型
不同的变量,存储范围和类型不同.本质是占用空间不同,占的内存空间小则范围小.
常用int , float , string , bool
5.多个同类型变量同时申明
int i,j,k,l;
float a =1.0f,b = 2.2f;
变量申明后是有默认值的,但变量使用前尽量赋值
六.变量的本质
1.变量的存储空间
用sizeof()获得变量类型所占的内存空间,单位字节
int sbyteSize = sizeof(sbyte);
int intSize = sizeof(int);
int string = sizeof(string);//错误写法!
但不能这样获得string所占空间,string的长度是可变的!
考点:
1.不同类型占字节大小
2.char在c#中占两个字节
2.变量的本质
计算机中所有数据的本质都是二进制,01.计算机中存储单位最小位bit(位),它只能表示0or1.
为了方便数据表示,出现了byte(字节)单位,由8个bit组成,即一个字节为八位.1byte = 0000 0000.
3.十进制与二进制转换
10->2:短除法,倒读.
2->10:例:101 = 1 * 2(2次)+0*2(1次)+1*2(0次) = 5
所以对于byte 1111 1111 (2)= 255.
但sbyte的第一位用来表示符号.
七.变量命名规范
1.不能重名 2.不能数字开头 3.不能用程序关键字 4.不能有特殊字符(_可以)
常用命名规则:
-驼峰命名,第一个字母小写,常用于变量.
-帕斯卡命名:字母首写都大写,常用函数,类.
区分大小写.
八.常量
关键字const.
int i =10;//变量
public const int j =20;//常量
statci const int k = 2;//错误!不能static 和 const搭配用
常量特点:1.必须要初始化. 2.不能被修改
作用:申明一些常用的不变的量,例如PI.
九.转义字符
转义字符是字符串的一部分,用来表示一些特殊含义的字符.例如在字符中表现单引号,引号,空行等.
固定写法: \+字符
string str = "\'哈哈哈'\";会把单引号作为字符串打印
str = "\"哈哈哈"\";//会把双引号作为字符串打印
str = "123\n456";//\n换行
str = "123\\456";//打印123\456
计算机路径要用到\.
不常用的转义字符:
string str = "hhhh\thh";//\t,空一个tab键
str = "123\b456";//打印12456,往前退一格,把3覆盖了
str = "123\0345";//空字符,无用
str = "\a";//发出警报音
取消转义字符
string i = "hhhhh";//不报错
i = "hhh\\hh";//不报错并且输出有\
i = "hhh\hh";//报错
//取消转义字符
i = @"hhh\hh";//不报错,并且打印出\,@相当于取消识别转义字符
十.类型转换-隐式转换
1.隐式转换:
不同类型之间自动转换,小范围转大范围,大范围装小范围
-相同大类型之间转换:
//装载关系: long->int->short->sbyte
int i = 1;
long L = 1;
L = i;//可以
i = L;//不可以,因为int范围没long大
//同理
//装载关系: ulong->uint->ushort->byte
-对于浮点数,decimal不能转float,double.float可以转double.
-特殊类型bool,char,string不存在隐式转换.
-不同大类型之间转换:
-无符号不能隐式转换有符号,因为有符号可能为负数.ulong = sbyte不可以.
有符号不能隐式转换无符号范围超出的数,如byte可以转int,但ulong不能转int.int = byte可以.
-浮点数可以装载任何类型整数,即浮点数可以被赋值为任何整型数!即使是long,ulong,因为超出有效数字位数会用科学计数法表示.如float = long可以
整数不能隐式转换浮点数,如int = float不可以
-char不能隐式转换存整型,但char可以隐式转换被整型浮点型存,即char可以隐式转换成整型和浮点型.
-string不能和其他类型隐式转换.
-bool不能和其他类型隐式转换.
总结(右可以转成左):
double->float->整型->char
decimal->整型->char
string,bool不参与隐式转换
十一.显示转换
手动处理,强制转换,可以将高精度转为地精度.
1.括号法
int i = 1;
long j = 1;
i = j;//错误
i = (int)j;//正确的显示转换
整型强转时要注意范围,若超出范围强转,虽然不会报错,但值会偏离预想.
double转float会精度变化.
浮点强转整型,会把小数抹去,不会四舍五入.
bool,string不支持显示转换.
2.parse法
作用:把字符串转换为对应类型
int i = int.Parse("123");
i = int.Parse("123.3");//报错,因为float不能隐式转换int
i = int.Parse("9999999999999999999");//报错,超出int范围
3.convert法
更准确第将各个类型相互转换.
int i = Convert.ToInt32("12");
i = Convert.ToInt32("12.12");//报错
i = Convert.ToInt32(1.6f);//不会报错并且可以四舍五入
i = Convert.ToInt32(true);//可以
i = Convert.ToInt32('A');//可以
short -> ToInt16
long -> ToInt64
float -> ToSingle
bool -> ToBoolean
4.其他类型转string
变量.tostring();
string i = 1.ToString();
i = 'A'.ToString();
十二.异常捕获
如果出现异常,程序会报错,用异常捕获可以避免异常时程序卡死.
int i = int.Parse("123.213");//报错,程序卡死
使用异常捕获:
//基本架构不需要分号
//必备部分
try
{
//可能出错的部分,如果出错会执行catch
}
catch//catch后面还可以带参(Exception e)
{
}
//可选部分
finally
{
//不管有没有出错,都会执行这里
}
try
{
int i = int.Parse(Console.ReadLine());//可嫩出现输入不合法的问题
}
catch
{
Console.WriteLine("输入不合法");
}
十三.算术运算符
int i = 10;//赋值符号,先看等号右边运算
//算术运算符
int i = 2;
i = i + 1;//+
i = 1 + i + 90;//连续运算,右边依次计算
int j = 1+2;//初始化时运算
//减号-乘号*与上同理
//除号/不要除0,若用int去除,则结果会小数点丢失!
int j = 1;
j = j /2;//结果为0
//取余%,返回余数
-优先级:
先乘除取余,后加减;同级从左到右.
括号可以改变优先级.多组括号由内到外.
-复合运算符
+=,-=等
-自增减
++,--
a++;//先用再加,++a;//先加在用.
十四.字符串拼接
只有加号+,+=!++不行
string i = "123";
i +="456";//这里的加号不是数学运算,而是字符串拼接
i = i+1;//这里也是字符串拼接
i += "1"+5+true;//均为字符串拼接,这些其他类型变量会自动调用tostring方法
i+=1+2+3;//注意,这里的右边不会拼接,而是把6进行拼接,关键看第一个运算的是什么
i+=""+1+2+3;//这里就是字符串拼接
i = 1+2+""+3+4;//则会前两个相加,后两个拼接,打印334
i = 1+2+""+(3+4);//打印37
//拼接方式2.需要占位符
string.Format("待拼接",拼接1,拼接2...);
string.Format("{0}年,{1}月,{2}日",2077,1,1);//记得用一个string变量存起来
//控制台打印,与format相似
Console.WriteLine("{0}年,{1}月,{2}日",2077,1,1);
//可以多填内容如2077,1,1,1,1(超出占位符个数),但不能少填
十五.条件运算符
//> < == >= <= != 结果返回bool
//条件运算符优先级低于算术运算符
2+3<3+5// < 在 + 后运算
不能进行范围比较,如2<a<9!
//不同数值类型,可以随便比较
int i = 10;
float k = 1.0f;
//可以比较
//char,string,bool只能同类型==,!=比较
//但char可以和数值比较
十六.逻辑运算符
对bool进行逻辑判断,逻辑运算优先级低于条件运算
//与 &&
//有假则假,同真为真
bool res = true && true;//true
res = false && true;//false
//或 ||
//有真为真,同假则假
res = false || true;//true
//非 ! , 优先级高于条件运算符
res = !true;//false
!优先级最高,&&高于||
-短路规则
int i = 3;
bool res = i>0 ||++i>=1;//输出i还是为3,因为第一项为真,就不会在进行后面了
res = i<0 && ++i>=1;//输出i还是3,第一个为假则不会进行后面
十七.位运算符
先把数值转换为二进制,再进行位运算.
//位与 &
//连接两个数值进行计算,先将数值转换为2进制
//对位运算,有0则0
int a = 1;//001
int b = 5;//101
int c = a & b;//001(2) => 1(10)
a = 3; //00011
b = 19;//10011
c = a&b;//00011 => 3
//若多与运算,没有括号就从左到右
a = 1; //00001
b = 5; //00101
int d = 19;//10011
c = a&b&d;//00001 => 1
//位或 |
//对位运算,有1则1
int a = 1;//001
int b = 3;//011
int c = a|b;//011=>3
//异或 ^
//对位运算,相同为0,不同为1
int a =1;//001
int b =5;//101
int c = a^b;//100=>4
//位取反~
//写在数值前
//对位运算,0->1,1->0
int a=5;//101
//过程,int为32位
//实际上5为
//0000 0000 0000 0000 0000 0000 0000 0101
//~
//1111 1111 1111 1111 1111 1111 1111 1010
//反码补码的知识,以上内容为-6
int c =~a;//-6
//左移<< 右移>>
int a =5;//101
c = a<<5;//10100000 -> 160
c = a>>2;//1->1(相当于往右边挤掉)
十八.三目运算符
基本语法: a?b:c,其中a为bool,b为atrue的返回内容,c为afalse的返回内容.bc返回内容要同类型.
string str = true?"true":"false";
十九.if语句
//从上往下,满足了一个,其他的都不会执行了
if(true)
{
//满足条件会运行
}
else if(填另一个条件)
{
}
else
{
}
二十.switch语句
int a = 1;
switch (a)//case条件为 ==
{
case 1://case条件为常量
//满足的执行语句可以写无数句
break;//跳出switch
case 2:
break;
//贯穿,满足3,4执行的内容是一样的
case 3:
case 4:
//3,4执行相同的逻辑
break;
default:
//以上case均不满足时
break;
}
default可以不要.
二十一.while
while(true)//满足while的条件则会执行,每次循环会判断是否满足while条件
{
}
流程控制关键字:
作用:跳出循环逻辑,跟if无关,不是跳出逻辑判断,而是循环.
与switch的break不一样,这个break不能打断循环.但在之间写continue能打断switch.
while(true)
{
break;//跳出while,跳出循环
}
while(true)
{
continue;//跳出当层循环,继续下一次循环
}
二十二.do while
do
{
//先执行一次,再看是否满足while条件
//若加一句continue,则会之间跳到while判断,而不是跳到do
}while(true);//注意有分号
二十三.for
for(;;;)//可以这样写,只写三个分号,不填条件,但一定要把空位留着,当前是死循环
{
//第一个空:初始表达式,进行一次,可以有多个
//第二个空:进行循环的条件,可以有多个
//第三个空:自增减,可以有多个
}
参考资料<唐老狮C#教程>