变量声明
var
类似JS中的var,可以接收任何类型变量,但是Dart中的var变量一旦赋值,类型就会确定,且不能再改变其类型,因为Dart是强类型语言
dynamic和Object
Object
是Dart中所有对象的根基类,即所有类型都是Object
的子类(包括Function和Null),所以任何类型数据都可以赋值给Object声明的对象。
dynamic
和var一样是声明关键词,声明的变量可以赋值任何对象。
两者相同之处在于,声明的变量可以在后期改变赋值类型
不同之处在于,dynamic
声明的对象编译器会提供所有可能的组合,而Object
声明的对象只能使用Object的属性和方法,否则编译器会报错
dynamic a;
Object b;
main() {
a = "";
b = "";
printLengths();
}
printLengths() {
// no warning
print(a.length);
// warning:
// The getter 'length' is not defined for the class 'Object'
print(b.length);
}
dynamic的这个特性与Objective-C中的id作用很像,因此在使用时注意不要引入运行时错误
final和const
如果打算不更改某个对象,
final
变量只能被设置一次,
const
变量是一个编译时常量,final变量在第一次使用时被初始化
被final
和const
修饰的变量 ,变量类型可以省略
//可以省略String这个类型声明
final str = "hi world";
//final String str = "hi world";
const str1 = "hi world";
//const String str1 = "hi world";