零基础学Dart04-变量

“唯一不变的是变化本身”。 —— 斯宾塞·约翰逊

dart变量.png

什么是变量?

变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储程序运行时可更改的程序信息。例如,可以创建一个名为 click_count 的变量来存储用户单击 Web 页面上某个对象的次数。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。它实质上是一个时刻都可能会改变的东西的代称,而这个变化又有一定的范围,使得无论它怎么变,它还是它。

变量的存储

可以把计算机的内存想象成下图的快递柜,有很多格子、每个格子都有编号。我们定义一个计算机变量就好像向快递柜申请一个格子用来存放东西,这个格子的大小呢是根据变量的类型(就是想要存放的物品的可能尺寸)来分配的。而在申请一个格子的时候,里面可能会存在一些东西,当我们放新的东西的进去的时候就会把原来的东西给挤走(更准确说是覆盖,旧的东西找不回来了)。如果我们想让这个格子里的内容参与运算的时候,我们只需要告诉运算的指令这个格子的名称(即变量的名称)即可。

变量的语法

声明变量

在使用变量之前必须先声明变量。Dart 使用 var 关键字来标识一个变量,后跟变量名和可选的初始值。下面的示例代码声明了一个变量名为count的整型变量,其初始值为8:

var count = 8;

Dart 还支持使用数据类型来声明变量,例如:

String name;
int age;

在这个例子中,我们使用 String 和 int 关键字声明了一个字符串变量name和整数变量age。

有时希望同时声明多个变量,只需用逗号分隔开即可,如下代码所示:

var name, age, height;

在这个例子中,我们声明了名为 name、age、height 的三个变量,但是没有为它分配初始值。

初始化变量

在 Dart 中,初始化变量意味着为变量分配一个初始值。在声明变量时,您可以在 = 操作符后面为变量赋值。例如,下面的代码初始化了一个名为 name 的字符串变量:

var name = 'Jacky'; 

这将把字符串 'Jacky' 分配给 name 变量。

变量仅存储对象的引用。这里名为 name 的变量存储了一个 String 类型对象的引用,“jacky” 则是该对象的值。

name 变量的类型被推断为 String,你也可以为其指定类型。如果一个对象的引用不局限于单一的类型,可以根据设计指南将其指定为 Object 或 dynamic 类型。

在 dart 中可以使用 var 来替代具体类型的声明,会自动推导变量的类型,这是因为 var 并不是直接存储值,而是存储值的对象引用,所以 var 可以声明任何变量。

您还可以在需要时将变量初始化为 null 值:

int? age = null;

使用 ? 来声明一个可空类型,这意味着变量可以为 null。

在 Dart 中,未初始化的变量拥有一个默认的初始化值:null。即便数字也是如此,因为在 Dart 中一切皆为对象,数字也不例外。

dynamic

声明未指定静态类型的变量则会隐式声明为 dynamic 。也可以使用dynamic关键字代替var关键字声明变量。

void main() { 
   dynamic x = "tom"; 
   print(x);  
}
常量( final 和 const )

如果你不想更改一个变量,可以使用关键字 final 或者 const 修饰变量,这两个关键字可以替代 var 关键字或者加在一个具体的类型前。一个 final 变量只可以被赋值一次;const关键字用于表示编译时常量。使用const关键字声明的变量是隐式final。

下面的示例中我们创建并设置两个 final 变量:

final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';

你不能修改一个 final 变量的值:

name = 'Alice'; // Error: a final variable can only be set once.

final 和 const 的区别在于如果常量是编译期就能初始化的就用 const, 如果常量是运行时期初始化的就用 final。

main() {    
  const PI = 3.141592653;//const定义常量    
  final nowTime = DateTime.now();//final定义常量
}

注释```` 你可能注意到了上文的代码中已经包含了注释;```` Dart 支持单行注释、多行注释和文档注释```` 单行注释以 // 开始。所有在 // 和该行结尾之间的内容被编译器忽略。```` 多行注释以 /* 开始,以/ 结尾。所有在 // 之间的内容被编译器忽略(不会忽略文档注释)。多行注释可以嵌套。```` 文档注释可以是多行注释,也可以是单行注释,文档注释以 /// 或者 /`* 开始。在连续行上使用 /// 与多行文档注释具有相同的效果。```

标识符

变量名称称为标识符,标识符命名规则:

  • 标识符不能是关键字
  • 标识符可以包含数字和字母
  • 标识符不能包含空格和特殊字符,但下划线(_)和美元($)符号除外
  • 变量名称不能以数字开头;

Dart 是一种现代化的编程语言,提供了丰富的关键字和语法,用于定义类、变量和函数等。以下是 Dart 中的所有关键字:

abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get if implements import in interface is late library mixin new null of on operator part required rethrow return set show static super switch sync this throw true try typedef var void while with yield

总结

在本文中,我们简要介绍了 Dart 变量的概念、如何声明、初始化和使用它们。作为一个初学者,这将是您开始学习 Dart 编程的良好基础。记住,变量是程序的基本组成部分,它们可以用来存储和操作数据,从而实现程序的逻辑。

练习

1.使用DartPad声明并初始化三个变量,分别是你的姓名、年龄、身高,并且打印出来。

2.请选择以下所有符合命名规则的标识符

(A) _book
(B) 23_b1
(C) stu_1t
(D) #33
(E) true
(F) -3.14159
(G) $100

本文由mdnice多平台发布

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容