3.1数据类型及变量
3.1.1变量是什么
定义:变量是用来存储特定类型的数据,用户可以根据需要随时改变变量所存储的数据值。
变量具有属性:名称、类型、值。
变量名:变量在程序源代码中的标识。
类型:确定变量所代表的内存的大小和类型。
变量值:变量所代表的内存块中的数据。
注意:使用变量之前必须先声明——指定变量的类型和名称。
3.1.2 声明变量
1.声明变量的语法
(1)声明变量就是指定变量的名称和类型。
变量类型 变量名
(2)声明多个变量之间用逗号分开,最后以分号结束。
变量类型 变量名1,变量名2,...,变量名n;
2.变量的命名规则
(1)变量名只能由数组、字母和下划线组成。
(2)变量名的第一个字符只能是字母或者下划线,不能是数字。
(3)不能使用C#中的关键字作为变量名。
(4)一旦在一个语句块中定义了一个变量名,那么在变量的作用域内都不能再定义同名的变量。
3.1.3 简单的数据类型
C#中的数据类型根据定义可分为如下:
1.整数类型
整数类型用来存储整数数值,可以是正数或者负数。
(1)十进制
如:120,0,-12;
(2)八进制:以0开头的数
如:012、-012
(3)十六进制:以0x或者0X开头的数
如:0x25,0Xab
C#的整数类型
注意:
(1)无符号:只能存储不带符号的整数,即只能存储非负数。有符号:既可以存储整数,也可以存储负数。
(2)整数类型默认值为0。
2.浮点类型
浮点类型主要用于处理含有小数的数据,主要包含float和double。
注意:
(1)如果不做任何设置,包含小数点的数值都会被认为是double类型。
(2)如果要将数值以float类型处理,可以使用f或F将其强制指定为float类型。
(3)如果要将数值以double类型处理,可以使用d或D实现,但加不加不强求。
(4)需要使用float,一定要在数值后面加f或F,不然编译器会识别为double类型。
(5)浮点类型变量的默认值为0.0。
3.decimal类型
decimal表示128位数据类型,是一种精度更高的浮点类型,其精度可以达到28位。取值范围为:+-1*10的-28次方——+-7.9*10的28次方。
注意:
(1)decimal适用于财务和货币计算。
(2)如果希望小数被当成decimal类型使用,需要使用后缀m或M。
4.布尔类型
布尔类型主要用来表示true和false值。
在C#定义布尔类型变量时,需要使用 bool 关键字。
注意:
(1)布尔类型的值只能是 true 和 false,不能将其他值指定给布尔类型变量。
(2)布尔类型变量的默认值是false。
5.字符类型
字符类型在C#中用 Char类来表示,该类主要用来存储单个字符,占用16位(两字节)的内存空间。
注意:
(1)定义字符类型变量,要用单引号 ‘ ’表示。
(2)Char类只能定义一个Unicode字符。
常用Char类方法以及说明
转义字符:是一种特殊的字符类型变量,以反斜线“\”开头,后跟一个或多个字符。
注意:
(1)转义字符只作用于后面紧跟着的单个字符。
(2)可以使用@符号进行多级转义。
常用转义字符以及说明如下:
3.1.4 变量的初始化
变量的初始化实质就是给变量赋值。
1.单独初始化变量
使用赋值运算符 = 对变量进行初始化
注意:在对变量进行初始化时,等号右边可以是一个已经被赋值的变量。
2.声明时初始化变量
声明变量时可以对变量进行初始化,即在每个变量名后面加上给变量赋初始值的指令。
3.同时初始化多个变量
在对多个同类型的变量赋同一个值时,为了节省代码的行数,可以同时对多个变量进行初始化。
3.1.5 变量的作用域
变量被定义后,只是暂时存储在内存中,等待程序执行到某行代码后,该变量会被释放掉,也就是说变量有他的生命周期。
变量的作用域:程序代码能够访问该变量的区域,如果超出该区域,则在编译时会出现错误。
1.成员变量
在类中定义的变量称为成员变量,成员变量在整个类中都有效。
(1)静态变量
如果在成员变量的类型前面加上关键字static,则该成员变量称为静态变量。
静态变量除了可以在类内使用,还可以 类名.静态变量 的方式在其他类内使用。
(2)实例变量
2.局部变量
在类的方法体中定义的变量称为局部变量,局部变量只对当前代码块有效。
局部变量的生命周期取决于方法,当方法被调用时,c# 编译器为方法中的局部变量分配内存空间;当该方法的调用结束后,会释放方法中的局部变量占用内存空间,局部变量也会被销毁。
变量的有效范围如下:
3.2 常量
3.2.1 常量是什么
常量就是程序运行过程中,不能改变的值。
3.2.2 常量的分类
const常量和readonly常量
1.const常量
也叫静态常量。const常量的值必须在声明时就进行初始化,而且之后不可以再进行更改。
2.readonly常量
也称为动态常量。这里动态赋值是有条件的:只能在构造函数中进行赋值。
3.二者区别
(1)const常量必须在声明时初始化,而readonly常量则可以延迟在构造函数中初始化。
(2)const常量在编译时就被解析,即将常量的值替换成了初始化的值;而readonly常量的值需要在运行时确定。
(3)const常量可以定义在类或者方法体中,而readonly常量只能定义在类中。
3.3 数据类型的转换
类型转换就是将一个值从一种数据类型转换为另一种数据类型。
如果从低精度数据类型转换为高精度数据类型,则永远不会溢出,并且总是成功的;
而从高精度数据类型转换为低精度数据类型,必然存在信息丢失。
3.3.1 隐式类型转换
不需要声明就可以进行转换。
隐式类型转换的兼容顺序图:
3.3.2 显式类型转换
(1)int类型转换为short类型——会丢失数据
(2)int类型转换为uint类型——会丢失数据
(3)float类型转换为int类型——会丢失小数点后面的所有数据
(4)double类型转换为int类型——会丢失小数点后面的所有数据
(5)数值类型转换为char类型——会丢失数据
(6)decimal类型转换为其他数值类型——decimal类型的内部不同于整数和浮点数
显示类型转换格式:
(类型说明符)表达式 例如:(float) x;
3.3.3 使用Convert类进行表达
Convert类可以进行显示转换,主要作用是将一种基本数据类型转换为另一种基本数据类型。(如果超出范围,可以提出错误)
Convert类的常用方法和说明:
4.结语
希望对您有帮助。本文介绍了C#编程语言中的数据类型、变量与常量的基础知识。主要内容包括:
1)变量的定义、声明规则及命名规范;
2)基本数据类型(整数、浮点、布尔、字符等)的特点和使用注意事项;
3)变量的初始化方式与作用域规则;
4)常量的分类(const与readonly)及区别;
5)数据类型转换的隐式和显式方法。文章系统梳理了C#中数据存储的基本概念,为编程初学者提供了清晰的数据类型使用指南。