1.變量和常量
使用var關(guān)鍵字聲明變量,可賦予變量不同類型的值.未初始化時(shí),默認(rèn)為null.
void main(){
var a; //未初始化,默認(rèn)為null
a = 10; // 10
a = " 字符串" 或 a = '字符串' //dart中用雙引號(hào)還是單引號(hào)聲明字符串類型都是可以的
a = 10.1; //double類型
final b = 10; //使用final關(guān)鍵字聲明一個(gè)只能賦值一次的變量
const c = 10; //使用const關(guān)鍵字聲明的變量是一個(gè)編譯時(shí)常量
c = 20; //? 給c重新賦值會(huì)報(bào)錯(cuò)
final和const不能和var一起使用,使用final和const建議指定數(shù)據(jù)類型.
//如果聲明時(shí),不想指定變量的類型,可以使用dynamic關(guān)鍵字.
dynamic str = 'this is string';
str = 10; //str可以重新賦值為整型,str在這里是一個(gè)動(dòng)態(tài)的數(shù)據(jù)類型
}
2.Dart中的數(shù)據(jù)類型
Dart中的數(shù)據(jù)類型包含以下幾種:num(數(shù)值型),string(字符串類型),boolean(布爾類型),map集合,list(數(shù)組),runes(用于在字符串中表示Unicode字符),symbols.
1.Number
void main(){
num a = 10; //整型
a = 10.1 //浮點(diǎn)型 重新給a賦值,不會(huì)報(bào)錯(cuò),因?yàn)閚um包含兩種子類型:int和double.dart中沒有float類型,小數(shù)都是double.
int b = 10;
b = 10.1; //? 已經(jīng)定義為整型的值,重新賦值為浮點(diǎn)型,會(huì)報(bào)錯(cuò)
double c = 10.1;
c = 0;//? 已經(jīng)定位為浮點(diǎn)型的值,重新賦值為整型,會(huì)報(bào)錯(cuò)
}
1.1 數(shù)值型的操作
基本操作除了運(yùn)算符:+,-,*,/,~/
void main(){
int i = 10;
print(i.isOdd);//判斷是奇數(shù)
print(i.isEven);//判斷是偶數(shù)
// int值轉(zhuǎn)換為string
String oneAsString = 1.toString();
// double值轉(zhuǎn)換為string
String piAsString = 3.1455.toStringAsFixed(2); //后面的意思是保留幾位小數(shù)
}
2.String
void main(){
String string = "雙引號(hào)";
String string = '單引號(hào)';
//單雙引號(hào)里面可以嵌套使用引號(hào)
String singleString = 'abc';
String doubleString = "def";
//單引號(hào)內(nèi)嵌套雙引號(hào)
String mergeString = '$singleString aaa "bbb" ${doubleString}';
print(mergeString);//輸出 abc aaa "bbb" def
//雙引號(hào)內(nèi)嵌套單引號(hào)(如果是表達(dá)式需要${表達(dá)式})
String mergeString = "${singleString.toUpperCase()} bbb 'aaa' ${doubleString.toUpperCase()}}";
print(mergeString); //輸出 ABC bbb 'aaa' DEF
//string轉(zhuǎn)換為int
int a = int.parse('1');
//string轉(zhuǎn)換為double
double b = double.parse('1.5');
}
3.boolean 布爾類型
為了表示布爾值始腾,Dart有一個(gè)名為bool的類型材失。boolean字符 true和false,它們都是編譯時(shí)常量哭懈。
assert是Dart語言內(nèi)置的斷言函數(shù),僅在檢查模式下有效.
// 檢查是否為空
var fullName = '';
assert(fullName.isEmpty);
// 為0檢查
var hitPoints = 0;
assert(hitPoints <= 0);
// 檢查是否為 null.
var unicorn;
assert(unicorn == null);
// 檢查是否為 NaN.
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);
4.list集合(數(shù)組)
//沒有類型限制的list,如下
List list = ['one',2,false];//存放多個(gè)不同類型的對(duì)象
//創(chuàng)建一個(gè)常量list,不可變的list
List list = const[1,2,3];
//創(chuàng)建指定類型的list
List <String> list = ['one','two','three'];//對(duì)象全部為String類型
4.1數(shù)組常用的方法
List list = [1,2,3,'Hello',true];
//修改下標(biāo)為2的對(duì)象的值
list[2] = 'sugar';//打印輸出:1,2,sugar,hello,true
//獲取list的長(zhǎng)度
list.length
//向list中添加元素
list.add('value');
//向list 中指定下標(biāo)添加元素
list.insert(1,'value');
//移除list中的元素
list.remove('value');
//移除list中指定下標(biāo)的元素
list.removeAt(2);
//判斷l(xiāng)ist中是否包含某個(gè)元素
if(list.indexOf('value'))
5. map集合
類似Objective-C中的字典Dictionary,映射是關(guān)聯(lián)鍵和值的對(duì)象,每個(gè)鍵key只能出現(xiàn)一次,但是value可以使用相同的值.
void main(){
//創(chuàng)建map
var mapList = {'first':'one','second':'two'};
// 創(chuàng)建不可變的 Map
var constLanguage = const {'fisrt': 'dart', 'second': 'java'};
// 通過構(gòu)造器創(chuàng)建
var initLanguage = new Map();
}
5.1 Map常見的方法
// 獲取長(zhǎng)度
print(map.length);
// 判斷是否為空
print(map.isEmpty);
print(map.isNotEmpty);
// 獲取到所有的 key
print(map.keys);
// 獲取到所有的 values
print(map.values);
// 判斷是否包含某個(gè)key
print(map.containsKey("key"));
// 判斷是否包含某個(gè)value
print(map.containsValue("key"));
6. runes
在Dart中饭冬,runes是字符串的UTF-32代碼點(diǎn)使鹅。
Unicode為世界上所有書寫系統(tǒng)中使用的每個(gè)字母,數(shù)字和符號(hào)定義唯一的數(shù)值昌抠。表達(dá)Unicode代碼點(diǎn)的常用方法是\uXXXX患朱,其中XXXX是4位十六進(jìn)制值。要指定多于或少于4個(gè)十六進(jìn)制數(shù)字扰魂,請(qǐng)將值放在大括號(hào)中麦乞。String類有幾個(gè)屬性可用于提取符文信息。 codeUnitAt
和codeUnit
屬性返回16位代碼單元劝评。 使用runes屬性獲取字符串的符文姐直。
7.Symbols
Symbol對(duì)象表示在Dart程序中聲明的運(yùn)算符或標(biāo)識(shí)符。 您可能永遠(yuǎn)不需要使用符號(hào)蒋畜,但它們對(duì)于按名稱引用標(biāo)識(shí)符的API非常有用声畏,因?yàn)榭s小會(huì)更改標(biāo)識(shí)符名稱而不會(huì)更改標(biāo)識(shí)符符號(hào)。Symbols時(shí)編譯時(shí)常量姻成。