美文网首页
Dart语言基础之基本数据类型

Dart语言基础之基本数据类型

作者: 星空下奔跑 | 来源:发表于2019-04-02 21:31 被阅读0次

原文:https://www.dartlang.org/guides/language/language-tour

Dart基本数据类型

  • num
  • string
  • boolean
  • list(array)
  • set
  • map
  • run
  • symbol

你可以用文字初始化这些对象。例如:'this is a string'是一个string文字,true是一个布尔文字。

在Dart中每个变量都指向一个对象(一个类的实例),你通常可以用构造函数来初始化变量。一些内置类型有它们自己的构造函数。例如:你可以用Map()来创建一个map。
Dart 数字有两种类型:
int:
整型值不大于64bit,这取决于平台。再Dart VM上,int的范围时-263 to 263 - 1,Dart 编译成JavaScript int的范围是 -253 to 253 - 1

double:
双精度浮点数字,由IEEE 754定义。

intdouble都是num的子类型,num包括基本运算符如:+ - / *,abs(),ceil(),floor()和其他方法。位运算符例如>>被定义在int类中。
下面是定义一个整型变量:

var x=1;
var hex=0xDEADBEFF;

如果一个数字包含小数点,它就是一个double类型,下面是定义一个double变量:

var y=1.1;
var exponents=1.42e5;

Dart 2.1中,整型变量会自动转换成double:

double z=1;//在Dart2.1之前这样定义会发生错误

下面是怎么将string变成一个数字,反之亦然:

//string->int
var one=int.parse('1');
var onPointOne=double.parse('1.1');

//int->string
String oneAsString=1.toString();

//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

文字数字是编译时常量。许多算术表达式也是编译时常量,只要它们的操作数是编译时常量。

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

字符串

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

var s1 = 'Single quotes work well for string literals.';
var s2 = "Double quotes work just as well.";
var s3 = 'It\'s easy to escape the string delimiter.';
var s4 = "It's even easier to use the other delimiter.";

你可以用${表达式}把一个值的表达式放在一个字符串中。如果这个表达式是一个标识符,一可以省略{},可以用toString()方法来获得一个对象对应的字符串。

var s = 'string interpolation';

assert('Dart has $s, which is very handy.' ==
    'Dart has string interpolation, ' +
        'which is very handy.');
assert('That deserves all caps. ' +
        '${s.toUpperCase()} is very handy!' ==
    'That deserves all caps. ' +
        'STRING INTERPOLATION is very handy!');

==运算符用来比较两个对象是否相等,两个字符串是否相等取决于它们的单元序列是否一致。
你可以用+或者两个相邻的字符串将它们拼接起来:

var s1 = 'String '
    'concatenation'
    " works even over line breaks.";
assert(s1 ==
    'String concatenation works even over '
    'line breaks.');

var s2 = 'The + operator ' + 'works, as well.';
assert(s2 == 'The + operator works, as well.');

另一种创建多行字符串的方法是用三个单引号或者双引号来标记:

var s1 = '''
You can create
multi-line strings like this one.
''';

var s2 = """This is also a
multi-line string.""";

你可以用一个r前缀来创建一个“raw”字符串:

var s = r'In a raw string, not even \n gets special treatment.';

文字字符串是编译时常量,只要他们的内插值表达式是编译时常量:

// These work in a const string.
const aConstNum = 0;
const aConstBool = true;
const aConstString = 'a constant string';

// These do NOT work in a const string.
var aNum = 0;
var aBool = true;
var aString = 'a string';
const aConstList = [1, 2, 3];

const validConstString = '$aConstNum $aConstBool $aConstString';
// const invalidConstString = '$aNum $aBool $aString $aConstList';

布尔

为了表示boolean值,Dart有个叫bool的类型。只有truefalse是bool类型,它们都是编译时常量。

