日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Dart基础学习02--变量及内置类型

發(fā)布時(shí)間:2023/12/10 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dart基础学习02--变量及内置类型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Dart基礎(chǔ)學(xué)習(xí)02--變量及內(nèi)置類型

Dart中的變量

首先看一個(gè)變量的定義和賦值

var name = 'Bob';

在Dart中變量名都是引用,這里的name就是一個(gè)指向值為Bob的字符串的引用。

默認(rèn)值

在Dart中沒有初始化的變量都有一個(gè)默認(rèn)值null,哪怕是int型的變量它的初始值也是null,因?yàn)樵贒art中int也是一個(gè)對(duì)象。

int lineCount; assert(lineCount == null); 注意:這里引入一個(gè)Dart的重點(diǎn)知識(shí),在Dart中任何可以放入變量中的都屬于`對(duì)象`,而對(duì)象又都是`類`的一個(gè)實(shí)例。即使是數(shù)字,方法,null也都是對(duì)象,并且所有的對(duì)象都繼承自`Object`這個(gè)類。

可選類型

在Dart中,可以選擇使用靜態(tài)類型來定義變量,如下:

String name = 'Bob';

這樣做的好處有以下幾點(diǎn):
1.變量可以更好的表達(dá)你的意圖。
2.編輯器或編譯器可以通過變量的靜態(tài)類型來檢測代碼中未知餓的錯(cuò)誤。

final 和 const

如果一個(gè)變量不允許改變的話可以使用final和const關(guān)鍵字來代替var或者其他靜態(tài)類型。其中final類型的變量只能被賦值一次,而const類型的為編譯時(shí)常量自然也無法改變其值。

一個(gè)用final定義的頂級(jí)變量或類成員變量只有在它第一次被使用的時(shí)候才會(huì)初始化。

final name = 'Bob'; // 也可以寫作: final String name = 'Bob'; // name = 'Alice'; // 這一步會(huì)報(bào)錯(cuò) 注意:final的這種懶惰型初始化方法可以有效的提升程序運(yùn)行速度。

如果你想要讓你的變量是編譯時(shí)常量的話就可以使用const關(guān)鍵字,但需要注意的是如果這個(gè)變量是一個(gè)類的成員變量的話就必須要使用static const。原因是如果沒有聲明一個(gè)類的對(duì)象事例的話,類的成員變量是不存在的,既然不存在自然就無法將其作為編譯時(shí)常量了。更近一步說,只有在程序運(yùn)行且聲明了類的對(duì)象實(shí)例的情況下,其成員變量才是存在的。使用static修飾成員變量的話此變量就與對(duì)象實(shí)例無關(guān)了而可以直接通過類來獲得。

const bar = 1000000; // 壓力單位 (dynes/cm2) const atm = 1.01325 * bar; // 標(biāo)準(zhǔn)大氣壓

Dart的內(nèi)置類型

Dart支持的內(nèi)置數(shù)據(jù)類型有:數(shù)字,字符串,布爾,數(shù)組,集合等。

數(shù)字類型

Dart提供兩種數(shù)字類型:

int
整型,范圍在 -2^53 to 2^53.

double
64位雙精度浮點(diǎn)類型,采用 IEEE 754標(biāo)準(zhǔn)。

int和double都是num的子類,num類型之間的基本操作有+,-,*,/和位操作<<,>>。另外num對(duì)象有abs(),ceil(),floor和一些其他的運(yùn)算方法。如果以上這些方法還滿足不了你的話,你可以使用Math庫。

下面是一些整形變量的定義:

var x = 1; var hex = 0xDEADBEEF; var bigInt = 34653465834652437659238476592374958739845729;

下面是一下雙精度型變量的定義:

var y = 1.1; var exponents = 1.42e5;

你也可以使用下面這些方法將字符串轉(zhuǎn)換為數(shù)字類型:

// String -> int var one = int.parse('1'); assert(one == 1);// String -> double var onePointOne = double.parse('1.1'); assert(onePointOne == 1.1);// int -> String String oneAsString = 1.toString(); assert(oneAsString == '1');// double -> String String piAsString = 3.14159.toStringAsFixed(2); assert(piAsString == '3.14');

int類型支持按位操作如<<,>>,&,|,看一下下面幾個(gè)例子:

assert((3 << 1) == 6); // 0011 << 1 == 0110 assert((3 >> 1) == 1); // 0011 >> 1 == 0001 assert((3 | 4) == 7); // 0011 | 0100 == 0111

字符串類型

在Dart中字符串采用utf-16的編碼格式。可以使用單引號(hào)'或雙引號(hào)"來創(chuàng)建變量。

