变量与常量
- 变量声明与初始化
调用的变量name包含对String值为“小张” 的对象的引用,name推断变量的类型是String,但可以通过指定它来更改该类型,如果对象不限于单一类型(没有明确的类型),请使用Object或dynamic关键字。
// 没有明确类型,编译的时候根据值明确类型var name = ‘Bob’; Object name = '小张';dynamic name = '小李';// 显示声明将被推断类型, 可以使用String显示声明字符串类型String name = 'Bob' ;
- 默认值
未初始化的变量的初始值为null(包括数字),因此数字、字符串都可以调用各种方法
//测试 数字类型的初始值是什么?int lineCount;// 为false的时候抛出异常assert(lineCount == null);print(lineCount); //打印结果为null,证明数字类型初始化值是null
- final and const
- 如果您从未打算更改一个变量,那么使用 final 或 const,不是var,也不是一个类型。 一个 final
变量只能被初始化一次; const变量是一个编译时常量,(Const变量是隐式的final)
final的顶级或类变量在第一次使用时被初始化。 - 被final修饰的顶级变量或类变量在第一次声明的时候就需要初始化。
// The final variable 'outSideFinalName' must be initialized.
final String outSideFinalName
- 被final或者const修饰的变量,变量类型可以省略,建议指定数据类型。
//可以省略String这个类型声明final name = "Bob";final String name1 = "小张";const name2 = "alex";const String name3 = "小李";
- 被 final 或 const 修饰的变量无法再去修改其值。
final String outSideFinalName = "Alex";// outSideFinalName', a final variable, can only be set once// 一个final变量,只能被设置一次。outSideFinalName = "Bill";const String outSideName = 'Bill';// 这样写,编译器提示:Constant variables can't be assigned a value// const常量不能赋值// outSideName = "小白";
- flnal 或者 const 不能和 var 同时使用
// Members can't be declared to be both 'const' and 'var'const var String outSideName = 'Bill';// Members can't be declared to be both 'final' and 'var'final var String name = 'Lili';
- 常量如果是类级别的,请使用 static const
// 常量如果是类级别的,请使用 static conststatic const String name3 = 'Tom';// 这样写保存// Only static fields can be declared as const// 只有静态字段可以声明为const//const String name3 = 'Tom';
- 常量的运算
const speed = 100; //速度(km/h)const double distance = 2.5 * speed; // 距离 = 时间 * 速度final speed2 = 100; //速度(km/h)final double distance2 = 2.5 * speed2; // 距离 = 时间 * 速度
- const关键字不只是声明常数变量,您也可以使用它来创建常量值,以及声明创建常量值的构造函数,任何变量都可以有一个常量值。
// 注意: [] 创建的是一个空的list集合// const []创建一个空的、不可变的列表(EIL)。var varList = const []; // varList 当前是一个EILfinal finalList = const []; // finalList一直是EILconst constList = const []; // constList 是一个编译时常量的EIL// 可以更改非final,非const变量的值// 即使它曾经具有const值varList = ["haha"];
- 在常量表达式中,该运算符的操作数必须为’bool’、‘num’、‘String’或’null’,
const常量必须用conat类型的值初始化。
const String outSideName = 'Bill';
final String outSideFinalName = 'Alex';
const String outSideName2 = 'Tom';const aConstList = const ['1', '2', '3'];// In constant expressions, operands of this operator must be of type 'bool', 'num', 'String' or 'null'
// 在常量表达式中,该运算符的操作数必须为'bool'、'num'、'String'或'null'。
const validConstString = '$outSideName $outSideName2 $aConstList';// Const variables must be initialized with a constant value
// const常量必须用conat类型的值初始化
const validConstString = '$outSideName $outSideName2 $outSideFinalName';var outSideVarName='Cathy';
// Const variables must be initialized with a constant value.
// const常量必须用conat类型的值初始化
const validConstString = '$outSideName $outSideName2 $outSideVarName';// 正确写法
const String outSideConstName = 'Joy';
const validConstString = '$outSideName $outSideName2 $outSideConstName';
更过内容可以浏览中文文档:中文文档请点击