# 数据类型

Dart中常用数据类型有Numbers(数值型)、Strings(字符串)、Booleans(布尔值)、List(数组)、Map(字典)。

# Number(数值型)

# int类型

var num = 123;
int num2= 12345;//值必须是int类型
int num3 = 0x123;

# double类型

var num = 123.2;
double num2= 123.45;//值必须是double类型

# Strings类型

# String

var str = 'var定义字符串';
String str2 = 'String定义字符串';//值必须是String类型
String str3 = '''
你好,dart。
''';//使用`'''`定义多行文字

字符串拼接

  • + 加好拼接符
  • $ 字符串模板:
print('$str $str1');

# Booleans(布尔值)

# bool

var bool1 = true;
bool b = false;

# List类型

Dart中,数组是列表对象,所以大多数人知识称之为列表。

var l1 = ['aa','bbb','cccc'];
//li.length //求长度

var l2 = new List();

l2.add('张三');
l2.add('李四');
l2.add(345);

print(l2);

var l3 = new List<String>();//元素只能是String

# Map类型

Map是键值对,键和值可以是任何类型对象

var person = {
    'name':'Sogrey',//key 必须加引号
    'age':30
}
print(person);
//print(proson.name); 错误
print(proson['name']); //正确

person['work']=['程序员','学生'];

# dynamic与Object

Dart中一切皆对象,父类都是Object。

当没有明确类型时,编译时会根据值明确类型,例如:

var data1 = 'adc';
Object data2 = 123;
dynamic data3 = 'hij';

以上写法虽没错,但Dart不建议我们这么做,尽量明确值的类型,这样不仅可以提高安全性,加快运行速度。

# is关键字判断数据类型

var str = 'hello';

if(str is String){
    print('字符串类型')
}

//str is int
//str is double
//str is bool

# 不常用数据类型

# Runes

Rune是UTF-32编码的字符串,他可以通过文字转换成符号表情或者代表特定文字。

main(){
  var clapping = '\u{1f44f}';
  print(clapping);
  print(clapping.codeUnits);
  print(clapping.runes.toList());

  Runes input = new Runes(
    '\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}'
  );
  print(new String.fromCharCodes(input));
}
👏
[55357, 56399]
[128079]
♥ 😅 😎 👻 🖖 👍

# Symbols

Symbols对象表示在Dart程序中声明的运算符或标识符,您可能永远不需要使用符号。