第二章:变量与数据类型
第二章:变量与数据类型
本章目标
- 为什么要使用变量?
- 理解变量的概念
- 如何使用变量?
- 掌握C#常用的数据类型
- 掌握C#中的变量名命名规则
- 掌握C#中的类型转换
- C#键盘输入
本章内容
1、为什么要使用变量?
问题:人类是靠什么要记忆(记录数据)?
大脑、作笔记等
问题:计算机如果要保存数据,靠什么来保存?
硬件课程中讲到:内存条、硬盘、U盘等存储设备
那么运行的程序要保存数据主要是靠内存条来存储。
问题:内存条又是如何要保存数据呢?
变量和数据类型,就是讲解计算机如何通过内存来保存数据
2、理解变量的概念
什么是变量?
概念:变量是指程序中一个已经命名的储存单位,它的主要作用就是为数据操作提供存放信息的容器。
简单理解:变量是用于存储信息的”容器”。
理解变量
在内存中如何表示存储年龄和身高,如下图示
那么:如果年龄变大:18,身高为:175,在内存中如何表示呢?
说明:保存在内存中的数据可以发生变化
注意事项:
- 变量,则保存在内存中的数据可以发生变化(可以修改数据)
- 变量之间是相互独立,互不干扰。
问题:现在我们把数据保存在内存中,那么如何获取到年龄或身高等数据呢?
比如说,班上有30名学生,我想找一个学生回答问题怎么办?
通过叫学生的“名字”,比如说:张三 起来回答问题
那么相同的道理,我们能不能给年龄或身高也在程序中取一个“名字”,这个名字则为“变量名”
比如说:age为年龄,height为身高
问题:如果我们要存储学生的信息,包含:姓名、年龄、性别、成绩、是否成年等信息,而且信息的类别都不一样,那么在程序中如何存储?
我们人总喜欢分类,那么以上数据的类别比较多,比如有年龄和成绩是数字,姓名和姓名是字符或字符串,是否成年(成年或未成年二种结果),不用类型在程序中是如何表示的呢?
数据类型:就是将存储在内存里面的各种数据进行分类,内存可以根据我们存储的数据类型来分类存储数据。
综合以上问题,可以分析出,变量的三大要素:
- 数据类型
- 变量名
- 存储的数据(值)
3、变量的使用
声明变量的语法:
1
data_type variable_list;
说明:
data_type:为变量的类型,可以是 C# 中任何有效的数据类型,例如 char、int、float 等,也可以是我们自定义的数据类型;
variable_list:为要声明的变量名称(标识符),variable_list 中可以包含多个变量名称,每个变量名之间使用逗号进行分隔,这样我们就可以同时定义多个变量,如下所示:
案例:
1
2
3int age; //int:为数据类型,整型,age:变量名
char gender;//char:为数据类型,字符型,gender:变量名
int a,b,c,d;//同时声明a,b,c,d四个变量,具有相同的类型赋值(初始化变量):
C# 中变量可以通过等号后跟一个常量表达式的形式进行初始化(赋值),语法格式如下:
1
varialbe_name=value;
例如:
1
2age=20;//给age变量赋值为20
gender='男';//给性别赋值为男声明变量且赋值
1
data_type variable_name = value;
例如:
1
2
3int age=20;
char gender='男';
int a=10,b=20,c=30;注意事项:
正确初始化变量是一种良好的编程习惯,否则程序运行时可能会产生意外的结果。
4、掌握C#常用的数据类型
什么是数据类型:
数据类型就是将各种数据进行分类
C#中数据类型分类:
- 值类型
- 引用类型
- 指针类型
类型讲解
值类型
什么是值类型:
C# 中的值类型是从 System.ValueType 类中派生出来的,对于值类型的变量我们可以直接为其分配一个具体的值。当声明一个值类型的变量时,系统会自动分配一块儿内存区域用来存储这个变量的值,需要注意的是,变量所占内存的大小会根据系统的不同而有所变化。
C#中的值类型:
类型 描述 范围 默认值 bool 布尔值 True 或 False False byte 8 位无符号整数 0 到 255 0 char 16 位 Unicode 字符 U +0000 到 U +ffff ‘\0’ decimal 128 位精确的十进制值,具有 28~29 个有效位数 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M double 64 位双精度浮点型 (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 0.0D float 32 位单精度浮点型 -3.4 x 1038 到 + 3.4 x 1038 0.0F int 32 位有符号整数类型 -2,147,483,648 到 2,147,483,647 0 long 64 位有符号整数类型 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 0L sbyte 8 位有符号整数类型 -128 到 127 0 short 16 位有符号整数类型 -32,768 到 32,767 0 uint 32 位无符号整数类型 0 到 4,294,967,295 0 ulong 64 位无符号整数类型 0 到 18,446,744,073,709,551,615 0 ushort 16 位无符号整数类型 0 到 65,535 0 进一步分类:
整型:
有符号:
sbyte,short,int,long
无符号:
byte,ushort,uint,ulong
浮点型:
float:单精度
double:双精度
字符型:char
布尔型:bool
十进制型:decimal
引用类型:
什么是引用类型:
引用类型的变量中并不存储实际的数据值,而是存储的对数据(对象)的引用,换句话说就是,引用类型的变量中存储的是数据在内存中的位置。当多个变量都引用同一个内存地址时,如果其中一个变量改变了内存中数据的值,那么所有引用这个内存地址的变量的值都会改变。C# 中内置的引用类型包括 Object(对象)、Dynamic(动态)和 string(字符串)。
C#中的引用类型:
对象类型(Object)后续讲解
动态类型(Dynamic)后续讲解
字符串类型(String)
字符串类型的变量允许您将一个字符串赋值给这个变量,字符串类型需要通过 String 类来创建,String 类是 System.String 类的别名,它是从对象(Object)类型中派生的
案例:
1
string name="张三";
注意事项:
1、值必须放入双引号
指针类型(后续讲解):
C# 语言中的指针是一个变量,也称为定位器或指示符,其中可以存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针具有相同的功能。
5、变量名
什么是变量名:
C#当中,用于给变量自定义元素起名字的字符串,称为变量名
即给变量、类、和方法等自定义元素起名字的字符串,即称为标识符
变量名的规则:
- 必须以字母、下划线或者@符号开头
- 后续字符可以是数字、字母、下划线
- 不可以使用C#中的关键字
变量名的规范:
- 尽量使用明确的单词或单词缩写,建议全英文
- 使用驼峰命名法:pageIndex,money
案例:
1
2
3
4以下错误的命名:
string 2age;//错误命名,以数字开头,必须以字母、下划线或@开头
string age&;//有不合规则的字符&
string break;//break是关键字,不能以关键字命名
6、类型转换
什么是类型转换?
在 C# 中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。
C#中的类型转换两种形式:
- 隐式类型转换(也称为自动类型转换)
- 显式类型转换(也称为强制类型转换)。
隐式类型转换
概念:
隐式转换是指将一个较小范围的数据类型转换为较大范围的数据类型时,编译器会自动完成类型转换,这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。
隐式类型转换的条件:
- 类型要兼容
- 目标类型大于源类型
- 无符号数据不能接纳有符号数据
- byte、short、char三种数据在运算的时候,都会首先转化为int类型
- 数据之间隐式转换关系如下:
案例:
例如:从小的整数类型转换为大的整数类型,从派生类转换为基类。将一个 byte 类型的变量赋值给 int 类型的变量,编译器会自动将 byte 类型转换为 int 类型,不需要显示转换。
1
2byte a=10;
int b=a;//隐式转换,不需要显式转换例如:将一个整数赋值给一个长整数,或者将一个浮点数赋值给一个双精度浮点数,这种转换不会导致数据丢失:
1
2int intValue=50;
long longValue=intValue;
显式类型转换
概念:
显式类型转换,即强制类型转换。
显式转换是指将一个较大范围的数据类型转换为较小范围的数据类型时,或者将一个对象类型转换为另一个对象类型时,需要使用强制类型转换符号进行显示转换,强制转换会造成数据丢失。
案例:
例如:将一个 int 类型的变量赋值给 byte 类型的变量,需要显示转换。
1
2
3
4
5int a=10;
byte b=(byte)a;//显示转换,需要使用强制转换符号
double doubleValue=10.35;
int intValue=(int)doubleVale;//强制转换,得到的值为:10,后面小数丢失例如:强制转换为字符串类型:
1
2
3int a=10;
string strA=a.ToString();//通过方法转换成字符串
string strA2=a+"";
类型转换的方法:
7、C#中的键盘输入
System 命名空间中的 Console 类提供了一个函数 ReadLine(),用于接收来自用户的输入,并把它存储到一个变量中。
Console.ReadLine() 只接受字符串格式的数据,如果输入的内容要为非字符串类型,则必须进行类型转换,具体案例如下:
案例1:
1
2
3
4string inputStr=Console.ReadLine();
int inputNum=int.Parse(Console.ReadLine());
int inputNum2 = Convert.ToInt32(Console.ReadLine());
double inputDouble = Convert.ToDouble(Console.ReadLine());案例2:通过变量实现一个简单计算机,要求输入2个数,进行加法运算,输出计算结果:
1
2
3
4
5
6
7
8
9
10
11
12int num1,num2;//声明变量,保存接受用户输入的数字
int result;//声明变量,保存计算结果
Console.WriteLine("请输入第一位数:");
num1=int.Parse(Console.ReadLine());//将输入的字符串,转换成int
Console.WriteLine("请输入第二位数:");
num2=int.Parse(Console.ReadLine());//同上
result = num1 + num2;//将2数进行加法运算,计算结果保存在result变量中
Console.WriteLine("{0}+{1}={2}",num1,num2,result);//通过占位符方式,输入运算结果
Console.ReadLine();
本意总结
- 什么是变量?
- 变量的三要素是什么?
- 数据类型有哪些?列出常用的几种类型
- 变量名的规则是什么?
- C#类型转换的几种方式?
- C#如何接受用户输入信息,如果要得到int类型,怎么处理?
课后作业
1.定义若干变量存储一款手机信息,包含品牌、价格、重量,内存,然后输出到控制台.
2.编写程序描述一款手机,要求用户自行输入数据,包含品牌、价格、重量、内存、颜色,然后输出到控制台.