dynamic 表示是动态的,数据类型是指任意类型

  var a;
a = ;
a = "Dart";
print(a); dynamic b = ;
b = "JavaScript";
print(b);
print(b.runtimeType); var list = new List<dynamic>();
list.add();
list.add("hello");
list.add(true);
print(list); print("\n");
dynamic x ='hal';
print(x.runtimeType);//数据类型
print(x); x = ;
print(x.runtimeType);
print(x); var a1 = 'var';
print(a1.runtimeType);
print(a1); // Object
Object o1 ='';
print(o1.runtimeType);
print(o1);
o1.toString();
print(o1);

输出:

Dart
JavaScript
String
[, hello, true] String
hal
int String
var
String
dynamic、var、object 三种类型的区别
dynamic:所有dart 对象的基础类型,在大多数情况下,不直接使用它
通过它定义的变量会关闭类型检查,这意味着 dynamix x= 'hi'; x.foo();
这段代码静态类型检查不会报错,但是运行时会crash,因为x 并没有foo() 方法,所以建议大家在编程时不要直接使用dynamic;
var: 是一个关键字,意思是"我不关心这里的类型是什么",系统会自动判断类型 runtimeType;
object: 是Dart 对象的基类,当你定义: object o =xxx ;时这个时候系统会认为o 十个对象,你可以调用o的toString()和hashCode()方法
因为Object 提供了这些方法,但是如果你尝试调用o.foo()时,静态类型检查会运行报错。
综上,dynamic 与object 的最大的区别是在静态类型检查上。
Dart学习系列文章:https://www.cnblogs.com/jukaiit/category/1636484.html

Dart语言学习(八) dynamic的更多相关文章

  1. Dart语言学习(十) Dart流程控制语句

    一.条件语句:if.if...elseif.if...elseif...else int score = 95; if (score >=90) { print('优秀'); } else if ...

  2. Dart语言学习(二) Dart的常量和变量

    1.使用var声明变量,可赋予不同类型的值 Dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推导 Dart中定义变量可以通过var关键字可以通过类型来申明变量 var str='t ...

  3. Dart语言学习(十二) Dart面向对象

    Dart作为一种高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式. 基于mixin的继承方式是指:一个类可以继承自多个父类,相当于其他语言里的多继承. 所有的类都有同一个基类Obje ...

  4. Dart语言学习(五)Dart Bool类型

    Dart Bool类型和其他语言类似,比较简单 其特点有: 1.使用 bool 表示布尔类型 2.布尔值只有 true 和 false 3.布尔类型bool默认值是null bool isTrue = ...

  5. Dart语言学习( 一) 为什么学习Dart?

    为什么学习Dart? Google及全球的其他开发者,使用 Dart 开发了一系列高质量. 关键的 iOS.Android 和 web 应用. Dart 非常适合移动和 web 应用的开发. 高效 D ...

  6. Dart语言学习(六) Dart 列表List数组

    创建List : var list = [1,2,3,"Dart",true]; 创建不可变List : var list = const [1,2,3,"Dart&qu ...

  7. Dart语言学习(九) 运算符

    一.运算符及其描述 二.Dart运算符注意点 1. 除法运算符"/" 和 整除运算法"~/" 的区别 除法运算符 "/"  结果是浮点型 整 ...

  8. Dart语言学习(七)Dart Map类型

    映射(Maps)是无序的键值对: 常用属性: keys 获取所有的key值 values 获取所有的value值 isEmpty 是否为空 isNotEmpty 是否不为空 常用方法: remove( ...

  9. Dart语言学习(四)Dart字符串

    一.字符串的创建 使用 单引号,双引号 创建字符串 使用 三个引号或双引号 创建多行字符串 使用 r 创建原始 raw 字符串 String str1 = 'Hello';//"" ...

随机推荐

  1. Java修饰符类型

    转自原文:http://www.yiibai.com/java/java_modifier_types.html 修饰符是添加到这些定义来改变它们的含义的关键词. Java语言有各种各样修饰词,其中包 ...

  2. 手机app测试要点(复制文)

    一.简介 移动应用App已经渗透到每个人的生活.娱乐.学习.工作当中,令人激动.兴奋且具有创造性的各种App犹如雨后春笋般交付到用户手中.各类智能终端也在快速发布,而开发者对于全球移动设备的质量和性能 ...

  3. TD - 系统异常 - 登录不上

    问题描述:登录之后,页面停留在登录页面,没有任何错误提示 解决办法:重新安装插件

  4. http请求常见错误状态码

    一.HTTP 错误 400 400 请求出错 由于语法格式有误,服务器无法理解此请求.不作修改,客户程序就无法重复此请求. 原因:(调用方接口方法的实参和服务器接口方法的形参不一致) 1.前端提交数据 ...

  5. 利用Python数据分析基础

    一.Numpy的ndarray:一种多维数组 ndarray是一个通用的同构多维数据容器,其所有元素必须是相同的类型.每个数组都有一个shape(一个表示各维度的元组)和dtype(一个用于说明数据数 ...

  6. [linux] Ubuntu18.04 安装mysql密码不对

    安装 安装过程可以说是非常简单了 sudo apt-get install mysql-server 然后看看有没有启动成功 systemctl status mysql 看到状态是 running就 ...

  7. 【Python】解决浮点数间运算存在不确定尾数的问题

    #浮点数间运算存在不确定尾数,所以会输出False if 0.1+0.2==0.3: print("Ture\n") else: print("False\n" ...

  8. 【C语言】输入一个字符串,并对字符串中的偶数位置的字符按从小到大的顺序排序,奇数位置的字符不动,输出排序后的结果

    #include <stdio.h> #include<string.h> int main() { ]; int i,j,k,len; gets_s(a); len= str ...

  9. (转)java内存分配分析/栈内存、堆内存

    转自(http://blog.csdn.net/qh_java/article/details/9084091) java内存分配分析/栈内存.堆内存 java内存分配分析 本文将由浅入深详细介绍Ja ...

  10. Android Studio 初级控件笔记

    Android支持的像素单位 Android支持的像素单位有:px(像素).in(英寸).mm(毫米).pt(磅,1/72英寸).dp(与设备无关的显示单位).dip(就是dp).sp(用于设置字体大 ...