var s1 = 'Single quotes work well for string literals.'; var s2 = "Double quotes work just as well."; var s3 = 'It\'s easy to escape the string delimiter.'; var s4 = "It's even easier to use the other delimiter.";

在Dart中可以使用${expression}作為作為字符串的插值,若expression 只是一個(gè)變量標(biāo)識(shí)符的話可以省略{}。

var s = 'string interpolation';assert('Dart has $s, which is very handy.' =='Dart has string interpolation, ' +'which is very handy.'); assert('That deserves all caps. ' +'${s.toUpperCase()} is very handy!' =='That deserves all caps. ' +'STRING INTERPOLATION is very handy!'); 注意:在Dart中用`==`來判斷兩個(gè)對(duì)象是都等效。兩個(gè)字符串等效的條件是他們包含相同的字符串。

在Dart中可以將幾個(gè)字符串靠在一起或使用+來連接它們:

var s1 = 'String ' 'concatenation'" works even over line breaks."; assert(s1 == 'String concatenation works even over ''line breaks.');var s2 = 'The + operator '+ 'works, as well.'; assert(s2 == 'The + operator works, as well.');

另外還可以使用三個(gè)"來定義多行的字符串:

var s1 = ''' You can create multi-line strings like this one. ''';var s2 = """This is also a multi-line string.""";

可以使用r來定義一些原生字符串(轉(zhuǎn)義字符無效):

var s = r"In a raw string, even \n isn't special.";

布爾類型

在Dart中使用bool標(biāo)識(shí)布爾類型。bool類型的只只有true或false。值得注意的是在Dart中只有true會(huì)被當(dāng)作是正確,而false或者其他數(shù)字,null等都會(huì)被當(dāng)作false。
下面這段代碼,在Dart中if條件是不成立的。應(yīng)為name是一個(gè)對(duì)象。

var name = 'Bob'; if (name) {// Prints in JavaScript, not in Dart.print('You have a name!'); }

下面這段代碼中的Dart會(huì)進(jìn)入else段,而JavaScript則會(huì)進(jìn)入if段:

if (1) {print('JS prints this line.'); } else {print('Dart in production mode prints this line.'); }

數(shù)組

在Dart中使用List來表示數(shù)組,這個(gè)是比較讓我們不能接受的一個(gè)設(shè)計(jì)。不多說看具體怎么用吧:

var list = [1, 2, 3]; //List list = [1, 2, 3]; assert(list.length == 3); assert(list[1] == 2);

在List中的單位也是從0開始的。

鍵值集合

在Dart中使用Map來表示鍵值類集合。其中的鍵值可以是任何對(duì)象且鍵不能重復(fù)。
下面看一下Map的具體用法:

var gifts = { // Keys Values'first' : 'partridge','second': 'turtledoves','fifth' : 'golden rings' };var nobleGases = { // Keys Values2 : 'helium',10: 'neon',18: 'argon', };

同樣可以使用構(gòu)造方法來定義Map:

var gifts = new Map(); gifts['first'] = 'partridge'; gifts['second'] = 'turtledoves'; gifts['fifth'] = 'golden rings';var nobleGases = new Map(); nobleGases[2] = 'helium'; nobleGases[10] = 'neon'; nobleGases[18] = 'argon';

往Map中添加新鍵值:

var gifts = {'first': 'partridge'}; gifts['fourth'] = 'calling birds'; // Add a key-value pair

Map中檢索鍵所對(duì)應(yīng)的值:

var gifts = {'first': 'partridge'}; assert(gifts['first'] == 'partridge'); assert(gifts['second'] == null);

獲得Map中鍵值對(duì)的個(gè)數(shù):

var gifts = {'first': 'partridge'}; gifts['fourth'] = 'calling birds'; assert(gifts.length == 2);

從Map中移除鍵值對(duì):

var nobleGases = {54: 'xenon'};assert(nobleGases[54] == 'xenon');// containsKey方法可以用于判斷是否包含某個(gè)Key assert(nobleGases.containsKey(54));nobleGases.remove(54); assert(!nobleGases.containsKey(54));

Map的更多用法可以參考Maps。

所有Dart學(xué)習(xí)內(nèi)容和相關(guān)源碼都會(huì)在github上的DartNovel開源項(xiàng)目進(jìn)行同步,歡迎關(guān)注。

轉(zhuǎn)載于:https://www.cnblogs.com/zqlxtt/p/4825410.html

總結(jié)

以上是生活随笔為你收集整理的Dart基础学习02--变量及内置类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。