大石橋網(wǎng)站地推app接任務(wù)平臺
文章目錄
- Dart語言特性
- 一、變量
- 變量定義
- 變量默認(rèn)值
- 二、常量
- 三、數(shù)據(jù)類型
- 數(shù)字類型
- 字符串
- 布爾值
- 列表
- 集合
- 映射
- 符文
- 運(yùn)算符
- 級聯(lián)運(yùn)算符
- 類型判定符
Dart語言特性
- 一切皆為對象,在Dart語言中所有變量類型都是對象,null也是對象,函數(shù)也是對象,所有對象都繼承自O(shè)bject。
- Dart是強(qiáng)類型語言,但是變量類型聲明是可選的,Dart可以推斷出變量的類型。
- Dart支持泛型類型,類似java的泛型。
- 函數(shù)支持嵌套。
- 不支持public,protected和private關(guān)鍵字,在Dart語言中,可以通過下劃線(_)開頭命名來表示私有的,反之就是公開的。
一、變量
變量定義
通過var定義并初始化變量
var name = 'ABC';
Dart語言是強(qiáng)類型語言,雖然這里沒有指定變量類型,但Dart編譯器可以通過首次初始化推斷變量的類型。
String name = 'ABC'; //我們也可以直接定義String類型并初始化
變量默認(rèn)值
因?yàn)樵贒art語言中一切皆為對象,所以在定義變量時(shí),未初始化的值都是null
int sum; //這里的sum的默認(rèn)值是null
二、常量
在Dart中的const 和 final 都可以用來定義一個不可變的常量
final name = 'Jack';
final String secondName = 'Rose'; //同樣的可以指定或不指定數(shù)據(jù)類型
const age = 18;
final和const的區(qū)別就是在編譯的時(shí)候const的值就已經(jīng)確定了,而final不一定,可能需要運(yùn)行的時(shí)候才能確定值。
final x =new DataTime.now(); //將x變量的值,初始化為當(dāng)前時(shí)間,x的值只有在運(yùn)行的時(shí)候才能確定
三、數(shù)據(jù)類型
Dart 支持以下數(shù)據(jù)類型:
- 數(shù)字(number)
- 字符串(string)
- 布爾值(boolean)
- 列表(list)
- 集合(set)
- 映射(map)
- 符文(rune)
- 符號(Symbol)
數(shù)字類型
Dart中數(shù)字類型有2種類型:
- 整數(shù):整數(shù)表示沒有小數(shù)的的數(shù)值,使用int關(guān)鍵字表示。
- 雙精確度:Dart中表示64位浮點(diǎn)數(shù),使用double關(guān)鍵字表示。
var x = 123;
var y = 1.199;
從Dart2.1開始,必要時(shí)整數(shù)會自動轉(zhuǎn)換為雙精確度:
double z = 10; //相當(dāng)于double z = 10.0; 在2.1之前是報(bào)錯的
字符串
Dart 中字符串是一組 UTF-16 單元序列,符文用于表示UTF-32單元序列。用String關(guān)鍵字表示字符串,可以使用單引號或雙引號來創(chuàng)建字符串。
var s1 = 'abcd';
var s2 = "ABCD";
//若是使用的是雙引號,能夠內(nèi)嵌單引號
//固然,若是使用的是單引號,能夠內(nèi)嵌雙引號,不然須要“\”轉(zhuǎn)義
//var s3 = ‘It\’s ok!’;
var s3 = "It's ok!";
Dart允許你使用+號進(jìn)行字符串的拼接。
String str = 'hello ' + 'world!';
可以使用${expression}將表達(dá)式的值放在字符串中。
String str = 'null';
String newStr = '這是${str}';
print('This is $str');
以下是字符串和數(shù)字之間相互轉(zhuǎn)換的方式。
// String轉(zhuǎn)int
var a = int.parse('1');
print(a == 1);// String轉(zhuǎn)double
var b = double.parse('1.1');
print(b == 1.1);// int轉(zhuǎn)String
var c = 1.toString();
print(c == '1');// double轉(zhuǎn)String
var d = 3.14159.toStringAsFixed(2);
print(d == '3.14');
Dart允許使用帶有單引號或雙引號的三引號創(chuàng)建多行字符串(保留縮進(jìn)格式)。
var s1 = '''這是多行字字符串s1。
''';
print(s1);var s2 = """這是多行字字符串s2。
""";
print(s2);
布爾值
Dart中可以使用bool關(guān)鍵字來表示布爾類型
var isTrue = true;
bool isFalse = false;
列表
在Dart中,使用List對象來表示數(shù)組。
// 初始就賦值了,限定了類型
// var list1 = <int>[1,2,3];
var list1 = [1,2,3];
List<int> list2 = [4,5,6];
print(list1.length); // 3
print(list1[1] == 2);
list1[1] = 1;
print(list1[1] == 1);
Dart2.3引入了擴(kuò)展運(yùn)算符(…)和空值感知運(yùn)算符(…?),他提供了一種將多個元素插入集合的簡潔方法。
例如,使用擴(kuò)展運(yùn)算符將列表的所有元素插入另一個列表:
var list1 = [1,2,3];
var list2 = [0,...list1];
print(list2); // [0,1,2,3]
如果擴(kuò)展運(yùn)算符右側(cè)的表達(dá)式可能為null,則可以通過使用支持null的擴(kuò)展運(yùn)算符來避免異常:
var list1;
var list2 = [0,...?list1];
assert(list2.length == 1);
Dart2.3還引入了if和collection的集合,使用它在if條件和for循環(huán)構(gòu)建集合。
下面是一個使用集合的示例,如果要創(chuàng)建一個包含三個或四個項(xiàng)目的列表:
// nav的長度可能是三個或者四個
var nav = ['Aa','Bb','Cc',if(isTrueOrFalse) 'Dd'];
這是一個使用集合來操作列表項(xiàng)目,然后將他們添加到另一個列表中的示例:
var listOfInts = [1,2,3];
var listOfStrings = ['#0',for(var i in listOfInts) '#$i'];
print(listOfStrings); // [#0,#!,#2,#3]
集合
Dart中的Set是無序的且唯一想的集合。
var set = {11,22,33,44};
創(chuàng)建一個空集合,需要賦上類型參數(shù),否則就不是創(chuàng)建Set而是Map了。
// 兩種方式都可以創(chuàng)建空集合
var set = <String>{};
Set<String> set2 = {};
// var set = {}; 這不是創(chuàng)建空Set,而是創(chuàng)建一個Map
部分使用方式:
var set = <String>{};
var set2 = {'Aa','Bb','Cc'};
//添加元素
set.add('Dd');
set.addAll(set2);
print(set.length);
映射
通常Map是關(guān)聯(lián)鍵和值的對象,鍵和值都可以是任意類型的對象,每個鍵只出現(xiàn)一次,但可以多次使用相同的值。
var map = {1:'Aa',2:'Bb',3:'Cc'
};var map2 = Map();
map2[1] = 'Aa';
map2[2] = 'Bb';
map2[3] = 'Cc';
print(map2.length); // 3
符文
在Dart中,Runes用來表示字符串中的UTF-32的編碼字符。
Unicode 定義了一個全球的書寫系統(tǒng)編碼, 系統(tǒng)中使用的所有字母,數(shù)字和符號都對應(yīng)唯一的數(shù)值編碼。 由于 Dart 字符串是一系列 UTF-16 編碼單元, 因此要在字符串中表示32位 Unicode 值需要特殊語法支持。
表示 Unicode 編碼的常用方法是, \uXXXX, 這里 XXXX 是一個4位的16進(jìn)制數(shù)。 例如,心形符號 (?) 是 \u2665。 對于特殊的非 4 個數(shù)值的情況, 把編碼值放到大括號中即可。 例如,emoji 的笑臉 (�) 是 \u{1f600}。
var clapping = '\u{lf44f}';Runes input = new Runes('\u2665 \u{lf605} \u{lf60e} \u{lf596} \u{lf44d}'
);
print(new String.fromCharCodes(input));
運(yùn)算符
在Dart中,加減乘運(yùn)算基本相同,但唯獨(dú)除法時(shí)要單獨(dú)注意下。
print(5 / 2); // 結(jié)果為2.5
print(5 ~/ 2); //結(jié)果為2
級聯(lián)運(yùn)算符
級聯(lián)運(yùn)算符(…)可用于通過對象發(fā)出一系列調(diào)用。
class Student{void study() {print('study');}void play() {print('play');}
}void main() {new Student()..study()..play();
}
類型判定符
- as:將對象強(qiáng)制轉(zhuǎn)換為特定類型
- is:類型判定