Dart - 变量
2020-07-23 本文已影响0人
卖菇凉的小火柴丶
1.Dart中变量的两种方式
String str1 = "A"; //直接指定类型
var str2 = "B"; //让编译器自己判断类型
print(str1);
print(str2);
输出结果:
A
B
2.Dart中类型的改变
在Dart中一旦变量的类型被确定,就不能再被更改类型
var name = "name";
print(name.runtimeType);
name = 10; //这里直接会报错
String name;
name = "abc";
print(name.runtimeType);
name = 10; //这里直接会报错
输出结果:
String
String
var name;
name = "abc";
print(name.runtimeType);
name = 10;
print(name.runtimeType);
输出结果:
String
int
3.dynamic和Object
Object是dart所有对象的基类,也就是所有的类型都是Object的子类,包括int,Function,Null等。所以任意类型都可以用Object去声明。
dynamic跟var一样都是关键词,都能声明变量。dynamic和Object一样都能表示任意类型,所以它俩声明的变量后期都可以改变类型。但是不同之处就是,dynamic会提供声明的变量的所有可能组合,而Object只是提供Object的属性与方法。
日常推荐用Object。
dynamic或者Object修饰的变量一旦赋值,编译器就能推断出该变量的具体的类型。
dynamic name;
print(name.runtimeType);
name = "a";
print(name.runtimeType);
name = 10;
print(name.runtimeType);
输出结果:
Null
String
int
Object name;
print(name.runtimeType);
name = "a";
print(name.runtimeType);
name = 10;
print(name.runtimeType);
输出结果:
Null
String
int
4.final const
这里用这两个关键词修饰以后似乎不应该叫变量了。
如果不打算改变这个变量,那么就用这俩关键词修饰。
区别:
final修饰的变量是在第一次使用的时候才被初始化
const是编译的时候就确定值