dart之旅- 内建类型

Posted imgss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dart之旅- 内建类型相关的知识,希望对你有一定的参考价值。

像大多数语言一样,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""";

在字符串的方法上,与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之旅- 内建类型的主要内容,如果未能解决你的问题,请参考以下文章

dart之旅

我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段

我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段

Dart语言之旅翻译完整版

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

Dart之旅