简介

既然 Dart 是一门语言,那么就和我们所知道语言一样,有基本的数据类型以及常见的流程处理语法,那么我们就来了解下。

Dart 的所有东西都是对象,包括数字,函数等。它们都继承自 Object ,默认是都是 null(包括数字),所以数字,字符串都可以调用各种方法。

常亮与变量

变量

使用 var 声明变量,可赋予不同类型的值;未初始化时,默认值为 null ;使用 final 声明一个只能赋值一次的变量

void main(){

  // 声明一个变量 a
var a;
print(a); // 打印 a 的值,显示为 null a = 10;
print(a); // 打印出来的结果为 10 a = "测试字符串";
print(a); // 打印出来的结果为 测试字符串 a = 30;
print(a); // 打印出来的结果为 30 final b = 10;
b = 20; // 这个会报错,有提示: [dart] 'b', a final variable, can only be set once. }

  

常量

在 dart 中使用 const 声明常量;使用 const 声明的必须是编译期常量。

void main(){
const a = 10;
a = 20; // 这里也会报错:[dart] Constant variables can't be assigned a value.
}

  

在上面我们可以看到 dart 的一些简单的语法。其实和 js 蛮像,声明的变量的数据类型是随便去改变的,没有一个固定的数据类型(例如:java 这种语言)。其次就是 final 和 const 都可以声明变量,并且声明了变量之后都不能修改。

这里简单的说下 final 与 const 的区别:

final 要求变量只能初始化一次,并不要求赋的值一定是编译时常量,可以是常量也可以不是。而 const 要求在声明时初始化,并且赋值必需为编译时常量。

Dart中的内置类型

在Dart 有几种内置的数据类型:数值型-Number、布尔型-boolean、键值对-Map、字符串-String、列表-List、其他类型-Runes、Symbols

数值型

Dart 中只提供了两种类型:

num
1、整形int
2、浮点型double

void main(){

  num a = 10;   // 整形
a = 20.1; // 浮点型 int i = 10;
i = 10.1; // 这个地方会报错,因为将 int 型的数据改为 double 型 double d = 20.1;
d = 20; // 这个地方会报错,因为将 double 型的数据改为 int 型
}

  

从上面可以看到如果是使用 num 声明的变量,可以随意的转换类型,但是如果是使用了int 或者 double 明确的声明,那么就不能转换了

数值型的操作

运算符: +、 - 、* 、/ 、 ~/ 、 %

常用属性: isNaN、isEven、isOdd

常用方法:abs()、round()、floorl()、ceil()、toInt()、toDouble()

// 由于常用的方法在其他语言中都有,就不过去的赘述,下面列出一些特殊的
void main(){ int i = 10;
double d = 20.1; print(i/d); // 0.49751243781094523
print(i~/d); // 0 这个操作是取整 print( i.isOdd ); // 判断是奇数
print( i.isEven ); // 判断是偶数
}

一些常见的转换

// String -> int
var one = int.parse('1');
assert(one == 1); // String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1); // int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1'); // double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');

字符串

在 dart 中居然可以使用 单引号 和 双引号声明字符串。这两种方式都可以。

void main(){
String string = '单引号声明字符串';
String string1 = "双引号声明字符串";
}

在 String 中单、双引号互相嵌套的情况

void main(){

  String str = '单引号中的"双引号"';
String str1 = "双引号中的'单引号'";
print(str);
print(str1); String str2 = '单引号中的 \'单引号\' ';
String str3 = "双引号中的 \"双引号\" ";
print(str2);
print(str3);
}

字符串拼接的方式

下面列出 dart 中拼接字符串的各种骚操作(黑魔法)。

void main(){
// 使用的是空格拼接,多个空格也可以
String str1 = '单引号空格字符串' '拼接' '~'; // 单引号字符串空格拼接~ // 使用换行符以及空格
String str2 = '单引号符串'
'换行了' '再加空格' '拼接'; // 单引号符串换行了再加空格拼接 // 单双引号 空格拼接
String str3 = "单双引号空格字符串" '拼接' "~"; // 单双引号字符串空格拼接~ // 单双引号 换行符以及空格
String str4 = "单双引号符串"
'换行了' '再加空格' '拼接'; // 单双引号符串换行了再加空格拼接 String str5 = '''
使用3个单引号、
看到我使用了么
'''; String str6 = """
使用3个双引号、
看到我使用了么
"""; String str7 = "算了,还是正常一点" + ",使用 + 来拼接";
}

从上面可以看到 dart 中可以使用空格来做为拼接。所以我们继续研究下。

void main(){

  // 拼接字符串, 输出:单引号空格 或者 双引号空格
String blockStr = '单引号''空格';
String blockStr1 = '单引号' '空格';
String blockStr2 = "双引号""空格";
String blockStr3 = "双引号" "空格"; // 下面这两种情况会报错
// String blockStr4 = '单引号''''空格';
// String blockStr5 = "双引号""""空格"; // 测试中间添加字符
String blockStr6 = '单引号''_''空格'; // 输出:单引号_空格
String blockStr7 = "双引号""#""空格"; // 注意不能使用 $,$会报错, 输出:单引号#空格 // 单双引号混合使用
String blockStr8 = '单""""引号'; // 输出:单""""引号
String blockStr9 = '单""_""引号'; // 输出:单""_""引号 // 单双引号混合使用
String blockStr10 = "双''''引号"; // 输出:双''''引号
String blockStr11 = "双''_''引号"; // 输出:双''_''引号
}

${表达式}的使用

类似于JS中 ES6 上面的表达式的使用,感觉是相通的。

void main(){

  var flag = false;
var str = "测试字符串"; print("我们来验证字符串:${str}" "然后看看我们的 flag:${flag}");
// 最后输出的结果为:我们来验证字符串:测试字符串然后看看我们的 flag:false
}

布尔值

assert 是语言内置的断言函数,仅在检查模式下有效
在开发过程中, 除非条件为真,否则会引发异常。(断言失败则程序立刻终止)。

// 检查是否为空
var fullName = '';
assert(fullName.isEmpty); // 为0检查
var hitPoints = 0;
assert(hitPoints <= 0); // 检查是否为 null.
var unicorn;
assert(unicorn == null); // 检查是否为 NaN.
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);

