官方网址 dart.dev/guides/lang…
基础类型
1.Number类型
两种 int 和 double,它们父类型为num,其中num 操作符注意点见下:
//compareTo操作符
print((-0.0).compareTo(0.0)); // => -1
print(double.nan.compareTo(double.nan)); // => 0
print(double.infinity.compareTo(double.nan)); // => -1
//==操作符
print(-0.0 == 0.0); // => true
print(double.nan == double.nan); // => false
print(double.infinity < double.nan); // => false
print(double.nan < double.infinity); // => false
print(double.nan == double.infinity); // => false
复制代码
int、double、String转换
// String -> int
var one = int.parse('1');
assert(one == 1);
// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);
// int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');
// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');
复制代码
2.String类型
可在字符串中使用${expression}来表示该expression值
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 s2 = 'The + operator ' + 'works, as well.';
assert(s2 == 'The + operator works, as well.');
复制代码
使用```,可创建折行字符串
var s1 = '''
You can create
multi-line strings like this one.
''';
复制代码
字符串中包含转移字符时,可在字符串开头使用r表示使用该字符本身,去除转义
var s = r'In a raw string, not even \n gets special treatment.';
复制代码
3.bool类型
只有两个值 true和false
4.list
list分长度固定和非长度固定,长度固定则与数组一样,非固定则可动态添加成员
List<int> fixedLengthList = new List(5);
fixedLengthList.length = 0; // Error
fixedLengthList.add(499); // Error
fixedLengthList[0] = 87;
List<int> growableList = [1, 2];
growableList.length = 0;
growableList.add(499);
growableList[0] = 87;
复制代码
可使用构造函数创建list,参数中传入长度值,则为定长list;否则可变长度list
// The created list is fixed-length if [length] is provided.
List fixedLengthList = new List(3);
fixedLengthList.length; // 3
fixedLengthList.length = 1; // Error
// The list has length 0 and is growable if [length] is omitted.
List growableList = new List();
growableList.length; // 0;
growableList.length = 3;
复制代码
可以使用...插入另外一个列表
var list = [1, 2, 3];
var list2 = [0, ...list];
assert(list2.length == 4);
复制代码
待插入列表可能为空,则可使用...?
var list;
var list2 = [0, ...?list];
assert(list2.length == 1);
复制代码
可使用if和for插入列表元素
//if
var nav = [
'Home',
'Furniture',
'Plants',
if (promoActive) 'Outlet'
];
//for
var listOfInts = [1, 2, 3];
var listOfStrings = [
'#0',
for (var i in listOfInts) '#$i'
];
assert(listOfStrings[1] == '#1');
复制代码
5.set
无序且成员值唯一
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};
复制代码
{}加成员类型,创建set。如果不声明成员类型,则创建的是map类型
var names = <String>{};
// Set<String> names = {}; // This works, too.
// var names = {}; // Creates a map, not a set.
复制代码
可使用add()或者addAll()添加新成员
var elements = <String>{};
elements.add('fluorine');
elements.addAll(halogens);
复制代码
6.map类型
var gifts = {
// Key: Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings'
};
复制代码
可使用map构造函数创建map
var gifts = Map();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';
复制代码
7.Runes
utf-32编码的字符串类型,关于编码的知识见: blog.csdn.net/Deft_MKJing…
关于utf-8、utf-16、utf-32,见: blog.csdn.net/guxiaonuan/…