/**
* 1.Dart運(yùn)算符和其他語言一樣
*? 算術(shù)運(yùn)算符
*? ? ? +(加)? -(減)? *(乘)? /(除)? ~/(取整)? %(取余)
*
* 關(guān)系運(yùn)算符
*? ? ? ==(等于)? ? !=(不等于)? ? > (大于)? ? <(小于)? ? >=(大于等于)? ? <=(小于等于)
*
* 邏輯運(yùn)算符
*? ? ? !? ? &&? ? ||
*
* 賦值運(yùn)算符
*? ? 基礎(chǔ)賦值運(yùn)算符? =? ? ??=
*? ? 復(fù)合賦值運(yùn)算符? +=? -=? *=? /=? %=? !/=
*?
*
* 自增 ++
* 自減 --
* 在賦值運(yùn)算中,如果++, --寫在前面就是先運(yùn)算,后賦值, 寫在后面就是先賦值后運(yùn)算
*
* 條件表達(dá)式
* if else? ? switch case
* 三目運(yùn)算符? a ? b : c
*? ??運(yùn)算符
*/
main(List<String> args) {
? // specialExample();
? // numberAndStringExchange();
? othersTransformBool();
}
// 這里是 ??=? 和? ??的使用
void specialExample() {
? int b;
? print(b); //聲明了一個(gè)變量, 沒有賦值那個(gè)這個(gè)變量的值是 null,哪怕你已經(jīng)聲明了類型, 在js中是undefined
? //? ??= 表示如果b為空值, 那么b就等于25
? b ??= 25;
? print(b);
? // ?? 運(yùn)算符,
? var a;
? // 下面的例子的意思是? ??直接先看a是不是為空null, 如果a是空,那么就把30賦值給c ,如果a不是空null,那么就把a(bǔ)的值賦值給c
? var c = a ?? 30;
? print(c);
}
// Number和String的類型轉(zhuǎn)換
void numberAndStringExchange() {
? // Number類型轉(zhuǎn)成String類型toString()
? var n = 100;
? var s = n.toString();
? var sb = s is String;
? print("s是字符串類型 $sb");
? // String類型轉(zhuǎn)成Number類型, parse
? String str = "124";
? var num1 = int.parse(str);
? var num2 = double.parse(str);
? var bl = num1 is int;
? print('num1=$num1, num1 is int = $bl');
? print(num2);
? String str1 = "124.3";
? // 這里會(huì)報(bào)錯(cuò), 浮點(diǎn)類型的字符串不能用int.parse去轉(zhuǎn)換,要用double,主義類型的對(duì)應(yīng)
? // var num3 = int.parse(str1);
? // 這里我們可以使用try catch來兜住這異常
? var num3;
? try {
? ? num3 = int.parse(str1);
? } catch (e) {
? ? print(e);
? ? num3 = double.parse(str1);
? }
? print('num3 = $num3');
}
// 其他類型轉(zhuǎn)換成Bool類型
void othersTransformBool() {
? var str = ""; //代表空字符串
? // 判斷字符串是不是空,""這樣的就是空字符串
? var emp = str.isEmpty;
? if (emp) {
? ? print("str是空字符串=$str");
? } else {
? ? print("str不是空字符串=$str");
? }
// 未賦值的變量是null
? var nu;
? if (nu == null) {
? ? print("nu是$nu");
? } else {
? ? print("nu=$nu");
? }
// 注意: 這里和js等其他語言不一樣, 其他語言直接可以if(str)這樣, 有一個(gè)默認(rèn)的類型轉(zhuǎn)換,
// 但是Dart里面bool值不和其他類型轉(zhuǎn)換的, 只能比較, 空字符串是"",可以用isEmpty來判斷,
// 數(shù)字0,也是需要 ==0這樣去比較, null值,也是==null進(jìn)行比較得到bool值
? // 這里還有個(gè)特殊的就是NaN,非數(shù)字, 比如0不能作為除數(shù)
? var x = 0 / 0; //這里不會(huì)報(bào)錯(cuò),返回的是一個(gè)非數(shù)字NaN
? if (x.isNaN) {
? ? print("x是非數(shù)字$x");
? } else {
? ? print("x是數(shù)字$x");
? }
}