C#入门基础知识

控制台输入输出语句

输出:

Console.WriteLine(); // 换行

Console.Write();// 不换行

输入:

可保存输入的内容

Console.ReadLine();

Console.ReadKey();

如果是ReagKey(true),不会把输入的内容显示在控制台上

char c = Console.ReadKey(true).KeyChar;

 清空:

Console.Clear();

设置控制台大小:

窗口大小、缓冲区大小

注意:

  1. 先设置窗口大小,再设置缓冲区大小
  2. 缓冲区的大小不能小于窗口的大小
  3. 窗口的大小不能大于控制台的最大尺寸

Console.SetWindowSize(100,50); //窗口大小

Console.SetBufferSize(1000,1000); //缓冲区大小

 设置光标的位置:

控制台左上角为原点0,0  右侧是X轴正方向,下方是Y轴正方向,它是一个平面二维坐标系

注意:

  1. 边界问题
  2. 横纵距离单位不同 1y = 2x 视觉上的

Console.SetCursorPosition(0,1);

设置颜色相关 

文字颜色设置:

Console.ForegroundColor = ConsoleColor.Red;

 背景颜色设置:

Console.BackgroundColor = ConsoleColor.White;

//重置背景颜色之后,需要Clear一次,才能把整个背景颜色改变

Console.Clear();

 光标显隐

Console.CursorVisible = false;

关闭控制台

Environment.Exit(0);

断点

  1. 如何打断点 F9
  2. 如何一步一步的看代码逻辑 F10
  3. 继续执行 停止一步一步的看 F5

可以通过监视窗口查看想要得到的变量值

折叠代码

只会在编辑时有用,用于折叠代码

 #region

#endregion

随机数

固定写法:

Random 随机数变量名 = new Random();

生成随机数:

Random r = new Random();

int i = r.Next(); // 生成一个非负数的随机数

Console.WriteLine(i);

i = r.Next(100); // 生成一个0~99的随机数 左边始终是0 

i = r.Next(5,100); // 生成一个 5~99的随机数,左包含 右不包含

变量

变量类型 14种 

无符号的整型变量 能存储 一定给范围 0和证书的变量类型

byte 0~255

ushort 0~65535
uint 0~42亿
ulong 0~18万兆

有符号的整形变量 能存储一定范围 正负数包括0的变量类型

sbyte -128~127

short -32768~32767
int -21亿~21亿多
long -9百万兆~9百万兆

浮点数(小数)

