零基礎(chǔ)學(xué)Dart04-變量

“唯一不變的是變化本身”。 —— 斯賓塞·約翰遜

dart變量.png

什么是變量?

變量是一種使用方便的占位符,用于引用計(jì)算機(jī)內(nèi)存地址,該地址可以存儲程序運(yùn)行時(shí)可更改的程序信息。例如,可以創(chuàng)建一個(gè)名為 click_count 的變量來存儲用戶單擊 Web 頁面上某個(gè)對象的次數(shù)。使用變量并不需要了解變量在計(jì)算機(jī)內(nèi)存中的地址,只要通過變量名引用變量就可以查看或更改變量的值。它實(shí)質(zhì)上是一個(gè)時(shí)刻都可能會改變的東西的代稱,而這個(gè)變化又有一定的范圍,使得無論它怎么變,它還是它。

變量的存儲

可以把計(jì)算機(jī)的內(nèi)存想象成下圖的快遞柜,有很多格子、每個(gè)格子都有編號。我們定義一個(gè)計(jì)算機(jī)變量就好像向快遞柜申請一個(gè)格子用來存放東西,這個(gè)格子的大小呢是根據(jù)變量的類型(就是想要存放的物品的可能尺寸)來分配的。而在申請一個(gè)格子的時(shí)候,里面可能會存在一些東西,當(dāng)我們放新的東西的進(jìn)去的時(shí)候就會把原來的東西給擠走(更準(zhǔn)確說是覆蓋,舊的東西找不回來了)。如果我們想讓這個(gè)格子里的內(nèi)容參與運(yùn)算的時(shí)候,我們只需要告訴運(yùn)算的指令這個(gè)格子的名稱(即變量的名稱)即可。

變量的語法

聲明變量

在使用變量之前必須先聲明變量。Dart 使用 var 關(guān)鍵字來標(biāo)識一個(gè)變量,后跟變量名和可選的初始值。下面的示例代碼聲明了一個(gè)變量名為count的整型變量,其初始值為8:

var count = 8;

Dart 還支持使用數(shù)據(jù)類型來聲明變量,例如:

String name;
int age;

在這個(gè)例子中,我們使用 String 和 int 關(guān)鍵字聲明了一個(gè)字符串變量name和整數(shù)變量age。

有時(shí)希望同時(shí)聲明多個(gè)變量,只需用逗號分隔開即可,如下代碼所示:

var name, age, height;

在這個(gè)例子中,我們聲明了名為 name、age、height 的三個(gè)變量,但是沒有為它分配初始值。

初始化變量

在 Dart 中,初始化變量意味著為變量分配一個(gè)初始值。在聲明變量時(shí),您可以在 = 操作符后面為變量賦值。例如,下面的代碼初始化了一個(gè)名為 name 的字符串變量:

var name = 'Jacky'; 

這將把字符串 'Jacky' 分配給 name 變量。

變量僅存儲對象的引用。這里名為 name 的變量存儲了一個(gè) String 類型對象的引用,“jacky” 則是該對象的值。

name 變量的類型被推斷為 String,你也可以為其指定類型。如果一個(gè)對象的引用不局限于單一的類型,可以根據(jù)設(shè)計(jì)指南將其指定為 Object 或 dynamic 類型。

在 dart 中可以使用 var 來替代具體類型的聲明,會自動推導(dǎo)變量的類型,這是因?yàn)?var 并不是直接存儲值,而是存儲值的對象引用,所以 var 可以聲明任何變量。

您還可以在需要時(shí)將變量初始化為 null 值:

int? age = null;

使用 ? 來聲明一個(gè)可空類型,這意味著變量可以為 null。

在 Dart 中,未初始化的變量擁有一個(gè)默認(rèn)的初始化值:null。即便數(shù)字也是如此,因?yàn)樵?Dart 中一切皆為對象,數(shù)字也不例外。

dynamic

聲明未指定靜態(tài)類型的變量則會隱式聲明為 dynamic 。也可以使用dynamic關(guān)鍵字代替var關(guān)鍵字聲明變量。

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

如果你不想更改一個(gè)變量,可以使用關(guān)鍵字 final 或者 const 修飾變量,這兩個(gè)關(guān)鍵字可以替代 var 關(guān)鍵字或者加在一個(gè)具體的類型前。一個(gè) final 變量只可以被賦值一次;const關(guān)鍵字用于表示編譯時(shí)常量。使用const關(guān)鍵字聲明的變量是隱式final。

下面的示例中我們創(chuàng)建并設(shè)置兩個(gè) final 變量:

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

你不能修改一個(gè) final 變量的值:

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

final 和 const 的區(qū)別在于如果常量是編譯期就能初始化的就用 const, 如果常量是運(yùn)行時(shí)期初始化的就用 final。

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

注釋```` 你可能注意到了上文的代碼中已經(jīng)包含了注釋;```` Dart 支持單行注釋、多行注釋和文檔注釋```` 單行注釋以 // 開始。所有在 // 和該行結(jié)尾之間的內(nèi)容被編譯器忽略。```` 多行注釋以 /* 開始,以/ 結(jié)尾。所有在 // 之間的內(nèi)容被編譯器忽略(不會忽略文檔注釋)。多行注釋可以嵌套。```` 文檔注釋可以是多行注釋,也可以是單行注釋,文檔注釋以 /// 或者 /`* 開始。在連續(xù)行上使用 /// 與多行文檔注釋具有相同的效果。```

標(biāo)識符

變量名稱稱為標(biāo)識符,標(biāo)識符命名規(guī)則:

  • 標(biāo)識符不能是關(guān)鍵字
  • 標(biāo)識符可以包含數(shù)字和字母
  • 標(biāo)識符不能包含空格和特殊字符,但下劃線(_)和美元($)符號除外
  • 變量名稱不能以數(shù)字開頭;

Dart 是一種現(xiàn)代化的編程語言,提供了豐富的關(guān)鍵字和語法,用于定義類、變量和函數(shù)等。以下是 Dart 中的所有關(guān)鍵字:

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

總結(jié)

在本文中,我們簡要介紹了 Dart 變量的概念、如何聲明、初始化和使用它們。作為一個(gè)初學(xué)者,這將是您開始學(xué)習(xí) Dart 編程的良好基礎(chǔ)。記住,變量是程序的基本組成部分,它們可以用來存儲和操作數(shù)據(jù),從而實(shí)現(xiàn)程序的邏輯。

練習(xí)

1.使用DartPad聲明并初始化三個(gè)變量,分別是你的姓名、年齡、身高,并且打印出來。

2.請選擇以下所有符合命名規(guī)則的標(biāo)識符

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

本文由mdnice多平臺發(fā)布

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容