Dart 语言的语法学习(二)

变量与常量

  • 变量声明与初始化
    调用的变量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 const
 static 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 当前是一个EIL
 final finalList = const []; // finalList一直是EIL
 const 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';

更过内容可以浏览中文文档:中文文档请点击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值