List列表

实例化 List 的方法如下

void main(){

  // 使用构造创建
var list = new List(); //创建一个int类型的list
List intlist = [1, 2, 3]; // 创建一个常量List, 不可以改变的List
List constList = const[10, 7, 23]; }

dart 中数组常用的方法

void main(){

  //  在数组中可以存放多个不同类型的对象
var list = [1, 2, 3, 'Flutter', true];
print(list); // 输出的结果:[1, 2, 3, Flutter, true] // 修改数组下标为2 的值
list[2] = 'Dart';
print(list); // 输出的结果:[1, 2, Dart, Flutter, true] // 获取数组的长度
print(list.length); // 输出的结果:5 // 向数组中添加元素
list.add("value");
print(list); // 输出的结果:[1, 2, Dart, Flutter, true, value] // 向数组中的指定位置添加元素
list.insert(1, 'element');
print(list); // 输出的结果:[1, element, 2, Dart, Flutter, true, value] // 移除数组中的元素
list.remove("value");
print(list); // 输出的结果:[1, element, 2, Dart, Flutter, true] // 移除数组中指定的元素
list.removeAt(1);
print(list); // 输出的结果:[1, 2, Dart, Flutter, true] // 判断数组中是否有某个元素
print(list.indexOf("element")); // 输出结果:-1 // 可以使用 sort() 函数来排序, 但是由于我们使用定义的数组类型不一样,就不能使用
var intlist = [1, 2, 5, 6 ,3]; // 根据语法提示: List.sort([(int, int) → int compare]) → void
intlist.sort( (a, b) => a.compareTo(b) );
print(intlist); // 输出结果:[1, 2, 3, 5, 6] }

map 集合

创建 Map 集合

void main(){

  // 创建Map
var language = {'fisrt': 'dart', 'second': 'java'}; // 创建不可变的 Map
var constLanguage = const {'fisrt': 'dart', 'second': 'java'}; // 通过构造器创建
var initLanguage = new Map();
}

Map 中常用的方法

void main(){

  // 创建Map
var map = {'fisrt': 'dart', 'second': 'java'}; // 获取长度
print(map.length); // 输出结果:2 // 判断是否为空
print(map.isEmpty); // 输出结果:false
print(map.isNotEmpty); // 输出结果:true // 获取到所有的 key
print(map.keys); // 输出结果:(fisrt, second) // 获取到所有的 values
print(map.values); // 输出结果:(dart, java) // 判断是否包含某个key
print(map.containsKey("key")); // 输出结果:false // 判断是否包含某个value
print(map.containsValue("key")); // 输出结果:false // 添加一个新的元素进去
map['third'] = 'key';
print(map); // 输出结果:{fisrt: dart, second: java, third: key} // 循环打印 代码提示:Map.forEach((String, String) → void f) → void
map.forEach( (key, value) => getMap(key, value) );
} void getMap(key, value){
print("key:${key}, value:${value}");
}

  

dynamic 关键字

这个关键字就类似定义我们在 JS 中定义变量的情况。先看下面的代码

void main(){
// a 的数据类型可以随意改变,这种类型就是 dynamic
var a ;
a = 10;
a = "dart"; // 这里我们使用 dynamic 声明
dynamic d = 10;
d = 'dart';
}

  

原文地址:https://blog.csdn.net/qq_18948359/article/details/82749659

Flutter常见数据类型及数据类型转换的更多相关文章

  1. python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  2. 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  3. Objective-C数据类型、数据类型转换

    数据类型 1.Objective-C数据类型可以分为:基本数据类型.对象数据类型和id类型. 2.基本数据类型有:int.float.double和char类型. 3.对象类型就是类或协议所声明的指针 ...

  4. Python基础之模块、数据类型及数据类型转换

    一.模块 1.标准库 不需要安装,直接调入使用的模块. import sys模块: import sys print(sys.path) #打印环境变量绝对路径 print(sys.argv) #打印 ...

  5. (6)java基础知识-基本数据类型、数据类型转换

    一.基本数据类型 基本的数据类型一共有四类八种 1.整型 byte:  1字节 取值范围 -128~127 short: 2字节    取值范围 -32768~32767 int:     4字节 取 ...

  6. (4)C#变量,常量,数据类型,转义字符,数据类型转换

    一.变量 程序运行期间能够被改变的量称为变量. 变量名称要用小写字母开头,避免用下划线开头. 如果包含多个单词,从第二个单词开始首字母都要大写. 定义并初始化 double pi = 3.14 二.常 ...

  7. javascript学习3、数据类型、数据类型转换、运算符

    数据类型包括:基本数据类型和引用数据类型 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值 ...

  8. 02.JS数据类型与数据类型转换

    前言:   学习一门编程语言的基本步骤 (01)了解背景知识 (02)搭建开发环境 (03)语法规范 (04)常量和变量 (05)数据类型 (06)数据类型转换5.数据类型——datatype  数据 ...

  9. Swift数据类型及数据类型转换

    整型  Swift 提供 8.16.32.64 位形式的有符号及无符号整数.这些整数类型遵循 C 语言的命名规 约,如 8 位无符号整数的类型为 UInt8,32 位 有符号整数的类型为 Int32 ...

随机推荐

  1. Python爬取爱奇艺资源

    像iqiyi这种视频网站,现在下载视频都需要下载相应的客户端.那么如何不用下载客户端,直接下载非vip视频? 选择你想要爬取的内容 该安装的程序以及运行环境都配置好 下面这段代码就是我在爱奇艺里搜素“ ...

  2. splice与slice区别

    共同点:均是删除数组元素并返回结果. 区别:splice会改变原数组,而slice不会.并且splice会导致数组塌陷. 数组塌陷:使用splice删除元素时,剩余的数组元素索引的顺讯会改变. let ...

  3. JS数组去掉重复元素

    JS数组去掉重复元素,这里提供3中写法. var arr =[1,2,3,4,5,6,3,4,7,2,4,1,8]; 输出:[1,2,3,4,5,6,7,8]; 1.使用indexOf() arr.i ...

  4. python打印菱形

    1.分析:首先python,我们分析了菱形的成分.双喜鸟seo输入2时,打印三行菱形:输入3时,打印五行菱形.也就是说,根据输入数字A,打印第2a-1行的菱形.菱形由一个三角形和一个倒三角形组成,两个 ...

  5. 4.性能下降原因和常见的Join查询

    性能下降 SQL慢,执行时间长,等待时间长 1.查询语句写的烂 2.索引失效 单值索引失效 和 复合索引失效 3.关联查询太多join(设计缺陷或不得已的需求) 4.服务器调优及各个参数设置(缓冲.线 ...

  6. Java检查异常和非检查异常,运行时异常和非运行时异常的区别

    通常,Java的异常(包括Exception和Error)分为检查异常(checked exceptions)和非检查的异常(unchecked exceptions).其中根据Exception异常 ...

  7. 针对nginx应用场景的配置 知识整理

    本文为转载,原文链接 前言 原本想写整理一篇针对nginx应用场景的相应配置,但发现已经有人整理了,而且写得非常不错,特意转过来 概论 Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 ...

  8. 寻找一组数中最大的K个数

    对于"从一组数中挑出最大的K个数"这个在面试中经常会遇到,所以这次好好的去解析它,而当拿到这个问题时第一时间能想到解法就是:先对数据进行排序,然后再取最大的K个元素,当然这思路没毛 ...

  9. jQuery.fn.extend() 函数详解

    jQuery.fn.extend()函数用于为jQuery扩展一个或多个实例属性和方法(主要用于扩展方法). jQuery.fn是jQuery的原型对象,其extend()方法用于为jQuery的原型 ...

  10. oracle ORA-16038 ORA-00257

    出现 ORA-16038时也可以参考下边的错误,好像有关联影响 出现ORA-00257错误(空间不足错误),通过查找资料,绝大部分说这是由于归档日志太多,占用了全部的硬盘剩余空间导致的,通过简单删除日 ...