什么是变量?
变量是⼀个引⽤,根据Dart中万物皆对象原则,即变量存储的都是对象的引⽤,或者说它们都是指向对象。
上面的说法,刚开始我们很难理解。
我们先把变量理解成,电脑(内存)里某个值的代号即可。
dart 中如何声明一个变量呢?
第一种:先声明变量,再给变量赋值
///1.声明一个变量
var name; //这时候没有给他值,默认值是null
///2.给这个变量赋值
name = "张三";
第二种:不要那么复杂,声明的同时就赋值。
var name = "张三";
上面是不指定数据类型的声明方式,变量的类型根据变量的值自动推断。
也可以明确指定类型,来声明变量
String name;
name="张三";
//或者
String name = "张三"
这里我们提到了变量的类型,什么是类型呢?
简单来说:dart 是一门面向对象的语言,每个值都有各自的类型。
dart 常用的基础类型如下:
数字类型:Number(num,int,double);
布尔类型:Boolean;
字符串类型:String;
数组类型:List;
字典类型:Map;
这些内容后面我们再说!
也就是我们声明一个变量的时候,他都是有自己的类型的,上面的 name 变量的类型就是 字符串(String),类型的确定,要么内部推定,要么主动明示。
什么是常量?
下面我们再说一个特殊的变量,一个值不可变的变量,即:常量。
声明常量我们用到的关键字 是:final 和 const
final name1 = "张三";
const name2 = "李四";
顾名思义,常量是不可改变的。
final 和 const 的区别?
1.值的分配时机不同,const 变量的值是编译时分配;⽽ final 变量的值是运⾏时分配。
const 变量我们编写代码的时候,就该明确它的值;final 变量可以在代码运行时确定值;
const time = DateTime.now(); // 报错 - 因为编写代码的时候,值没有确定
final time = DateTime.now(); // 成功 - 可以将运⾏时的值分配给 final 变量
2.const 变量其内部成员的值也都是不可变的;final 变量其内部的成员是可变的;
void main() {
const list = [1, 2, 3,4];
list[0] = 100; // 修改内部成员的值
print(list); // 报错
}
void main() {
final list = [1, 2, 3,4];
list[0] = 100; // 修改内部成员的值
print(list); // 不报错
}
例子里我们举了一个数组的例子,零基础的同学,可以先跳过,暂时不作理解也可!