美文网首页
dart语法1

dart语法1

作者: jxtx | 来源:发表于2020-05-16 17:02 被阅读0次

dart语法1
dart语法2-内置类型
dart语法3-函数
dart语法4-操作符
dart语法5-异常
dart语法6-类
dart语法7-泛型
dart语法8-库
dart语法9-异步
dart语法10-生成器
dart语法11

1.变量声明:var,dynami, object

var:如果没有初始值,可以变成任何类型
dynamic:动态任意类型,编译阶段不检查类型
Object:动态任意类型,编译阶段检查检查类型
区别:
唯一区别 var 如果有初始值,类型被锁定

2.没有初始化的变量默认值都是null

3.final和const

共同点
  • 被final或者const修饰的变量,变量类型可以省略
  • 被 final 或 const 修饰的变量无法再去修改其值
  • final或const不能和var同时使用
区别
  • 如果是类级别常量,使用static const
  • const可以使用其他 const常量的值来初始化其值
  • const赋值 申明可省略
  • 可以更改非final,非const变量的值,即使它曾经具有const值
  • const导致的不可变性是可传递的
  • 相同的const常量不会在内存中重复创建
  • const 需要是编译时常量
import 'dart:core';

/// 三斜杠文档注释
///  返回类型void可以省略, 省略后返回值为null
void main() {
  /// ---------------------------------变量的声明--------------------------------
  //声明一个未初始化的变量,变量的类型可改变
  var data;
  data = 'dongnao';
  data = 123;

  dynamic data1;
  data1 = 'dongnao';
  data1 = 123;

  Object data2;
  data2 = 'dongnao';
  data2 = 123;

  print([data, data1, data2]);

  //var声明一个初始化的变量,变量的类型不能再改变
  var variable1 =
      'dongnao'; //变量是一个引用。名字为 name 的变量引用了 一个内容为 “dongnao” 的 String 对象。
//  variable1 = 123;//变量初始化后,name变量的类型被推断为String类型,其类型不能再改变

  //dynamic和Object声明的变量初始化后,变量的类型仍可改变
  dynamic variable2 = 'dongnao';
  variable2 = 123;
//  variable2.test();//调用不存在的test()方法,编译通过,运行报异常。编译阶段不检查类型
  Object variable3 = 'dongnao';
  variable3 = 123;
//  variable3.test();//调用不存在的test()方法,编译不通过。编译阶段检查类型

  //使用确定类型显示声明变量,变量的类型不能再改变
  String name3;
  name3 = 'dongnao';
//  name3 = 123;//变量的类型不能再改变

//var:如果没有初始值,可以变成任何类型
//dynamic:动态任意类型,编译阶段不检查类型
//Object:动态任意类型,编译阶段检查检查类型
//区别:
//唯一区别 var 如果有初始值,类型被锁定


  /// ---------------------------------默认值--------------------------------
  //没有初始化的变量默认值都是null。一切皆对象,对象的默认值是null
  bool isEmpty;
  assert(isEmpty == null);

  /// ---------------------------------final和const--------------------------------
  //1.  被final或者const修饰的变量,变量类型可以省略
  final fVariable1 = 'dongnao';
//  final String fVariable1 = 'dongnao';
  const cVariable1 = 'dongnao';
//  const String cVariable1 = 'dongnao';

  //2.  被 final 或 const 修饰的变量无法再去修改其值。
//   fVariable1 = 'damon';
//   cVariable1 = 'damon';

  //3.  final或const不能和var同时使用。
//  final var fVariable1 = 'dongnao';
//  const var fVariable1 = 'dongnao';

  //4.  如果是类级别常量,使用static const
  DateTime; //可参照DateTime static const int monday = 1;

  //5.  const可以使用其他 const常量的值来初始化其值
  const width = 100;
  const height = 100;
  const square = width * height;

  //6.  const赋值 申明可省略
  const List clist = [1, 2, 3];
//  const List clist = const [1, 2, 3];//dart 2之前,const赋值必须用const声明

  //7.  可以更改非final,非const变量的值,即使它曾经具有const值
  var varList = const [1, 2, 3];
  final finalList = const [1, 2, 3];
  const constList = [1, 2, 3];
  varList = [1];
//  constList = [1];
//  finalList = [1];

  //8.  const导致的不可变性是可传递的
  final List ls = [1, 2, 3];
  ls[1] = 4;
  print(ls);
  const List ls1 = [1, 2, 3];
//  ls1[1] = 4;

  //9. 相同的const常量不会在内存中重复创建
  final finalList1 = [1, 2];
  final finalList2 = [1, 2];
  print(identical(finalList1, finalList2)); //identical用于检查两个引用是否指向同一个对象

  const constList1 = [1, 2];
  const constList2 = [1, 2];
  print(identical(constList1, constList2)); //identical用于检查两个引用是否指向同一个对象

  //10. const 需要是编译时常量
  final DateTime finalDateTime = DateTime.now();
  //  const DateTime constDateTime = DateTime.now();//DateTime.now() 是运行期计算出来的值
  const sum = 1 + 2; //使用内置数据类型的字面量通过基本运算得到的值
  const aConstNum = 0;
  const aConstBool = true;
  const aConstString = 'a constant string';
  const aConstNull = null;
  const validConstString =
      '$aConstNum, $aConstBool, $aConstString, $aConstNull';
  print(validConstString); //使用计算结果为null或数字,字符串或布尔值的编译时常量的插值表达式

}

相关文章

  • dart语法7-泛型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法8-库

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法10-生成器

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法9-异步

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法11

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法2-内置类型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法1

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法3-函数

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法4-操作符

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法6-类

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

网友评论

      本文标题:dart语法1

      本文链接:https://www.haomeiwen.com/subject/xzycohtx.html