目录

像大多数语言一样,dart 也提供了 number,string,boolean 等类型,包括以下几种:

  • numbers
  • strings
  • booleans
  • lists (also known as arrays)
  • maps
  • runes (for expressing Unicode characters in a string)
  • symbols

    这几种内建类型的特点之一是你可以使用字面量来创建一个相应的对象。你也可以使用构造函数来初始化这些对象,除了 number 和 boolean,因为这两个类型没有对应的构造函数。

    number 类型

number 类型包含 int 和 float 类型,int 在 dart 的 VM 环境下,取值范围在 - 263 到 263-1 之间。如果需要转为 js,范围为 js 的范围,-253 到 253-1。代码示例如下:


import 'dart:math';
main(List<String> args) { int a = 2;
int a1 = 2.0; // 报错
double b = 2.0;
double b1 = 2; //dart2.1 会自动转换,之前的版本会报错
var c = 0x111; // 支持 16 进制表示
print(pow(2, 65)); // 打印出 0 超出数字范围
}

将数字转换为字符串可以使用数字的 toString 方法,将字符串转换为数字可以使用字符串的 parse 方法。这点和 js 相比,js 借助隐式类型转换可以更灵活的转换数字和字符串。


// 数字转字符串 print(2.toString());
print(2.5333.toString());
print(2.5333.toStringAsFixed(2));//2.50 保留几位小数
print(2.5333.toStringAsExponential(2));// 科学计数法
print(2.5333.toStringAsPrecision(8));//2.5333000 // 字符串转数字 print(int.parse('1'));
print(double.parse('2'));

在运算上,数字支持常用的四则运算,此外 dart 提供了一个 math 包来支持更复杂的运算。

字符串

在语法上,dart 的字符串的字面量语法和 python 的语法更为接近,比如可以选择使用单引号和双引号,或者使用三个双引号表示多行字符串。以下都是合法的字符串表示形式:

var s1 = 'hhh';
var s2 = "'11'";
var s3 = '111'
"222";
var s4 = """222
333 2222""";

除了字面量语法,你还可以使用以下构造函数来生成一个字符串:

String.fromCharCode(65);//A
String.fromCharCodes();//"A-!"

在字符串的方法上,与 js 的字符串很类似,甚至部分代码可以直接拷到 js 中执行。下面是关于 dart 字符串方法的一个例子,更详细的文档可以看 这里

// 长度
'1234'.length; //4 // 取子串
'1234'.substring(1,2); // 取 unicode 值
print('123456'.codeUnitAt(1)); //js 中的 charCodeAt() // 判断某个字符串是不是以某子串开始或结束
'123456⚠️'.startsWith('12'); //js 相同
'123456⚠️'.endsWith('⚠️'); //js 相同 // replace
'112'.replaceAll('1', 'x');// 'xx2' 全部替换
'112'.replaceFirst('1', 'x');// 'x12' 只替换第一个 //split
print('1234561'.split('3')); // 同 js // trim,trimLeft,trimRight 修剪两边,左边,右边的空格,同 js
print('1234561'.trim()); //contains
print('1234561'.contains('8')); //false 判断字符串是否包含某个子串 // indexOf,lastIndexOf, 获取某个字串第一次出现和最后出现的位置。同 js,没有返回 - 1
print('1234561'.indexOf('9'));// -1 // padLeft,padRight 同 js 的 padStart 和 padEnd
print('1234561'.padLeft(9, '0'));//001234561
print('1234561'.padEnd(9, '0'));//123456100 // toUpperCase,toLowerCase 同 js
print('x'.toUpperCase());
print('X'.toLowerCase());

dart也支持模板字符串,使用方法和js的基本相同,但是当你要放入模板字符串的是一个变量时,甚至可以省略花括号,如下面的$string所示:

string = 'dartlang';
'$string has ${string.length} letters'; // 'dartlang has 8 letters'

字符串全部的方法可以参考api文档

布尔类型

布尔类型有两种值,true 和false。值得注意的是,由于dart是一种类型安全的语言,没有js中的隐式转换,你不能写!0这样的代码,也不可以在if语句中这样判断。逻辑运算符也只接受布尔类型的操作数。

  print(true);
print(false);
print(!true);
print(true && false);
print(true || false);

