一 變量: 自動會類型推斷
dart : 有類型校驗
var varstr = '';
varstr = 1234; //A value of type 'int' can't be assigned to a variable of type 'String'.
二 命名規(guī)則:
- 變量名稱必須由
數(shù)字、字母、下劃線和美元符($)組成。 - 注意:標識符開頭
不能是數(shù)字 - 標識符不能是保留字和關鍵字。
- 變量的名字是區(qū)分
大小寫的: age和Age是不同的變量 - 標識符(變量名稱)一定要見名思意:變量名稱建議用名詞,方法名稱建議用動詞
三 常量 : const , final 修飾符(永遠不改變的量,使用final 或 const 修飾,而不使用 var 或其他變量類型)
- const 值不變,一開始就得賦值; final 可以開始
不賦值只能賦一次值; - final 不僅有 const的編譯時常量的特性,最重要的它是
運行時常量,并且 final 是惰性初始化,既在運行時第一次使用前才初始化
final a = new DateTime.now();
print(a);
四 數(shù)據(jù)類型:
1.字符串
// """ 三個單引號/雙引號,內(nèi)容可以換行 """
var str = """這是第一行,
這是第二行
這是第三行 """;
2.字符串拼接
String str1 = "1";
String str2 = "2";
print("$str1 $str2");
print(str1 + str2);
print(str1 + " " + str2);
3.數(shù)值類型 int double (int 必須是整形, double 既可以是整形 也可以是浮點行)
int a = 123;
double b = 23.5
b = 20; //會輸出 20.0
4.運算符 + - * /
5.布爾類型 bool : true/false
(1)bool
bool flag1 = true;
flag1 = false;
//不能為其他值 flag1 = 123; //報錯
(2) 條件判斷語句
var a = 123;
var b = "123";
if(a == b){ //不相等
}else{
}
- List(數(shù)組/集合)
// (1)第一種定義List方式
var l1 = ['aaa', 'bbb', 'ccc'];
print(l1);
// 其他方法: li.length, l1[0]
// (2)第二中定義List的方式
var l2 = [];
l2.add('aaa');
l2.add('bbb');
// (3)第三種定義制定類型的List
var l3 = <String>[];
- Maps(字典)
// (1) 第一種定義Map的方式 (key要加引號)
var s = {
'name' : '張',
'age' : 15,
'subject' : ['計算機','心里學'],
};
print(s);
// (2)第二種定義Map的方式
var student = new Map();
student['name'] = '李';
student['age'] = '15';
student['subject'] = ['計算機','心里學'];
print(student);
8.判斷數(shù)據(jù)類型
is 關鍵詞來判斷類型
五 運算符
1.算術運算符 : + - * / ~/(取整) %(取余)
int a = 5;
int b = 3;
print(a~/b);
2.關系運算符: == != > < >= <=
3.邏輯運算符: ! && ||
4.賦值運算符
(1)基礎賦值運算符 = ??=
(2)復合賦值運算符 += -= *= /= %= ~/=
int b;
b??=23; //表示 如果b為空的話把 23賦值給b
print(b);
var a = 10;
var b = a++;
print(a); //11
print(b); //10
5.條件表達式
(1) if else switch case
(2) 三目運算符
(3) ??運算符
bool flag = false;
String a = flag ? 'true' : 'false';
print(a);
var a;
var b = a ?? 10; //a 為空,10賦值給b; a不為空,a賦值給b
print(b);
六 類型轉(zhuǎn)換
1.Number 與 String 類型之間的轉(zhuǎn)換
Number類型轉(zhuǎn)成String類型 toString()
String轉(zhuǎn)Number parse (建議轉(zhuǎn)double,因為int和double的字符都不會報錯; 或用 try catch)
2.其他類型轉(zhuǎn)換成Booleans類型
isEmpty:判斷字符串是否為空
int a = 10;
String str = a.toString();
print(str);
var myNum = int.parse(str);
print(myNum is int);
報錯:
str = '123.1';
myNum = int.parse(str);
print(myNum is int);
str = '123.1';
var myDouble = double.parse(str);
print(myDouble is double);
String price = '';
try{
var myNum = double.parse(price);
print(myNum);
}catch(err){
print(0);
}
var str = '123';
if(str.isEmpty){
print('空');
}else{
print('str不為空');
}
var myNum = 123;
if(myNum == 0){
}
var myNum;
if(myNum == nil){
print('空');
}else{
print('str不為空');
}
var myNum = 0/0;
print(myNum);
if(myNum.isNaN){ //NaN 非數(shù) 表示未定義或不可表示的值
print('NaN');
}else{
print('no NaN');
}
七循環(huán)
(1) for循環(huán)
for(int i = 0; i < 10; i++){
print(i);
}
List list = ['1','2','3'];
for(var item in list){
print(item);
}
(2) while
while(表達式){
}
do{
語句
}while(表達式);
注意:1.最后的分號不要忘記
2.循環(huán)條件中使用的變量需要經(jīng)過初始化
3.循環(huán)體中,應有結束循環(huán)的條件,否則會造成死循環(huán)。
break 跳出循環(huán)體 / continue 跳過當前循環(huán),然后循環(huán)還會繼續(xù)執(zhí)行
八 集合
(1) List
(2) Set 最主要的功能是去除數(shù)組重復內(nèi)容
(3) Map
List里面常用的屬性和方法:
常用屬性:
length 長度
reversed 翻轉(zhuǎn)
isEmpty 是否為空
isNotEmpty 是否不為空
常用方法:
add 增加
addAll 拼接數(shù)組
indexOf 查找 傳入具體值
remove 刪除 傳入具體值
removeAt 刪除 傳入索引值
fillRange 修改
insert(index,value); 指定位置插入
insertAll(index,list) 指定位置插入List
toList() 其他類型轉(zhuǎn)換成List
join() List轉(zhuǎn)換成字符串
split() 字符串轉(zhuǎn)化成List
List 提供的循環(huán)方法
forEach 遍歷
map 主要用于修改數(shù)據(jù)
where 把滿足條件的返回一個集合
any 只要集合中有滿足條件的就返回true
every 每一個都要滿足條件返回true,否則返回 false
List list = ['1','2','3'];
print(list.reversed);
List newList = list.reversed.toList();
print(newList);
var str = list.join('-');
var newlist = str.split('-');
print(list is List);
myList.forEach((value){
print("%value");
})
List myList = [1, 3, 4];
forEach中只有一行代碼可以簡寫
s.forEach((value)=>print(value));
//Map
Map person ={
"name":"張三",
"age":"18",
}
person.forEach((key,value){
print("$key, $value");
})