Dart基础语法<二> 内置类型
2020-12-25 本文已影响0人
果汁味Studio
内置类型
对标Java
的八大内置基本数据类型,Dart
有以下七种内置类型:
- Numbers
- Strings
- Booleans
- Lists
- Maps
- Runes
- Symbols
Numbers
-
num
是数字类型的父类,有两个子类int
和double
,分别对应整型和浮点型。 -
int
和double
在java中都是关键字,而在dart中是类 -
int
根据编译平台确定占用长度,最长为8字节 -
int
有个bitLength()方法,可以确定存储需要占用的位数
Strings(字符串)
- 字符串是 UTF-16 编码的字符序列。
- 使用单双引号均可创建字符串,且单双引号之间可以嵌套使用,可以避免一些
\
转义符的使用。
void test() {
String s1 = "\"test\"";
String s2 = '"test"';
print(s1);
print(s2);
}
以上输出均为带双引号的"test"字符串
- 字符串中可通过$+{变量}方式引用变量拼接字符串,或把多个字符串放到一起实现拼接。
void main() {
String s1 = "Juice";
String s0 = "is";
String s2 = "My name ${ s0}${s1}";
String s3 = "My name is" "Juice";
print(s2);
print(s3);
}
当然也可以像java一样通过 +
操作符拼接字符串
- 使用连续三个单双引号可以创建多行字符串对象
void main() {
String s1="""My
name
is
Juice""";
String s2='''My
name
is
Juice''';
print(s1);
print(s2);
}
5.String提供一个 r
前缀用于创建 “原始 raw” 字符串
void main() {
//换行符
String s1 = "\n";
//输出\n
String s2 = "\\n";
//前面加上r前缀 标识raw:原始字符
//输出同s2
String s3 = r"\n";
}
Booleans(布尔值)
Dart中称为 bool
的类型。 只有true
和 false
两个布尔类型对象,和Java没太大的区别。
Lists(数组)
- 在
Dart
中,数组就是List
对象。 - 对
List
进行遍历也和Java一样。
void main() {
List<int> list = new List();
List<int> list1 = List();
List<int> list2=[1,2,3,4,5];
print(list2[1]);//获取下标为1的值
//遍历数组
//iter for-in 模板
for (var o in list) {
}
//itar for-i模板
for (var i = 0; i < list1.length; ++i) {
var o = list1[i];
}
}
- 注意区分
const
修饰数组的使用
-
const
修饰数组对象,则对象不可变,不能再添加元素,会报以下错误 -
const
修饰变量,即引用,则变量不能再引用其他对象,也不能再添加元素
void main() {
List<int> list3 = const [3, 4, 5, 6];
list3.add(8);
}
数组.png
void main() {
const List<int> list4 = [3, 4, 5, 6];
// list4=[3,2,1];报错
// list4.add(5); 报错
}
Maps(映射集合)
- 键和值可以是任何类型的对象。
- 每个键只出现一次, 而一个值可以出现多次
- 对于不存在的key,则返回
null
- 遍历和
java
一致 -
const
对Map
修饰参考上面的List
void main() {
//声明
Map<int, int> map = {1: 1, 2: 2, 3: 3};
print(map[1]); //获取key为1的值,注意这里的1是key不是下标
map[1] = 5; //修改key为1的元素值
map[8] = 120; //添加key为8的元素
print(map[1]);
print(map[8]);
}
Runes(用于字符串中Unicode字符的表示)
Unicode为世界上所有书写系统中使用的每个字母,数字和符号定义了唯一的数值。 Dart
字符串本身只支持UTF-16 位代码单元字符序列, 所以出现Runes类用于UTF-32字符集中string 对象表示。
- 表达Unicode代码点的常用方法是
\uXXXX
,其中XXXX
是4位十六进制值 - 要指定多于或少于4个十六进制数字,需要将值放在大括号中
void main() {
var clapping = '\u{1f44f}';
//5个16进制 需要使用{}
print(clapping); //👏
//获得 16位代码单元
print(clapping.codeUnits); //[55357, 56399]
//获得unicode代码
print(clapping.runes.toList()); //[128079]
Runes input = new Runes(
' \u{1f47b} \u{1f44d}');
print(String.fromCharCodes(input));//输出 👻 👍
}
Symbols
操作符标识符,表示程序中声明的运算符或标识符。
var i = #A; //常量
print(a.runtimeType);//获取对象运行时的类型 输出Symbol
目前看来,Symbols和Runes在日常开发中较少使用。