dart之旅(二)- 内建类型的更多相关文章

  1. python高级编程之(类级):子类内建类型

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #类级 #在2.2中,提出了类型(type0与类(class)统一( ...

  2. 零基础学python-4.2 其它内建类型

    这一章节我们来聊聊其它内建类型 1.类型type 在python2.2的时候,type是通过字符串实现的,再后来才把类型和类统一 我们再次使用上一章节的图片来说明一些问题 我们通过对照上面的图片.在p ...

  3. proto3 不支持内建类型的非空判断即 hasXXX

    proto3 移除了内建类型的非空判断方法 即代码生成工具不会为 bool int 等类型生成has方法 有使用过proto2 或者其它rpc 框架的人都知道使用has 方法去判断消息里的值是否设置, ...

  4. [golang note] 内建类型

    基础类型 √ golang内建基础类型有布尔类型.整数类型.浮点类型.复数类型.字符串类型.字符类型和错误类型. 复合类型 √ golang支持的复合类型有指针.数组.数组切片.字典.通道.结构体和接 ...

  5. 内建类型,与用户自定义类型,返回值为const

    1对内建类型来说,按值返回的是否为const,是无关紧要的,因为编译器已经不让它成为一个坐直,因为它总是一个值,而不是一个变量(thing in c++ page192) 2当处理用户自定义的类型时, ...

  6. python 内建类型

    ''' 数值 numbers 字符串 strings 列表 lists 字典 dictionaries 元组 tuples 文件 files 集合 sets ''' 1.1 序列的操作 所有序列类型都 ...

  7. [python学习篇][书籍学习][python standrad library][内建类型]之数值

    数值类型 — int, float, long, complex 有四种不同的数值类型:普通整数.长整数.浮点数和复数 普通整数(或者简称整数)使用C中的long实现,其精度至少为32位(sys.ma ...

  8. 12.Python提供了哪些内建类型

    There are mutable and Immutable types of Pythons built in types Mutable built-in types: List Set Dic ...

  9. [python学习篇][书籍学习][python standrad library][内建类型]迭代器类型

    我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list.tuple.dict.set.str等:一类是generator,包括生成器和带yield的generato ...

随机推荐

  1. js监控鼠标滚动事件

    //滚动动画 windowAddMouseWheel(); function windowAddMouseWheel() { var scrollFunc = function (e) { e = e ...

  2. 【python原理解析】gc原理初步解析

    python的gc是会用到:引用计数.标记-清除和分代收集,首先说明一下什么是引用计数 可以通过sys模块中的getrefcount()方法获取某个对象的引用计数 python本身的数据类型有基础类型 ...

  3. 微软Office Online服务安装部署(二)

    现在准备配置Client 1.进入到桌面后,打开powershell 输入: Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console ...

  4. 3T - A1 = ?

    有如下方程:A i = (A i-1 + A i+1)/2 - C i (i = 1, 2, 3, .... n). 若给出A 0, A n+1, 和 C 1, C 2, .....C n. 请编程计 ...

  5. FastFDS基础

    1. FastDFS介绍 FastDFS( Fast Distributed file system)是一款轻量级的.高性能的.阿里巴巴开源的分布式文件系统.该系统的作者是余庆 (happyfish1 ...

  6. 综合评价模型C++实现

    1 综合评价模型建立步骤 综合评价模式是一种对一个或多个系统进行评价的模型.一般分为如下几个步骤: 选取评价指标,指标的选取应该具有独立性和全面性. 得到m×n测量矩阵,每一行表示一个带评价系统(共m ...

  7. linux下部署monogoDB服务(以及安装php mogodb扩展)

    这两天网站转移到新的服务器后,登录时出现一个问题,会等待几分钟服务器才响应. 开始以为是nginx服务器的问题,后面经过排查发现是php一个登陆验证的函数的问题,每次跑到这个函数就会迟钝几分钟. 经过 ...

  8. 2.在demo bag上运行cartographer ROS

    注意在运行bag包,之前需要去执行source install_isolated/setup.bash 1.Deutsches Museum 下载并启动2D的backpack demo: wget - ...

  9. java中random的几个方法的使用Math.random()和random().

    random java中我们有时候也需要使用使用random来产生随机数,下面我来简单的介绍下java中random的使用方法 第一种:Math.random() public static doub ...

  10. Elasticsearch下安装ik分词器

    安装ik分词器(必须安装maven) 上传相应jar包 解压到相应目录 unzip elasticsearch-analysis-ik-master.zip(zip包) cp -r elasticse ...