Flutter学习笔记之变量声明

经过几天的学习,对Flutter也有了初步的认识,在我看来,有java基础来学Flutter,首先还是要先看学下Dart语言,要不有些地方还是会很懵逼。

Dart语言

工欲善其事必先利其器,在正式要学习flutter之前,我们需要先了解一下Dart语言。
Dart语言可以看成是JAVA和JS的结合体。Dart在静态语法方面和Java非常相似,如类型定义、函数声明、泛型等,而在动态特性方面又和JavaScript很像,如函数式特性、异步支持等。
除此之外,Dart也具有一些其它具有表现力的语法,如可选命名参数、..(级联运算符)和?.(条件成员访问运算符)以及??(判空赋值运算符)。

1.明确知道类型

可以直接用:

String a = "aaaa";
ClassA classA = new ClassA();

这种方式直接声明变量,和java基本上都一样

2.var

可以接受任何类型的值,但是一旦确定了类型,则不能更换类型,因此这点和js也略有不同,毕竟Dart语言是强类型语言。

var test = "aaa";
    //test = 1;//编译不通过

3.dynamic

dynamic类似java中的Object,顾名思义,就是一个支持多类型的关键词,它与var的区别在于,它的类型是可以换的,

dynamic test = "aaa";
test = 1;//编译可以通过

4.final与const

这两个都有代表常量的意思,区别在于final修饰的变量,只能被赋值一次。而const的用法就比较奇妙了,用于声明变量,效果和final一样,而用于生成对象,效果又和new一样,但是这个对象里面的各种属性的值,就不能重新赋值了。const也只能用于构造函数里面的参数都是final的类。
还是举个栗子比较明了:


class Point{
  final int x;
  final int y;

 const Point(this.x, this.y);
}

Point p = const Point(2, 3);//p的属性无法在改变。

final a = [1,2,3];
a.add(4);
print(a);//[1, 2, 3, 4]
//a = [2,3,4];//编译不通过

var b = const  [1,2,3];
//b.add(4);//运行时报错,好奇为什么不在编译的时候就提示不通过呢
b = [1,2,3];//编译可通过
b.add(4);//编译可通过
print(b);//[1,2,3,4]

const c = const [1,2,3];
//c.add(4);//运行时出错
//c = [2,3,4];//编译时出错

你可能感兴趣的:(Flutter学习笔记之变量声明)