【Flutter】Dart 数据类型 ( var 数据类型 | Object 数据类型 )

举报
韩曙亮 发表于 2022/01/10 23:01:08 2022/01/10
【摘要】 文章目录 一、 var 数据类型二、 var 数据类型不能被改变三、 Object 类型四、 完整代码示例五、 相关资源 Dart 语言中有 dynamic , var , Object...


Dart 语言中有 dynamic , var , Object , 3 3 3 种数据类型 ;





一、 var 数据类型



var 也是定义变量的关键字 , 使用 var 声明变量 , 也是 由系统根据该变量的 赋值 自动 推断该变量的数据类型 ; 该用法与 dynamic 关键字定义的变量类似 ;

代码示例 :

  varDemo(){
    // 声明 var 变量
    var d = "CSDN";

    // 打印 var 变量的运行时类型
    print(d.runtimeType);
    // 打印 var 变量值
    print(d);

  }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

运行结果 : d 变量的类型被自动推断为 String 类型 ;

String
CSDN

  
 
  • 1
  • 2




二、 var 数据类型不能被改变



var 与 dynamic 变量的区别是 , 一旦 var 类型的变量的动态数据类型被定义后 , 其数 据类型不能再进行修改 , 如果 var 类型变量被赋值字符串后 , 再次为其赋值 int 类型 , 此时编译时就会被报错 ,

在这里插入图片描述





三、 Object 类型



Object 是 所有对象的基类 , 其中定义了一些方法 , 定义 Object 类型的变量后 , 就可以调用该对象的 Object 方法 ;

为其赋值时 , 可以 赋值其子类的类型值 , 如字符串值 , 相当于 多态用法 ;


Object 类中定义的方法 :

class Object {

  const Object();

  external bool operator ==(other);

  external int get hashCode;

  external String toString();

  @pragma("vm:entry-point")
  external dynamic noSuchMethod(Invocation invocation);

  external Type get runtimeType;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

代码示例 :

  objectDemo(){
    // 定义 Object 类型变量
    Object d = "CSDN";

    // 调用 Object 对象的方法
    // 打印 var 变量的运行时类型
    print(d.runtimeType);
    // 打印 var 变量值
    print(d);
  }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

运行结果 : 变量 d 的运行时类型是 String 类型 ;

String
CSDN

  
 
  • 1
  • 2

Object 变量与 dynamic 变量的区别是 , Object 数据类型是确定的 , 就是 Object 类型 , Object 类型变量不能调用 Object 类中不存在的方法 ;

在这里插入图片描述





四、 完整代码示例



完整代码示例 :

import 'package:flutter/material.dart';

class DartType extends StatefulWidget {
  @override
  _DartTypeState createState() => _DartTypeState();
}

class _DartTypeState extends State<DartType> {
  @override
  Widget build(BuildContext context) {

    dynamicDemo();

    varDemo();

    objectDemo();

    return Container();
  }

  dynamicDemo(){
    dynamic d = "CSDN";

    // 打印 dynamic 变量的运行时类型
    print(d.runtimeType);
    // 打印 dynamic 变量值
    print(d);

    // 调用 dynamic 变量的方法, 静态编译时无法检查其中的错误, 运行时会报错
    //d.getName();

    // 为 dynamic 变量赋值 int 数据
    d = 666;
    // 打印 dynamic 变量的运行时类型
    print(d.runtimeType);
    // 打印 dynamic 变量值
    print(d);
  }

  varDemo(){
    // 声明 var 变量
    var d = "CSDN";

    // 打印 var 变量的运行时类型
    print(d.runtimeType);
    // 打印 var 变量值
    print(d);

    // 将已经被自动推测为 String 类型的 d 变量赋值一个 int 类型值
    // 此时就会在编译时报错
    //d = 666;

  }

  objectDemo(){
    // 定义 Object 类型变量
    Object d = "CSDN";

    // 调用 Object 对象的方法
    // 打印 var 变量的运行时类型
    print(d.runtimeType);
    // 打印 var 变量值
    print(d);

    // 调用 Object 不存在的方法就会报错
    //d.getName()
  }


}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

运行结果 :

String
CSDN
int
666
String
CSDN
String
CSDN

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8




五、 相关资源



参考资料 :


博客源码下载 :

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/113725130

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。