float 存储7/8位有效数字 四舍五入 有效数字从非0数开始计算 c#中的小数默认是double类型,为了区别后面+f/F
double 存储15`17位有效数字 四舍五入
decimal 存储27~28位有效数字,不建议使用,后面+m/M

特殊类型

bool true/false
char 存储单个字符 charc = "A" 字符类型
string 字符串类型用来存储多个字符 没有上限

不同的变量 储存的范围和类型不一样,本质是占用的内存空间不同

变量本质

1byte = 8bit
1MB = 1024byte
1GB = 1024MB
1TB = 1024GB

通过sizeof方法 可以获取变量类型所占的内存空间(单位:字节)

int sbyteSize = sizeof(sbyte);
Console.WriteLine(sbyteSize);//1
int intSize = sizeof(int);
Console.WriteLine(intSize);//4
int shortSize = sizeof(short);
Console.WriteLine(shortSize);//2
int longSize = sizeof(long);
Console.WriteLine(longSize);//8

 所有变量类型所占的字节:

有符号:

sbyte  1字节  8位

int  4字节  32位

short  2字节  16位

long  8字节  64位

无符号:

byte  1字节  8位

uint  4字节  32位

ushort  2字节  16位

ulong  8字节  64位

浮点:

float  4字节  32位

double  8字节  64位

decimal  16字节  128位

特殊:

char  2字节  16位

bool  1字节  8位

string  可变  不固定

变量的本质是二进制 计算机中所有数据的本质都是二进制 是一堆0和1
数据传递只能通过电信号,只有开和关两种状态,
计算机中的存储单位最小为bit(位),他只能表示0和1两个数字   

2进制转10进制的规则:

从右往左看,最右边的一位为第0位,如果该位不为0,则加上2的n位次方

变量命名规范

  1. 不能重名
  2. 不能以数字开头
  3. 不能使用程序关键字命名
  4. 不能有特殊符号

常量

转义字符

类型转换

隐式转换

大范围转小范围

double —> float —> 整形(无符号、有符号) —> char

decimal —> 整形(无符号、有符号) —> char

long —> int —> short —> sbyte

ulong —> uint —> ushort —> byte

无符号没法隐式存储有符号的

有符号的可以隐式存储无符号的(注意范围大小)

例:

int a = 1;

short b = 1;

a = b;

//b的类型转换为short

显示转换

1、括号强转:

作用:将高精度的类型强制转换为低精度,数值之间的转换

语法: 变量类型 变量名 = (变量类型)变量;

注意:精度问题 范围问题

例:

short s = 1;

int i = 1;

s = (short)i;

括号强转成的异常

浮点数强转成整形时,会直接抛弃掉小数点后面的小数

bool和string不能通过括号强制转换类型

2、Parse法

作用:把字符串类型转换为对应的类型

语法:变量类型.Parse("字符串")

注意:字符串必须能够转换成对应类型,否则报错;值发范围,必须能够被变量存储的值,否则报错

例:

int i = int.Parse("123");

Console.WriteLine(i);//123

3、Convert法

作用:更准确的将各个类型之间进行相互转换

语法:Convert.To目标类型(变量或常量)

精度更高,会四舍五入

每个类型都存在对应的Convert中的方法

sbyte sb = Convert.ToSByte("1");

short s = Convert.ToInt16("1");

int i = Convert.ToInt32("1");

long l = Convert.ToInt64("1");


byte b = Convert.ToByte("1");

ushort us = Convert.ToUint16("1");

uint ui = Convert.ToUInt32("1");

ulong ul = Convert.ToUInt64("1");


float f = Convert.ToSingle("13.2");

double d =Convert.ToDouble("13.2");

decimal de = Convert.ToDecimal("13.2");


bool bo = Convert.ToBoolean("true");

char c = Convert.ToChar("A");


string str = Convert.ToString(123456);

4、其他类型转string:

作用:拼接打印

语法:变量.ToString();

例:

string str = 123.ToString();

str = true.ToString();

str ='A'.ToString();

 当我们进行字符串拼接时,会自动调用tostring

Console.WriteLine("123" 4 + true )

 异常捕获

基础语法:

//必备部分
try
{
//希望进行异常捕获的代码块
//如果try中的代码报错,会执行catch中,
}

catch(Exception e)
{
// e 具体的错误信息
}
//可选部分
finally
{
//不管有没有出错,都会执行的代码
}

举例:

//必写部分
try
{
    string str = "你好啊";
    int i =int.Parse(str);
    Console.WriteLine(i);
}
catch(Exception e)
{
    Console.WriteLine("字符串不合法");
}
//可选部分
finally
{
    Console.WriteLine("再见!");
}

算数运算符

算术运算符是用于数值类型变量计算的运算符,返回结果是数值

赋值符号

=

关键知识点:先看右侧,再看左侧,把右侧的值赋值给左侧的变量

算数运算符

加 +

减 -

乘 *

除 /  整数做除法运算会丢失小数点后的小数,如果想用浮点数存储,运算时要写成浮点数

取余 %

算数运算符的优先级

先算乘除取余,再算加减

先算括号内,再算括号外

算数运算符的复合运算符

复合运算符用于 自己=自己进行运算

+=

-=

*=

/=

%=

算数运算符的自增减

++

i++:先用再加

++i:先加再用

--

i--:先用再减

--i:先减再用

字符串拼接

1、用+拼接

2、string.Format()

语法:string.Format("待拼接的内容",内容1,内容2,内容3.......);

规则:想要被拼接的内容用占位符替代{数字} 数字 :0~n,依次往后

例:

   string str = string.Format("我是{0},我今年{1}岁,我想要{2}", "小明", 18, "好好学习,天天向上");
   Console.WriteLine(str);//我是小明,我今年18岁,我想要好好学习,天天向上

后面的内容比占位符多,不会报错;后面的内容比占位符少,会报错。

3、控制台打印

可直接使用上述方法

Console.WriteLine("我是{0},我今年{1}岁,我想要{2}", "小明", 18, "好好学习,天天向上");

条件运算符

用于比较两个变量或常量

是否大于 >

是否小于 <

是否等于 ==

是否不等于 !==

是否大于等于 >=

是否小于等于 <=

比较结果返回的是一个bool类型的值,true 和false,条件满足返回true,不满足返回false

逻辑运算符

逻辑与

&& 对两个bool值进行逻辑运算 有假则假 同真为真

逻辑或

|| 有真则真 同假为假

逻辑非

! 对一个bool值进行取反 真变假  假变真

混合使用优先级问题

! 优先级最高 && 优先级高于||

逻辑运算符优先级 低于 算数运算符 条件运算符(!除外) 

逻辑运算符短路规则

只要 &&或者 || 左边满足了条件 不会再执行右边的表达式

位运算符

主要用数值类型进行计算的,将数值转换为2进制,再进行位运算

位与 &

连接两个数值进行为计算 将数值转为2进制 对位运算 有0则0

int a = 1; //001

int b = 5; //101

int c = a & b;

// 001 & 101 = 001 = 1

Console.WriteLine(c); // 1

位或 |

对位运算 有1则1

int a = 1; //001

int b = 3; //011

int c = a | b;

// 001 | 011 = 011 = 3;

Console.WriteLine(c); // 3

异或 ^

对位运算 相同为0 不同为1 

位取反 ~

写在数值前面 将数值转为2进制

对位运算 0变1 1变0 

int a = 5; // 0000 0000 0000 0000 0000 0000 0000 0101

int b = ~a;

// ~0000 0000 0000 0000 0000 0000 0000 0101

= 1111 1111 1111 1111 1111 1111 1111 1010 = -6

 左移 << 和 右移 >>

让一个数的2进制数进行左移和右移

左移几位 右侧加几个0

int a = 5; // 101

int b = a << 5; // 10100000 =160

右移几位 右侧去掉几个数

int a = 5; // 101

int b = a >> 2; // 1

 三目运算符

基本语法

bool类型 ? bool类型为真返回内容 : bool类型为假返回内容;

条件分支语句

让顺序执行的代码 产生分支

if语句

语法:

if(bool类型值)

{

}else{

}

 可以嵌套使用;else可以省略

Switch语句

作用:让顺序执行的代码产生分支

语法:

switch(变量)

{

        case 常量:

               // 满足条件执行的代码逻辑;

                break;

        case 常量:

              // 满足条件执行的代码逻辑;

                break;

        default:

               // 如果上面case的条件都不满足 就会执行 default中的代码

                break;

}

 注意:

  • 常量只能写一个值,不能写一个范围,不能写条件运算符、逻辑运算符
  • switch只判断变量是否等于某一个固定值
  • default可省略

可自定义常量:

char c = 'A';

const char c1 = 'A'; //必须初始化;不可修改

switch(c)

{

        case c1:

                Console.WriteLine("c等于A");

                break;

}

 贯穿:

不写case后的break,满足任意一个case条件,就会执行之后的代码

int a = 1;

switch(a)

{

        case 1:

        case 2:

                Console.WriteLine("是个数字");

                break;

        default:

                break;

}

//输出结果:是个数字

 while循环语句

作用:让代码可以被重复执行

语法:

while(bool类型的值)

{

        //满足条件时,就会执行while语句块中的内容

        //......

        //......

        //......

        //代码逻辑执行完,会回到while循环开头,再次进行条件判断

}

//避免写死循环

嵌套使用:

while循环不仅可以嵌套 if switch 还可以嵌套while

流程控制关键词:

作用:控制循环逻辑的关键词

break:跳出循环

while(true)

{

        Console.WriteLine("1111");

        break;

        Console.WriteLine("2222");

}

Console.WriteLine("3333");

// 1111

// 3333

 continue:回到循环开始 重新执行

break和continue主要是和循环配合使用的 

do...while循环

do while循环 是先斩后奏,先至少执行 一次循环语句块中的逻辑再判断是否继续

do

{

        //...

} while (bool类型的值);

 for循环

for( /*初始表达式*/ ; /*条件表达式*/ ; /*增量表达式*/ )

{

}

猜你喜欢

转载自blog.csdn.net/m0_53206841/article/details/128131487
今日推荐