Dart的类型安全是指,你不能用if (nonbooleanValue)或者assert (nonbooleanValue),取而代之的是,明确的检查值:

// Check for an empty string.
var fullName = '';
assert(fullName.isEmpty);

// Check for zero.
var hitPoints = 0;
assert(hitPoints <= 0);

// Check for null.
var unicorn;
assert(unicorn == null);

// Check for NaN.
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);

列表

可能每个编程语言最共同的集合就是array,或者对象的有序组。在Dart中数组是List。

var list = [1, 2, 3];

创建一个编译时常量的list,在它的list文字前面加上const

var constantList = const [1, 2, 3];
// constantList[1] = 1; // Uncommenting this causes an error.

集合

var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};
var names = <String>{};
// Set<String> names = {}; // This works, too.
// var names = {}; // Creates a map, not a set.

添加:

var elements = <String>{};
elements.add('fluorine');
elements.addAll(halogens);

To create a set that’s a compile-time constant, add const before the set literal:

final constantSet = const {
  'fluorine',
  'chlorine',
  'bromine',
  'iodine',
  'astatine',
};
// constantSet.add('helium'); // Uncommenting this causes an error.

Maps

var gifts = {
  // Key:    Value
  'first': 'partridge',
  'second': 'turtledoves',
  'fifth': 'golden rings'
};

var nobleGases = {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};

用构造函数创建map:



var gifts = Map();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';

var nobleGases = Map();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';

Dart2 可以在创建对象时省略new
To create a map that’s a compile-time constant, add const before the map literal:

final constantMap = const {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};

// constantMap[2] = 'Helium'; // Uncommenting this causes an error.

Runes

在Dart中runes是UTF-32字符串。

符号(Symbols)

一个Symbol对象代表一个操作符或者一个Dart程序中声明的标识符. 你可能永远都不会使用符号, 但它们对于通过名称引用标识符的API非常有用,because minification changes identifier names but not identifier symbols.

为了获得一个符号或标识符,使用符号文字,仅需在 # 后边跟标识符:

#radix
#bar

符号文字是编译时常量。

相关文章

  • Dart基础语法

    Dart基础语法 基本数据类型 Dart 属于强类型语言(在Dart2.0之前,Dart是一门弱类型语言。2.0以...

  • R语言基础--数据类型-总结

    R语言基础--数据类型-总结 1、R语言基础--数据类型之向量 2、R语言基础--数据类型之因子 3、R语言基础-...

  • Dart语言基础之基本数据类型

    原文:https://www.dartlang.org/guides/language/language-tour...

  • dart入门潜修系列教程

    dart入门潜修基础篇之基本语法和内置类型dart入门潜修基础篇之方法dart入门潜修基础篇之操作符dart入门潜...

  • Dart语言基础(二)之数据类型

    Dart语言之数据类型 数据类型 dart语言数据类型包含一下类型:变量-Var常量-Const数值型-Numbe...

  • 【OC梳理】基本数据类型和基本运算

    Objective-C作为以C语言为基础的语言,其基本数据类型与C语言类似。 1.基本数据类型 基本数据类型可以参...

  • 一、Flutter中Dart语言

    一、基本类型 Dart属于是强类型语言,可以用 var来声明变量 Dart 会自推导出数据类型, var 实际上是...

  • Flutter中Dart基础

    Flutter是基于Dart语音开发的,Dart是面向对象的语言,下面记录一些Dart语言常用数据类型的用法。 1...

  • Flutter系列(2)Dart语言基础

    Flutter的开发语言是Dart语言的,这篇文章就说说Dart语言基础 一、Dart 初体验 在flutter项...

  • 【Flutter】Dart基本语法

    Dart编程语言——基本概念及变量类型Dart编程语言——方法Dart编程语言——操作符、流程控制和异常Dart编...

网友评论

      本文标题:Dart语言基础之基本数据类型

      本文链接:https://www.haomeiwen.com/subject/aevrbqtx.html