1 / 39

第 2 章 基本数据类型

第 2 章 基本数据类型. 2.1 一个简单的程序 2.2 基本数据类型 2.3 变量与常量 2.4 基本运算 2.5 数组的定义和使用. 2.3 变量与常量. 2.3.1 标识符与命名规则 2.3.2 变量 2.3.3 常量 2.3.4 类型转换 2.3.5 装箱与拆箱. 2.3 变量与常量. 2.3.1 标识符与命名规则. 在 C# 中所有的名称都必须先声明后使用,包括变量名、常量名、方法名、类名、对象名等等 , 这些名称统称为 标识符 满足下列条件的字符串称为 标识符 :

oona
Download Presentation

第 2 章 基本数据类型

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第2章 基本数据类型 2.1 一个简单的程序 2.2 基本数据类型 2.3 变量与常量 2.4 基本运算 2.5 数组的定义和使用

  2. 2.3 变量与常量 2.3.1 标识符与命名规则 2.3.2 变量 2.3.3 常量 2.3.4 类型转换 2.3.5 装箱与拆箱

  3. 2.3 变量与常量 2.3.1 标识符与命名规则 • 在C#中所有的名称都必须先声明后使用,包括变量名、常量名、方法名、类名、对象名等等, 这些名称统称为标识符 • 满足下列条件的字符串称为标识符: (1)由字母(包括大小写字母、汉字)、数字和下划线组成; (2)以字母或下划线开头。

  4. 2.3 变量与常量 以数字1开头 包括了字母、数字和下划线以外的字符# 包括了字母、数字和下划线以外的字符(空格) 2.3.1 标识符与命名规则(续) 合法的标识符: _name c_sharp var1 var2 var2var1 非法的标识符: 1var c_# var2 var1

  5. 2.3 变量与常量 2.3.1 标识符与命名规则(续) • 标识符可以分为: • 用户标识符:由用户根据需要自己定义的标识 符(以上介绍的都是用户标识符) • 系统标识符:为系统保留的,只有系统才可以使 用的标识符

  6. 2.3 变量与常量 2.3.1 标识符与命名规则(续) 如果要定义与关键字重名的标识符,则必须在关键字前加上字符@: @new @if @for 而下面的用户标识符是非法的: new if for ——合法性(正确性)是标识符的最基本要 求,必须满足 ——标识符的见名知义是提高程序的可读性的 基本途径 ——注意:如果定义的标识符并非与关键字重名,而又在其前面加上字符@,则也是非法的。

  7. 2.3 变量与常量 2.3.1 标识符与命名规则(续) • 除了遵守标识符的命名原则以外,为了提高代码可读性,一般会使用一个命名约定来规范标识符的使用 • 无规则的命名将会使编程和以后的维护工作称为一场噩梦 • 不同的组织和机构可能有自己的命名约定。 • 为了让标识符可读,会遇到一个标识符使用了多个单词的情况。 • 根据标识符的用途,有两种常用的命名约定: • Pascal风格和Camel风格

  8. Pascal风格和Camel风格的命名约定

  9. 下表汇总了.NET FrameWork中标识符的大小写规则,并提供了不同类型标识符的示例。

  10. 2.3 变量与常量 2.3.2 变量 1. 声明变量 2. 变量赋值

  11. 1. 声明变量 • 变量是在程序运行过程中,其值可以改变的数据 • 在C#中,命名变量的过程叫声明,且规定,变量必须先声明后使用 • 声明变量就是把存放数据的类型告诉程序,以便为变量安排内存空间 • 声明变量最简单的格式为: 数据类型名称 变量名列表; • 例如: int number; // 声明一个整型变量 float x; // 声明一个单精度浮点型变量 bool open; // 声明一个布尔型变量

  12. 声明变量 • 可以一次声明多个变量 • 例如: sbyte a , b; // 声明两个有符号字节型变量 • 如果一次声明多个变量,变量名之间用逗号分隔

  13. 2. 变量赋值 • C#规定,变量必须赋值后才能引用,为变量赋值需使用赋值号“=” • 例如: int number; number = 32; // 为变量赋值32 bool open; open = true; // 为变量赋值true

  14. 变量赋值 • 可以使用变量为变量赋值,例如: bool close; close = open; // 为变量赋值open(true) • 可以为几个变量一同赋值,例如: int a , b , c; a = b = c = 32; • 可以在声明变量的同时为变量赋值,相当于将声明语句与赋值语句合二为一,例如: double area , radius = 16;

  15. 2.3 变量与常量 2.3.3 常量 • 常量是在程序运行过程中,其值保持不变的量 • 常量有字面常量和符号常量两种 1. 字面常量 2. 符号常量

  16. 1. 字面常量 • 字面常量即数据值本身 (1) 整型常量 (2) 实型常量 (3) 字符常量 (4) 字符串常量 (5) 布尔常量

  17. (1) 整型常量 • 整型常量即整数 • 整型常量有三种形式 • 十进制形式 • 即通常意义上的整数,如123、48910等 • 八进制形式 • 需要在数字前面加“0”,如0123、037等 • 十六进制形式 • 需要在数字前面加“0x”或“0X”,如0x123、0X48910等 • 如果想使整型常量为长整型(long)常量,可以在数字后跟“l”或“L”

  18. (2) 实型常量 • 实型常量即带小数的数值 • 实型常量有两种表示形式 • 小数形式 • 即人们通常的书写形式,如0.123、12.3、.123等 • 指数形式 • 也叫科学记数,由底数加E或e加指数组 成,例如123e5或123E5都表示123×105

  19. 实型常量 • 实型常量默认为双精度型(double) • 实型常量可以显式指出是单精度型(float),还是双精度型(double),或者是十进制型(decimal) • 如123.5f或123.5F为单精度型, • 123.5d或123.5D为双精度型, • 123.5m或123.5M为十进制型

  20. (3) 字符常量 • 字符常量表示单个的Unicode字符集中的一个字符,通常包括数字、各种字母、标点、符号和汉字等 • 字符常量用一对英文单引号界定 • 如'A'、'a'、'+'、'汉'等

  21. 转义符 • 在C#中,有些字符不能直接放在单引号中作为字符常量,这时需要使用转义符来表示这些字符常量,转义符由反斜杠“\”加字符组成

  22. (4) 字符串常量 • 字符串常量是由一对双引号界定的字符序列 • 例如:"欢迎使用C#!","I am a student.“ • 由双引号界定的一个字符,是字符串常量,不是字符常量 • 例如,'A'与"A",前者是字符常量,后者是字符串常量 • 如果试图将一个字符串常量赋值给一个字符变量,系统在编译代码时将报错 • 例如,char ca = “A”; //无法将string类型隐式转换为char

  23. (4) 字符串常量(续) 一些特殊情况下,在字符串中会包含一些反斜杠(如:文件路径经常有反斜杠),为了避免编译器把反斜杠后带的字符当作转义字符处理,可以在字符串前面加上“@”字符。 例如,字符串“D:\Documents\Myfile.txt”可以如下赋值: string filePath= “D:\\Documents\\Myfile.txt” 或者string filePath= @“D:\Documents\Myfile.txt”

  24. (5) 布尔常量 • 布尔常量即布尔值本身 • 布尔值true(真)和false(假)是C#的两个关键字

  25. 2. 符号常量 • 符号常量使用const关键字定义 • 常量定义格式为: const 类型标识符 符号常量名 = 常量表达式; • “常量表达式”不能包含变量及函数等值会发生变化的内容,但可以包含其他已定义常量 • 例如: const int max = 10; // 合法 const double PI = 3.1415926; // 合法 const double maxArea = PI * max * max; // 合法,表达式包含已定义常量 int num = 10; const double maxArea = PI * num * num; // 不合法,表达式包含变量

  26. 2. 符号常量(续) • 由于符号常量代表的是一个不变的值,所以符号常量不能出现在赋值号的左边 • 如果在程序中非常频繁地使用某一常量,可以将其定义为符号常量 • 定义符号常量的好处在于: • 提高代码输入效率 • 减少输入错误 • 常量名一旦输入错误,在程序运行前的编译阶段即可检查出来

  27. 2.3 变量与常量 2.3.4 类型转换 • 数据类型的转换有隐式转换与显式转换两种 1. 隐式转换 2. 显式转换 3. 数值类型和字符串类型数据之间的转换

  28. 1. 隐式转换 • 隐式转换是系统自动执行的数据类型转换 • 隐式转换的基本原则 • 允许数值范围小的类型向数值范围大的类型转换 • 允许无符号整数类型向有符号整数类型转换 • 例如: int x = 123456; long y = x; // 整型数隐式转换为长整型数 uint a = 123456; long b = a; // 无符号整型数隐式转换为有符号的长整型数

  29. 1. 隐式转换(续) • C#允许将char(字符)类型的数据隐式转换为数值范围大于短整型(含)的数值类型 • 例如: char letter = ‘A’; int num = 32 + letter; // 字符型变量letter的值隐式转换为整数65,与32相加 • 之所以允许将字符型数据隐式转换为整数,是因为char类型的数据在内存中实质是保存为整型数据,当然从意义上代表的是Unicode字符集中的一个字符

  30. 2. 显式转换 • 显式转换也叫强制转换,是在代码中明确指示将某一类型的数据转换为另一种类型 • 显式转换的一般格式为: (数据类型名称) 数据 • 例如: int x = 600; short z = (short) x; // 将整型变量x的值显式转换为short类型

  31. 2. 显式转换(续) • 显式转换中可能导致数据的丢失 • 例如: decimal d = 234.55M; // 使用M或m类型符说明类型,否则编译出错 int x = (int) d; // 将十进制型变量d的值显式转换为整型,小数部分被截去,x = 234

  32. 3.数值类型和字符串类型数据之间的转换 • C#提供了专门的类方法用于数值类型和字符串类型数据之间的转换 (1) Parse方法 (2) ToString方法

  33. (1) Parse方法 • Parse方法可以将特定格式的字符串转换为对应类型的数值 • Parse方法的使用格式为: 数值类型名称.Parse(字符串型表达式) • 其中,“字符串型表达式”的值必须严格符合“数值类型名称”对数值格式的要求 • 例如: int x = int.Parse("123"); // 符合整型格式要求,转换成功 int y = int.Parse("123.0");// 不符合整型格式要求,转换失败

  34. (2) ToString方法 • ToString方法可将其他数据类型的变量值转换为字符串类型 • ToString方法的使用格式为: 变量名称.ToString( ) • 例如: int x = 123; string s = x.ToString( ); // 将整型变量x的值转换为字符串“123”

  35. 2.3 变量与常量 2.3.5 装箱与拆箱 • 装箱就是将数值类型隐式转换为引用类型(类、接口、委托、数组)的过程,而拆箱则是将引用类型显式转换为数值类型。 • 例如: int n = 100; object obj = n; //装箱 int m = (int)obj; //拆箱

  36. 关于值类型与引用类型 • 从变量的存储方式看,C#中的变量可以分为值类型变量与引用类型变量 1. 值类型 2. 引用类型

  37. 1. 值类型 • 值类型变量直接包含其本身的数据,因此每个值类型变量本身就包含有赋给它的值 • 在C#中,内置数据类型除了字符串(string)类型与对象(object)类型外,其余均为值类型

  38. 2. 引用类型 • 与值类型不同,引用类型变量本身不包含数据,只是存储对数据的引用,数据保存在内存的其他位置 • 值类型与引用类型变量都可以使用变量来赋值 • 两者用变量赋值的性质不同: • 对于值类型变量赋值,赋的是变量的值 • 对于引用类型变量的赋值,赋的是变量的引用

  39. 例如: int x = 42, y = x; String t1 = newString(“Hello!”); String t2 = t1; // 使用对象变量赋值 • 用变量“x”为变量“y”赋值,是将“x”所在内存中的值复制给了“y” • 而用变量“t1”为“t2”赋值,则是将“t1”对数据的引用复制给了“t2”,即两个对象变量使用的是同一内存中的数据,也就是说,用“t1”为“t2”赋值不需要使用new关键字对对象初始化,也就没有为对象“t2”分配存储数据的内存空间

More Related