Dart学习笔记(1):变量声明

​1、指定声明变量


比如声明 String 类型String name="jack";也可以用 var name="jack"//自动类型推断为String类型;

 String name="jack";
  var name="jack";

一旦明确声明类型,则不能改变变量类型,如下

var name="jack";
  name=2;//编译器报错 
//提示的错误内容 
A value of type 'int' can't be assigned to a variable of type 'String'.
Try changing the type of the variable, or casting the right-hand type to 'String'.

2、未指定声明变量


dynamic :在Dart语言中,dynamic可以存储任意类型。当一个变量被声明为dynamic后,编译器则会关闭对此变量的类型检查

dynamic name="jack";
name=2;//编译运行正常

对变量的操作都需要我们自己去判断其正确性,尤其是像后台接口返回的字段属性值要明确,不然其安全隐患比较大的。
还有就是声明变量要进行初始化操作,因为Dart中所有对象的默认值都为null,包括数字 int double

  String name;
  print(name);//The non-nullable local variable 'name' must be assigned before it can be used. 


所以未赋值的话连编译器都不通过。当然可以通过late延迟属性加载实现声明的时候不用赋值,用到的时候再赋值,比如

 late var name;
  name="jack";
  print(name);

获取用var 和dynamic修饰 

 dynamic name;
 var age;
 print(age);//打印为null
 print(name);//打印为null


3、const 和 final


1、const 修饰变量时,必须赋值进行初始化操作  

const String name;

name="jack;

以上代码则会编译不通过,正确应该是 const String name="jack";

2、const 修饰变量时,可以忽略声明的变量类型 

比如上面的 const String name="jack";可以修改为 const name="jack";

3、const 修饰变量后,其值不能改变

比如上面的 const String name="jack";

不能修改为 name="Bob";

4、变量不可以同时用var和const修饰

ps: const var name="jack";// 报Members can't be declared to be both 'var' and 'const'.错误

5、const 必须在编译时就赋初始值,而final可在运行时赋初始值,即const 是编译时常量,在编译的时候就初始化了,但是 final 变量是运行时才初始化。

void finalTest(){
  final String a;
  a="jack";
  print(a);
}
void constTest(){
  const String a;// 编译报错,The constant 'a' must be initialized.
  const String b="jack";
  print(b);
}


6、const 修饰类中的变量,则必须加上 static 关键字

class Test{
   static const String name="jack";

   void getString(){
     const String name2="jack";
   }
}


final 只可用来修饰变量,

const 关键字即可修饰变量也可用来修饰 常量构造函数

常量构造函数需以const关键字修饰
const构造函数必须用于成员变量都是final的类
构建常量实例必须使用定义的常量构造函数
如果实例化时不加const修饰符,即使调用的是常量构造函数,实例化的对象也不是常量实例

class Test{
  final String name;
  const Test(this.name);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chen_ShengJie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值