1.基本数据类型
- 数值类型
- 整型 int
- 单精度浮点型 float
- 双精度浮点型 double
- 更高精度数值(财务) decimal
- 非数值类型
- 字符 char
- bool
-
字符串 string
2.变量
1.变量的声明
- 第一种声明方式
// 声明一个int类型的变量
int num;
// 赋值,将100给了声明的num变量
num = 100;
- 第二种声明方式
// 声明变量的同时赋值
int num = 100;
- 第三种声明方式
// 一次性声明多个变量
int num, num1,num2;
num = 100;
num1 = 100;
num2 = 100;
2.变量的命名
- 三条规则:
1-标识符只能由英文字母、数字和下划线组成,不能包含空格和其他字符,除@以外
2-不能以数字开头
3.不能用关键字当变量名
- 命名的注意点
1、给变量分配有意义的名称;
2、命名类和方法时使用Pascal(帕斯卡)样式,命名变量使用Camel(骆驼)样式。
3、不要通过大小写的不同来区分变量。
4、变量(标识符)名字不适宜太长,尽量精简。
3.变量的作用域
- 定义:
变量的作用域是可以访问该变量的的代码区域。 - 作用域规则
- 只要字段所属的类在某个作用域内,其字段也在该作用域内;
- 局部变量的作用域只在离它最近的大括号内部
- 在循环或类似的语句中声明的局部变量存在于该循环体内。
4.修饰符
5.屏幕输入
Console.ReadLine();
6.转换
- 隐式转换
自动提升类型
float a = 1.99;
double b = 2.99;
double c = a + b;
- 显式转换
强制转换类型
int a = 10;
double b = 19.999;
int c = (int)(a + b);
- 类型转换
Convert
Convert.ToInt();
Convert.ToString();
Convert.ToChar();
Convert.ToDouble();
Convert.ToInt(Console.ReadLine());
7.复合数据类型
- 枚举
// 定义枚举,通过使用关键字enum+枚举名称{}
enum Sex
{
男,
女
}
- 结构体
struct People
{
public int age; // 每一个属性都称为结构体的成员
public string name;
public Sex sex;
public float height;
void See()
{
Console.WriteLine("看我!!");
}
}
- 类
- 接口
- 委托
- 数组
- 定义
// 第一种方式
// int[]定义了一个整型数组类型
// int[6],表示存储6个整型数据的数组
// new 就是想系统要内存,创建数组并将数组元素初始化为它们的默认值,就是0
int[] numbers = new int[6]; // {0,0,0,0,0,0}
numbers[0] = 50; // {50,0,0,0,0,0}
numbers[1] = 100; // {50,100,0,0,0,0}
numbers[2] = 101; //{50,100,101,0,0,0}
numbers[3] = 103; // {50,100,101,103,0,0}
numbers[4] = 104; // {50,100,101,103,104,0}
numbers[5] = 105; // {50,100,101,103,104,105}
// 第二种方式
int[] array1 = new int[] { 1, 3, 5, 7, 9 };
int[] array2 = { 1, 3, 5, 7, 9 };
// 第三种写法
//声明一个数组变量但不将其初始化,但在将数组分配给此变量时必须使用 new 运算符。
int[] array4;// array4 = new int[4];
array4 = new int[] {100,20,10,20,20 };
方法:
// 获取数组元素的方法
Console.WriteLine(array4.GetValue(2)); // 0-1-2
Console.WriteLine(array4[2]);
// 修改数组中某个元素的值
array4[2] = 100;
array4.SetValue(100,2);
Console.WriteLine(array4[2]);
//遍历数组
foreach (int number in array4)
{
Console.WriteLine(number);
}
foreach (var item in array3)
{
Console.WriteLine(item);
}
// for循环遍历数组
for (int i = 0; i < array4.Length; i++)
{
Console.WriteLine(array4[i]);
}
8.练习
作业一:输出一个图案,如图所示
作业二:声明一个电脑类,里面有电脑的价格,要求这个价格能够被外界访问。
书写10遍public,private,protected,internal的定义。用自己的语言写出来
9.运算符
// 计算100以内的和,与10以内的乘法,计算100除以3的值,如果有余数,如何显示出来,如何四舍五入?
// + - * % /
int sum = 0;
for (int i = 0; i < 100; i++)
{
sum += i;
}
Console.WriteLine(sum);
// 保存余数
int a = 0;
a = 100 % 3;
Console.WriteLine(a);
float result = (float)(100 / 3.0);
string str2 = result.ToString("f2"); // 四舍五入
string str3 = result.ToString("#0.00000"); // 四舍五入
Console.WriteLine(str3);
Console.ReadKey();
- ++ --
int a = 10;
int b = 10;
Console.WriteLine(a++);// a = 10
Console.WriteLine(a+b);// a = 11 result = 21
Console.WriteLine(++a);// a = 12
Console.WriteLine(a+b);// a = 12 result = 22
int c = 101;
int d = 101;
Console.WriteLine(c--); // c = 101
Console.WriteLine(c+d); // c = 100 201
Console.WriteLine(--c); // 99
Console.WriteLine(c+d); // 200
// 复杂案例
int n = 3;
int a1 = 0;
while (++a1 < n)
{
Console.WriteLine(a1);
}
Console.WriteLine($"final {a1}");
Console.WriteLine("=====");
int n1 = 3;
int a2 = 0;
while (a2++ < n1) // 判断的时候,没有执行自加过程,因为是后加
{
// a2执行了自加的过程
Console.WriteLine(a2); // 1,2,3
}
Console.WriteLine($"final {a2}"); //4
Console.WriteLine("=====");
- 三目运算符
int sum ;
sum = 3 > 4 ? 3 : 4;
Console.WriteLine(sum);
sum = 4 > 3 ? 3 : 4;
Console.WriteLine(sum);
if (3 > 4)
{
sum = 3;
}
else
{
sum = 4;
}
sum = (3 > 4 ? 3 : 4);
- 赋值运算符
//-= += *= /= %=
// 12898秒等于多少小时,多少分钟,多少秒?
- 逻辑运算符
// && // && “与” 表示该符号两边的语句全部正确才能进行下面的逻辑
// || // || "或" 表示该符号两边的语句只要有一方正确就可以继续进行下面的逻辑
// ! //! "非" 表示与该语句相反的意思
- checked与unchecked运算符
#region checked和unchecked
byte by1 = 255;
checked {
// by1++; // 256
}
unchecked {
by1++;
Console.WriteLine(by1);
}
#endregion
- is 、 as、
int a11 = 10;
object obj = 10;
bool boo = true;
string name = "face";
boo = obj is int;
Console.WriteLine(boo);
// as 表达式1和表达式2必须是引用类型的变量或者常量
// 引用类型 :起了一个名字来表示某件事
// 值类型:就是存贮在内存栈空间的数值 10,20,30,
obj = a11 as object; // 某个类型的值 as Object 大的可以代表小的
// as 必须与引用类型和Null类型的值一起使用
// a11 = obj as int ; // Object as 某个类型的值 小的不能代替大的
10.流程控制
- if语句
// 第一种if语句
if(条件结果必须为bool类型)
{
}
// 第二种if语句
if()
{
}
else
{
}
// 第三种if语句
if()
{
}else if()
{
}
else
{
}
- Swich语句
Console.writeline("请输入考试分数");
int number = Convert.toint32(Console.Readline());
int result = number / 10;
switch (result)
{
case 10:
Console.WriteLine("满分");
break;
case 9:
Console.WriteLine("优秀");
break;
case 8:
Console.WriteLine("良好");
break;
case 7:
Console.WriteLine("及格");
break;
default:
Console.WriteLine("不及格");
break;
}
- while循环
while (true)
{
Console.WriteLine("请输入考试分数");
int number = Convert.ToInt32(Console.ReadLine());
int result = number / 10;
switch (result)
{
case 10:
Console.WriteLine("满分");
break;
case 9:
Console.WriteLine("优秀");
break;
case 8:
Console.WriteLine("良好");
break;
case 7:
Console.WriteLine("及格");
break;
default:
Console.WriteLine("不及格");
break;
}
}
- do while循环
do{
// 循环体,不管条件成立不成立,先执行一次
}
while(条件)
- 流程控制中的三个关键字: default,break,continue
default:默认其他结果
break:中断循环
continue :跳过当前循环
- for循环与foreach循环
//for (int i = 0; i < 1000; i++)
//{
// if (i % 100 == 0)
// {
// break; // 中断循环
// }
// Console.WriteLine("当前循环第{0}次", i);
//}
//foreach循环 第二天讲数组的时候,演示
int[] array4;// array4 = new int[4];
array4 = new int[] {100,20,10,20,20 };
//遍历数组
foreach (int number in array4)
{
Console.WriteLine(number);
}
- 流程控制练习题
1,编写一个程序,对输入的4个整数,求出其中的最大值和最小值,并显示出来。
2,让用户输入两个整数,然后再输入0-3之间的一个数,0代表加法,1代表减法,2代表乘法,3代表除法,计算这两个数字的结果
3,求出1~1000之间的所有能被7整除的数,并计算和输出每5个的和。
4,编写一个控制台程序,分别输出1~100之间的平方、平方根。
5,编程输出1~100中能被3整除但不能被5整除的数,并统计有多少个这样的数。
6,编程输出九九乘法表。
7,一个控制台应用程序,输出1~5的平方值,要求:用for语句实现。用while语句实现。用do-while语句实现。
8,一个控制台应用程序,要求用户输入5个大写字母,如果用户输入的信息不满足要求,提示帮助信息并要求重新输入。
9,一个控制台应用程序,要求完成写列功能。
1)接收一个整数n。
2)如果接收的值n为正数,输出1~n间的全部整数。
3)如果接收的值n为负值,用break或者return退出程序。
4)如何n为0的话 转到1继续接收下一个整数。
11.复杂数据类型
- 数组
- 一维数组
- 二维数组
- 多维数组
- 交错数组
数据类型[] 数组名 = new 数据类型[存储数据类型的个数];
数据类型[] 数组名 = {具体的值};
// 获取一维数组元素的个数
Console.WriteLine(数组名.length)
// 遍历
for(int i =0;i < 数组名.length; i++ )
{
Console.Write(数组名[i])
}
foreach(var item in 数组)
{
Console.Write(item)
}
// 二维数组
数据类型[,] 二维数组名 = new 数据类型[当前数据类型的元素,数据类型元素中的元素]
数据类型[,] 二维数组名 = {{具体的值},{具体的值(与前面的元素内部个数保持一致)}};
// 获取二维数组的维度
Console.WriteLine(数组名.Rank)
// 获取二维数组中所有元素的个数
Console.WriteLine(数组名.Length)
遍历二维数组
for(int i = 0; i < 数组名.Rank; i++)
{
for(int j = 0; j < 数组名[i].Length; j++)
{
Console.Write(数组名[i,j]);
}
}
foreach(var item in 数组名)
{
Console.Write(item);
}
// 三维数组
数据类型[,,] 数组名 = new 数组类型[当前数组名中的元素,数组元素中的元素,数组元素中元素的个数];
数据类型[,,] 数据名 = {{{1,2,3},{3,4,5} },{{具体的值},{具体的值}},{{具体的值},{具体的值}}}
// 获取维度
Console.Write(数组名.Length)
Console.Write(数据名.Rank)
for(int i = 0; i < 数组名.Rank; i++)
{
for(int j = 0; j < 数组元素个数; j++)
{
for(int g = 0; g< 数组元素中元素的个数;g++)
Console.Write(数组名[i,j,g]);
}
}
int[,,] array3 = {
{
{10,11},{11,11},{12,11},{13,11}
},
{ {20,12},{21,12},{22,12},{23,12}
},
{
{30,13},{31,13},{32,13},{33,13}
}
};
// 获取的是数组内所有元素个数的和
//Console.WriteLine(array3.Length);
// 获取当前数组的维度
//Console.WriteLine(array3.Rank);
for (int i = 0; i < array3.Rank; i++)
{
for (int j = 0; j < 4; j++)
{
for (int g = 0; g < 2; g++)
{
Console.WriteLine(array3[i, j, g]);
}
}
}
foreach (var item in array3)
{
Console.WriteLine(item);
}
// 交错数组
数据类型[][] 数组名 = new 数据类型[具体的值][];
// 初始化
数组名[具体的值从0开始] = new int[具体的值];
数组名[具体的值从1开始] = new int[具体的值];
数组名[具体的值从2开始] = new int[具体的值];
// 赋值
数组名[具体的值从0开始][具体的值从0开始] = 数组类型匹配的具体值如: 10;
数组名[具体的值从0开始][具体的值从1开始] = 数组类型匹配的具体值如: 11;
数组名[具体的值从1开始][具体的值从0开始] = 数组类型匹配的具体值如: 20;
数组名[具体的值从1开始][具体的值从1开始] = 数组类型匹配的具体值如: 21;
// 简化
数据类型[][] 数组名 = {
子元素的初始化并赋值,
子元素的初始化并赋值,
}
int[][] number2 = {
new int[]{11,22,33,55,66},
new int[]{101,102,103 },
new int[]{99}
};
// 包含二维数组的交错数组
数据类型[][,] 数组名 = {
二维数组的初始化并赋值,
二维数组的初始化并赋值
}
int[][,] number3 = {
new int[,]{ {1,9,99,109,209 },{10,102,190,170,0 },{10,11,22,33,44 } },
new int[,]{ {999,888,777 },{333,222,111 } }
};
// 获取数组的长度
Console.WriteLine(number3.Length);
// 获取的是交错数组中第0位元素内的元素个数的和
Console.WriteLine(number3[0].Length);
// 遍历
//for (int i = 0; i < number3.Length; i++)
//{
// foreach (var item in number3[i])
// {
// Console.WriteLine(item);
// }
//}
- 字符串
- 定义
- 拼接
- 替换
- 转换大小写
- 遍历
- 赋值
- 判断字符串相同与否
- 合并
- 删除首位空白
- 检索给定的字符串位置
- 把一个字符串实例插入到另一个字符串实例的指定索引处