Dart

Dart - 内置类型(num、bool、String)

2019-12-08  本文已影响0人  LouisXWB

前面我们提到了Dart是静态类型语言,但它可以用var动态定义变量,然后由编译器进行推断,也可以用静态类型来精准地声明变量,这篇文章就是来介绍Dart内置的类型。

学前须知

Dart 语言的类型:

汇总如下:

概括基本含义:

Dart 内置类型简介

详细介绍

1、numbers

Dart 的数值类型 是num,有两种子类:intdouble。分别是 64 位 的int 和符合 IEEE 754 标准的 64 位 double。前者代表整数类型,而后者则是浮点数类型。

定义

num 中定义了一些基本的运算符比如 +、-、*、/ 等,还定义了 abs()ceil()floor() 等方法(位运算符,比如 » 定义在 int 中)。如果 num 及其子类不满足你的要求,比如需要三角函数、指数、对数、平方根等高级函数,可以查看 dart:math 库中的 API。

具体使用
var x = 1;
var hex = 0xDEADBEEF;
var y = 1.1;
var exponents = 1.42e5;
// String -> int
var one = int.parse('1');
assert(one == 1);

// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);

// int -> String 
//️(由于一切皆变量,num变量可以直接调用方法,没有类似Java基本类型变量的装箱和拆箱)
String oneAsString = 1.toString();
assert(oneAsString == '1');

// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');
assert((3 << 1) == 6); // 0011 << 1 == 0110
assert((3 >> 1) == 1); // 0011 >> 1 == 0001
assert((3 | 4) == 7); // 0011 | 0100 == 0111

️ " 运算符也是一种类型,继承自 num"

const msPerSecond = 1000;
const secondsUntilRetry = 5;
const msUntilRetry = secondsUntilRetry * msPerSecond;

2、boolean

Dart 使用 bool 关键字表示布尔类型,布尔类型只有两个对象 truefalse,两者都是编译时常量。

️Dart 的类型安全不允许你使用类似 if (nonbooleanValue) 或者 assert (nonbooleanValue)这样的代码检查布尔值。相反,你应该总是显示地检查布尔值,比如像下面的代码这样:

// 检查是否为空字符串 (Check for an empty string).
var fullName = '';
assert(fullName.isEmpty);

// 检查是否小于等于零。
var hitPoints = 0;
assert(hitPoints <= 0);

// 检查是否为 null。
var unicorn;
assert(unicorn == null);

// 检查是否为 NaN。
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);

3、strings

Dart 字符串是 UTF-16 编码的字符序列。可以使用单引号或者双引号来创建字符串:

var s1 = '使用单引号创建字符串字面量。';
var s2 = "双引号也可以用于创建字符串字面量。";
var s3 = '使用单引号创建字符串时可以使用斜杠来转义那些与单引号冲突的字符串:\'。';//️
var s4 = "而在双引号中则不需要使用转义与单引号冲突的字符串:'";//️
var s = '字符串插值';

assert('Dart 有$s,使用起来非常方便。' == 'Dart 有字符串插值,使用起来非常方便。');
assert('使用${s.substring(3,5)}表达式也非常方便' == '使用插值表达式也非常方便。');

"== 运算符判断两个对象的内容是否一样,如果两个字符串包含一样的字符编码序列,则表示相等。"

var s1 = '可以拼接'
    '字符串'
    "即便它们不在同一行。";
assert(s1 == '可以拼接字符串即便它们不在同一行。');//️

var s2 = '使用加号 + 运算符' + '也可以达到相同的效果。';
assert(s2 == '使用加号 + 运算符也可以达到相同的效果。');
var s1 = '''
你可以像这样创建多行字符串。
''';

var s2 = """这也是一个多行字符串。""";
var s = r'在 raw 字符串中,转义字符串 \n 会直接输出 “\n” 而不是转义为换行。';
//可以将下面三个常量作为字符串插值拼接到字符串字面量中。
const aConstNum = 0;
const aConstBool = true;
const aConstString = 'a constant string';

// 而下面三个常量则不能作为字符串插值拼接到字符串字面量。
var aNum = 0;
var aBool = true;
var aString = 'a string';

const validConstString = '$aConstNum $aConstBool $aConstString';
// const invalidConstString = '$aNum $aBool $aString';
上一篇下一篇

猜你喜欢

热点阅读