目录

像大多数语言一样,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. Rancher 2.0 简单使用 重要部分截取

    学习地址 : https://rancher.com/docs/rancher/v2.x/en/quick-start-guide/ Install Rancher sudo docker run - ...

  2. Newtonsoft.Json反序列化(Deserialize)出错:Bad JSON escape sequence

    使用Newtonsoft.Json反序列化收到的字串为JObject或其它支持的数据模型,有时错误,提示如下: Bad JSON escape sequence: \c. Path , positio ...

  3. Solidity的三种合约间的调用方式 call、delegatecall 和 callcode

    0x00 前言 Solidity(http://solidity.readthedocs.io/en/v0.4.24/) 是一种用与编写以太坊智能合约的高级语言,语法类似于 JavaScript. S ...

  4. idea打包含第三方依赖的jar包

    1.打开idea,打开java项目,选择file-->Project Structure,添加依赖的jar包 2.配置artfacts 点击ok,不需要做任何操作 点击jar,右键新建一个lib ...

  5. Node.js web发布到AWS ubuntu 之后,关闭Putty,Node 项目也随之关闭的解决办法

    最近公司把BlockChain和对应的Node Web都发布到了AWS 的ubuntu 系统上. 但是遇到了一个问题,每次启动 Node Web之后,关闭Putty,Node Web也随之关闭. 由于 ...

  6. rsyslog和logrotate

    简介 rsyslog 是一个 syslogd 的多线程增强版. 现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了 rsyslog负责写入日志, logrotate负责备份 ...

  7. 《C#从现象到本质》读书笔记(五)第5章字符串第6章垃圾回收第7章异常与异常处理

    <C#从现象到本质>读书笔记(五)第5章字符串 字符串是引用类型,但如果在某方法中,将字符串传入另一方法,在另一方法内部修改,执行完之后,字符串的只并不会改变,而引用类型无论是按值传递还是 ...

  8. 20175316盛茂淞 2018-2019-2 《Java程序设计》第5周学习总结

    20175316盛茂淞 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 第六章 接口与实现. 何谓接口 接口:书上没有明确地给出接口的定义,我理解的接口就是一 ...

  9. Bootstrap方法为页面添加一个弹出框

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. Hive记录-Beeline常用操作命令

    Beeline和其他工具有一些不同,执行查询都是正常的SQL输入,但是如果是一些管理的命令, 比如进行连接,中断,退出,执行Beeline命令需要带上"!",不需要终止符.常用命令 ...