9.创建变量,到底哪种写法最好?
误删
~~ 声明变量只是向编译器 “报备” 变量名的合法性,此刻变量还是空的,没有数据进入。就像你提前预定酒店房间,但还没有真正办理入住。~~ ~~ 这时,数据才会真正写入内存。就相当于你在酒店办理了入住,房间正式分配给你了。~~
第 9 集《创建变量,到底哪种语法好?》
开篇
大家好!我是村长。
上节课,我们搞懂了变量的本质。
今天,我们就正式动手创建变量。
创建变量,常见有三种写法。
但真正开发中,程序员几乎只用一种。
另外两种,要么看情况,要么几乎不用。
本期视频,我就带你搞清楚:
为什么会有三种写法?到底哪一种最好?
知识点:
- 三种创建变量的语法
- 哪种语法最推荐用
- 哪种语法需要看情况用
- 哪种语法看懂就行,但不推荐用
(LOGO 动画)
语法1:声明并初始化(推荐用)
声明并初始化是我们最推荐、也是最常用的写法
奇奇:什么叫“声明并初始化”?
村长:其实可以把它拆成两个词来看。
声明,就是声明一个变量。
初始化,就是第一次给这个变量赋值。
两件事一起完成,就叫:声明并初始化。
语法很简单:先写数据类型 再写变量名 最后使用等号赋值
数据类型 变量名 = 值;
来看一道例题:
例9.1 请根据下面的数据选择合适的数据类型,声明变量并初始化,最后输出到控制台 数据记录了关于用户,不同类型的信息
| 数据项 | 值 |
|---|---|
| 用户名 | "奇奇" |
| 年龄 | 6 |
| 体重 | 21.5 |
| 性别 | '男' |
| 婚姻状态 | false |
因为用户名奇奇是字符串
(切换到 Visual Studio,边演示边讲解)
string userName = "奇奇";
所以使用 string关键字指定变量 userName 只能存字符串
然后使用等号把"奇奇"赋值给变量userName。
这里的 = 不是数学里的"等于",而是赋值运算符。它表示:把右边的数据,存入左边变量中。
因为是首次次赋值,所以这一步叫初始化。
奇奇:那以后再修改 userName 的值还叫初始化吗?
村长:那就不叫初始化了,而叫赋值。初始化强调的是首次赋值。
奇奇:那为什么推荐这种写法呢?
村长:因为简洁、安全。你看!这一行代码同时完成了两件事:既告诉编译器“我需要什么类型的变量”,又把数据存了进去。
变量一旦创建,就已经完成了第一次赋值,避免了忘记赋值。
所以请记住一句话:以后写代码,能一步到位,就不要分两步。
这也是实际开发中最常见、最推荐的写法。
接下来,使用同样的思路创建其他变量: (演示其他四 行声明初始化语句)
int age = 6; // 使用 int 类型声明一个变量 age存储年龄
double weight = 21.5; // 使用 double 类型声明一个变量 weight存储体重
char gender = '男'; // 使用 char 类型声明一个变量 gender 存储性别('男'或'女')
bool isMarried = false; // 使用 bool 类型声明一个变量isMarried存储婚姻状态(true 或 false)
最后,我们用输出语句把变量的值输出到控制台。
Console.WriteLine("=====用户信息=====");
Console.WriteLine("用户名:" + userName);
Console.WriteLine("年龄:" + age);
Console.WriteLine("体重:" + weight);
Console.WriteLine("性别:" + gender);
Console.WriteLine("婚姻状态:" + isMarried);
输入完成后,点击保存,点击"开始执行",可以看到:用户信息成功输出了。
注意:如果把变量值 "奇奇" 删掉,编译器会直接报错。
这是因为:C#为了避免程序读取一个没有初始化的数据, 定下一条铁律:
变量必须先赋值,才能使用。
村长小贴士:
如果你去看一些有经验的程序员写的代码,可能会发现他们不写 string、int,而是写三个字母——var。
比如 var age = 6;。这并不是一种新的数据类型——它表示让编译器自动推断类型。编译器会看看右边是啥,自动推断出左边是什么类型。既然 6 是整数,那 age 自动就是 int类型。
对此,微软官方的建议是:对于初学者,建议继续使用实际的数据类型名称,直到你更熟悉代码。 对于有经验的开发者,则需要在代码可读性之间做权衡。所以在这里:建议你暂时别用 var。老老实实用 int、string、double,这个过程本身就是帮你熟悉数据类型的过程,这叫肌肉记忆。var 你只要能看懂就行,等以后写熟了再考虑偷懒。
语法2:先声明,后赋值(看情况用)
说完最推荐的一步到位,再来看第二种:先声明,后赋值。
顾名思义,就是分两步走。
奇奇:既然能一步到位,就不要分两步,为什么还要提供第二种写法?
村长:因为有些情况下,变量虽然已经声明,但它的值还没产生,这时,就只能先声明,等值确定以后再赋值。
先声明,后赋值的语法也很简单:
数据类型 变量名;
变量名 = 数据值;
第一步:声明变量,不赋值。
第二步:等拿到数据以后,再赋值。
请看例题:
例9.2 请编写程序,根据单价(10元)和数量(5个)计算商品总价(total),并输出结果。
首先,这道题的目标是输出商品总价, 我们可以先声明一个 total变量 存储商品总价。
但这时总价还是未知的,所以先声明,不赋值。
接着输出总价,把解题的基本结构先写出来。
int total;
Console.WriteLine("您购买商品的总价是:" + total + "元");
因为 total 没有赋值,就直接拿去输出。所以这里会报错。
给 total 赋值,我们需要通过单价和数量计算出总价。 在int total;的下一行,用 int 关键字声明变量price,并赋值10, 声明变量count,赋值5 这样就可以计算出总价,total = price * count; 星号表示相乘。
int total;
int price = 10;
int count = 5;
total = price * count;
Console.WriteLine("您购买商品的总价是:" + total + "元");
点击"开始执行",这样,总价就输出成功。
村长小贴士:
知道值,就一步到位; 不知道值,就先占位置。
语法3:一次声明多个变量(不推荐用)
接下来这种语法,你必须能看懂,但平时写代码,不推荐使用。
语法也很简单。 先写数据类型, 再用英文逗号,分隔多个同类型的变量名
数据类型 变量名1, 变量名2, 变量名3;
例如:我们要定义三个整数类型变量,可以这样写:
int a, b, c;
当然,声明的同时,也可以直接赋值:
int a = 10, b = 20, c = 30;
奇奇:既然不推荐,为什么 C# 还支持这种写法? 村长:因为它可以一次声明多个同类型的变量,代码确实更短。但是,代码短,并不代表代码好。
现在大多数开发团队,更推荐一行一个变量, 因为可读性更好,维护更方便
总结
创建变量的三种常见语法,我们已经全部学完。
最后总结一下:
以后创建变量时,你只需判断一件事: 有值,就用语法一:声明并初始化; 没值,就用语法二:先声明后赋值; 语法三:一次声明多个变量,认识就行,不推荐用
结束语
本期视频就到这里。我是村长。
如果这个视频对你有帮助,记得点赞、收藏、关注。 感谢观看,我们下期见。
语法2:先声明 后赋值(看情况用)
声明变量的语法是:先写数据类型,再写变量名。
来看一道例题:
例8.1
string userName; // 我们可以使用 string 类型声明一个变量userName 存储用户名
int age; // 使用 int 类型声明一个变量 age存储年龄
double weight; // 使用 double 类型声明一个变量 weight存储体重
char gender; // 使用 char 类型声明一个变量 gender 存储性别('男'或'女')
bool isMarried; // 使用 bool 类型声明一个变量isMarried存储婚姻状态(true 或 false)
这里要特别注意:
声明变量,只是向编译器 “报备” 变量名的合法性,此刻变量还是空的,没有数据进入。
这就像你提前预定酒店房间,但还没有真正办理入住。
在 C# 里有一条铁律:变量必须先赋值,才能使用。
首次给变量赋值,叫作“初始化“。
赋值的语法是:等号左边是变量名,等号右边是你要存储的数据值;
变量名 = 数据值;
注意:这里的 = 不是数学里的"相等",而是赋值运算符,意思是:把右边的数据,存到左边变量名对应的内存里。
来看下一道例题:
例8.2 请根据以下数据,为例8.1中的变量完成赋值,并输出到控制台
| 数据项 | 值 |
|---|---|
| 用户名 | "奇奇" |
| 年龄 | 6 |
| 体重 | 21.5 |
| 性别 | '男' |
| 婚姻状态 | false |
回到 Visual Studio。这道题分两步:先赋值,再输出。
第一步,为变量赋值。可以按一下暂停,自己先写一遍,再回来看:
userName = "奇奇"; // 为 userName 赋值"奇奇",注意使用英文双引号。
age = 6; // 直接为 age 赋值整数6,什么符号也不用加
weight = 21.5; // 同样直接为 weight 赋值 小数21.5
gender = '男'; // 为 gender 赋值 '男',注意加上英文单引号
isMarried = false; // 变量isMarried是布尔值,布尔值只有 true 或 false 两个值,在这里赋值 false;
赋值完成后,数据才会真正写入内存。
就相当于你在酒店办理了入住,房间正式分配给你了。
第二步,用输出语句Console.WriteLine() 把变量的值打印到控制台。
小括号里直接写变量名就行。因为这些变量在上面已经声明并且初始化了,编译器认得它们。
Console.WriteLine(userName);
Console.WriteLine(age);
Console.WriteLine(weight);
Console.WriteLine(gender);
Console.WriteLine(isMarried);
输入完成后,点击保存,点击运行,可以看到:变量值成功输出了。
注意:如果把声明或赋值注释掉,编译器立刻翻脸报错。