变量 var声明
- js 不会在编译时检查变量类型,但 dart会
var user = 'lily'; //声明为字符串 会自动匹配类型
user = 123; //会报错
Object & dynamic
Object password = 123;
password = 'good job';
//不会报错,因为变量类型为最父级的类型,所以赋什么类型的值都可以 不建议
所有类型继承object 包括 function 和 null
js 最顶端是 undefind
dynamic word = 123;
word.
//可以推断出任何一个方法,不只是Object的方法,相当于并没有定义出任何一个明确的类型
//当一个变量被声明为dynamic后,编译器则会关闭对此变量的类型检查
dynamic 与 Object 的不同
dynamic a = 'a';
Object b = 'b';
print(a.length); //不会报错
print(b.length); //会报错
变量类型
Number: int double
int a = int.parse('111'); //字符串转整数
String:
String good = 123.toString(); //整数转字符串
String job = 123.222.toStringAsFixed(2); //double转字符串 四舍五入保留两位(事实上50并不会入 从51开始入)
bool:
与js不同的是:
bool result = 1=='1';
//result == false
或 print( 1=='1'); //false
因为dart为强类型,而js为弱类型
List:
List list = new List();
list.add(2);
list.addAll([1,2,3]); //addAll是add一个数组进去
//此时的数组输出为[2,1,2,3];
print(list.first);
print(list.last); //可以输出第一个或最后一个
print(list.length);
print(list[2]);
Map:
Map obj = {'x':1,'y':2,'z':3}; //这里的‘’是不能省略的
Map obj = new Map(); //定义
obj['x'] = 1; //赋值
print(obj.containsKey('x')); //true
obj.remove('x'); //移除
常量
final p = 'good';
const pp = 'good';
区别 :
-
const 编译时常量 在运行之前就已经存在于内存中
-
final 在第一次使用时才在内存中加入