CH02_变量与常量


本章目标

  • 掌握C#中的基本数据类型
  • 掌握变量与常量的使用

基本数据类型

数据类型主要用于指明变量和常量存储值的类型,C# 语言是一种强类型语言,要求每个变量都必须指定数据类型。

C# 语言的数据类型分为值类型和引用类型。

值类型包括整型、浮点型、字符型、布尔型、枚举型等;引用类型包括类、接口、数组、委托、字符串等。

从内存存储空间的角度而言,值类型的值是存放到栈中的,每次存取值都会在该内存中操作;引用类型首先会在栈中创建一个引用变量,然后在堆中创建对象本身,再把这个对象所在内存的首地址赋给引用变量。

整型

所谓整型就是存储整数的类型,按照存储值的范围不同,C# 语言将整型分成了 byte 类型、short 类型、int 类型、long 类型等,并分别定义了有符号数和无符号数。

有符号数可以表示负数,无符号数仅能表示正数。

具体的整数类型及其表示范围如下表所示。

从上面的表中可以看出 short、int 和 long 类型所对应的无符号数类型都是在其类型名称前面加上了 u 字符,只有 byte 类型比较特殊,它存储一个无符号数,其对应的有符号 数则是 sbyte。

此外,在 C# 语言中默认的整型是 int 类型。

浮点型

浮点型是指小数类型,浮点型在 C# 语言中共有两种,一种称为单精度浮点型,一种称为双精度浮点型。

关于浮点型的具体说明如下表所示。

在 C# 语言中默认的浮点型是 double 类型。如果要使用单精度浮点型,需要在数值后 面加上 f 或 F 来表示,例如 123.45f、123.45F。

字符型和字符串型

字符型只能存放一个字符,它占用两个字节,能存放一个汉字。

字符型用 char 关键字表示,存放到 char 类型的字符需要使用单引号括起来,例如 ‘a’、’中’ 等。

字符串类型能存放多个字符,它是一个引用类型,在字符串类型中存放的字符数可以认为是没有限制的,因为其使用的内存大小不是固定的而是可变的。

使用 string 关键字来存放字符串类型的数据。字符串类型的数据必须使用双引号括起来,例如 “abc”、”123” 等。

在 C# 语言中还有一些特殊的字符串,代表了不同的特殊作用。由于在声明字符串类型的数据时需要用双引号将其括起来,那么双引号就成了特殊字符,不能直接输出,转义字符的作用就是输出这个有特殊含义的字符。

转义字符非常简单,常用的转义字符如下表所示。

布尔型

在 C# 语言中,布尔类型使用 bool 来声明,它只有两个值,即 true 和 false。

当某个值只有两种状态时可以将其声明为布尔类型,例如,是否同意协议、是否购买商品等。

布尔类型的值也被经常用到条件判断的语句中,例如,判断某个值是否为偶数、判断某个日期 是否是工作日等。

课堂案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FirstProject
{
class Program
{
static void Main(string[] args)
{
//整型
sbyte num1 = 127;
byte num2 = 255;

//浮点型
float num3 = 3.14f; //-3.40282347*10的38次方到 3.40282347*10的38次方

//字符、字符串型
char sex = '男';
string name = "张三";

//布尔型
bool isAdult = true;

//输出
Console.WriteLine(sex);
Console.WriteLine(name);
Console.WriteLine(isAdult);

Console.ReadLine();
}
}
}

变量的定义和使用

使用步骤

1.声明

1
2
string name;//数据类型 变量名;
int n1,n2;//同时声明多个变量

2.赋值

1
2
3
name="张三";//变量名="值";
int age=18;//声明与赋值合二为一
int a=5,b=8,c=10;//同时声明多个变量且赋值

3.使用

1
Console.WriteLine(name);

常量的定义和使用

与变量不同的是,常量在第一次被赋值后值就不能再改变。定义常量需要使用关键字 const 来完成。 具体的语法形式如下:

使用步骤

1
const 数据类型 常量名 = 值;

课堂案例

1
2
3
4
5
6
7
8
9
10
class Program
{
static void Main(string[] args)
{
const double PI = 3.14;
int r = 3; //存放半径
Console.WriteLine("圆的周长是:" + 2 * PI * r);
Console.WriteLine("圆的面积是:" + PI * r * r);
}
}

输入与输出

输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FirstProject
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入姓名:");
string name = Console.ReadLine();

Console.WriteLine("请输入年龄:");
int age = int.Parse(Console.ReadLine());

Console.WriteLine("姓名:"+name);
Console.WriteLine("年龄:" + age);

Console.ReadLine();
}
}
}

输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FirstProject
{
class Program
{
static void Main(string[] args)
{

string name = "张三";
int age = 18;
char sex = '男';


//直接输出
Console.WriteLine(name);
Console.WriteLine(age);
Console.WriteLine(sex);
Console.WriteLine("-----------------------------------");

//拼接输出
Console.WriteLine("姓名:"+name);
Console.WriteLine("年龄:" + age);
Console.WriteLine("性别:" + sex);
Console.WriteLine("-----------------------------------");

//格式化输出
Console.WriteLine("姓名:\t{0}\n年龄:\t{1}\n性别:\t{2}",name,age,sex);
Console.WriteLine("-----------------------------------");

Console.ReadLine();
}
}
}

命名规则

C# 命名规则是为了让整个程序代码统一以增强其可读性而设置的。每一个单位在开发一个软件之前都会编写一份编码规范的文档。

常用的命名方法有两种,一种是 Pascal 命名法(帕斯卡命名法),另一种是 Camel 命名法(驼峰命名法)。

Pascal 命名法是指每个单词的首字母大写;Camel 命名法是指第一个单词小写,从第二个单词开始每个单词的首字母大写。

1.变量的命名规则

变量的命名规则遵循 Camel 命名法,并尽量使用能描述变量作用的英文单词。例如存放学生姓名的变量可以定义成 name 或者 studentName 等。另外,变量名字也不建议过长, 最好是 1 个单词,最多不超过 3 个单词。

2.常量的命名规则

为了与变量有所区分,通常将定义常量的单词的所有字母大写。例如定义求圆面积的 n 的值,可以将其定义成一个常量以保证在整个程序中使用的值是统一的,直接定义成 PI 即可。

3.类的命名规则

类的命名规则遵循 Pascal 命名法,即每个单词的首字母大写。例如定义一个存放学生信息的类,可以定义成 Student。

4.接口的命名规则

接口的命名规则也遵循 Pascal 命名法,但通常都是以 I 开头,并将其后面的每个单词的首字母大写。例如定义一个存放值比较操作的接口,可以将其命名为 ICompare。

5.方法的命名规则

方法的命名遵循 Pascal 命名法,一般采用动词来命名。例如实现添加用户信息操作的方法,可以将其命名为 AddUser。

课后作业

1.按照下图,完成作业

2.按照下图,完成作业

3.编程实现,分别提示用户输入姓名、身高、爱好,然后再格式化输出。