/**
* 1.Dart运算符和其他语言一样
* 算术运算符
* +(加) -(减) *(乘) /(除) ~/(取整) %(取余)
*
* 关系运算符
* ==(等于) !=(不等于) > (大于) <(小于) >=(大于等于) <=(小于等于)
*
* 逻辑运算符
* ! && ||
*
* 赋值运算符
* 基础赋值运算符 = ??=
* 复合赋值运算符 += -= *= /= %= !/=
*
*
* 自增 ++
* 自减 --
* 在赋值运算中,如果++, --写在前面就是先运算,后赋值, 写在后面就是先赋值后运算
*
* 条件表达式
* if else switch case
* 三目运算符 a ? b : c
* ??运算符
*/
main(List<String> args) {
// specialExample();
// numberAndStringExchange();
othersTransformBool();
}
// 这里是 ??= 和 ??的使用
void specialExample() {
int b;
print(b); //声明了一个变量, 没有赋值那个这个变量的值是 null,哪怕你已经声明了类型, 在js中是undefined
// ??= 表示如果b为空值, 那么b就等于25
b ??= 25;
print(b);
// ?? 运算符,
var a;
// 下面的例子的意思是 ??直接先看a是不是为空null, 如果a是空,那么就把30赋值给c ,如果a不是空null,那么就把a的值赋值给c
var c = a ?? 30;
print(c);
}
// Number和String的类型转换
void numberAndStringExchange() {
// Number类型转成String类型toString()
var n = 100;
var s = n.toString();
var sb = s is String;
print("s是字符串类型 $sb");
// String类型转成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";
// 这里会报错, 浮点类型的字符串不能用int.parse去转换,要用double,主义类型的对应
// 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');
}
// 其他类型转换成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)这样, 有一个默认的类型转换,
// 但是Dart里面bool值不和其他类型转换的, 只能比较, 空字符串是"",可以用isEmpty来判断,
// 数字0,也是需要 ==0这样去比较, null值,也是==null进行比较得到bool值
// 这里还有个特殊的就是NaN,非数字, 比如0不能作为除数
var x = 0 / 0; //这里不会报错,返回的是一个非数字NaN
if (x.isNaN) {
print("x是非数字$x");
} else {
print("x是数字$x");
}
}
网友评论