1.变量和常量
使用var关键字声明变量,可赋予变量不同类型的值.未初始化时,默认为null.
void main(){
var a; //未初始化,默认为null
a = 10; // 10
a = " 字符串" 或 a = '字符串' //dart中用双引号还是单引号声明字符串类型都是可以的
a = 10.1; //double类型
final b = 10; //使用final关键字声明一个只能赋值一次的变量
const c = 10; //使用const关键字声明的变量是一个编译时常量
c = 20; //❌ 给c重新赋值会报错
final和const不能和var一起使用,使用final和const建议指定数据类型.
//如果声明时,不想指定变量的类型,可以使用dynamic关键字.
dynamic str = 'this is string';
str = 10; //str可以重新赋值为整型,str在这里是一个动态的数据类型
}
2.Dart中的数据类型
Dart中的数据类型包含以下几种:num(数值型),string(字符串类型),boolean(布尔类型),map集合,list(数组),runes(用于在字符串中表示Unicode字符),symbols.
1.Number
void main(){
num a = 10; //整型
a = 10.1 //浮点型 重新给a赋值,不会报错,因为num包含两种子类型:int和double.dart中没有float类型,小数都是double.
int b = 10;
b = 10.1; //❌ 已经定义为整型的值,重新赋值为浮点型,会报错
double c = 10.1;
c = 0;//❌ 已经定位为浮点型的值,重新赋值为整型,会报错
}
1.1 数值型的操作
基本操作除了运算符:+,-,*,/,~/
void main(){
int i = 10;
print(i.isOdd);//判断是奇数
print(i.isEven);//判断是偶数
// int值转换为string
String oneAsString = 1.toString();
// double值转换为string
String piAsString = 3.1455.toStringAsFixed(2); //后面的意思是保留几位小数
}
2.String
void main(){
String string = "双引号";
String string = '单引号';
//单双引号里面可以嵌套使用引号
String singleString = 'abc';
String doubleString = "def";
//单引号内嵌套双引号
String mergeString = '$singleString aaa "bbb" ${doubleString}';
print(mergeString);//输出 abc aaa "bbb" def
//双引号内嵌套单引号(如果是表达式需要${表达式})
String mergeString = "${singleString.toUpperCase()} bbb 'aaa' ${doubleString.toUpperCase()}}";
print(mergeString); //输出 ABC bbb 'aaa' DEF
//string转换为int
int a = int.parse('1');
//string转换为double
double b = double.parse('1.5');
}
3.boolean 布尔类型
为了表示布尔值,Dart有一个名为bool的类型。boolean字符 true和false,它们都是编译时常量。
assert是Dart语言内置的断言函数,仅在检查模式下有效.
// 检查是否为空
var fullName = '';
assert(fullName.isEmpty);
// 为0检查
var hitPoints = 0;
assert(hitPoints <= 0);
// 检查是否为 null.
var unicorn;
assert(unicorn == null);
// 检查是否为 NaN.
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);
4.list集合(数组)
//没有类型限制的list,如下
List list = ['one',2,false];//存放多个不同类型的对象
//创建一个常量list,不可变的list
List list = const[1,2,3];
//创建指定类型的list
List <String> list = ['one','two','three'];//对象全部为String类型
4.1数组常用的方法
List list = [1,2,3,'Hello',true];
//修改下标为2的对象的值
list[2] = 'sugar';//打印输出:1,2,sugar,hello,true
//获取list的长度
list.length
//向list中添加元素
list.add('value');
//向list 中指定下标添加元素
list.insert(1,'value');
//移除list中的元素
list.remove('value');
//移除list中指定下标的元素
list.removeAt(2);
//判断list中是否包含某个元素
if(list.indexOf('value'))
5. map集合
类似Objective-C中的字典Dictionary,映射是关联键和值的对象,每个键key只能出现一次,但是value可以使用相同的值.
void main(){
//创建map
var mapList = {'first':'one','second':'two'};
// 创建不可变的 Map
var constLanguage = const {'fisrt': 'dart', 'second': 'java'};
// 通过构造器创建
var initLanguage = new Map();
}
5.1 Map常见的方法
// 获取长度
print(map.length);
// 判断是否为空
print(map.isEmpty);
print(map.isNotEmpty);
// 获取到所有的 key
print(map.keys);
// 获取到所有的 values
print(map.values);
// 判断是否包含某个key
print(map.containsKey("key"));
// 判断是否包含某个value
print(map.containsValue("key"));
6. runes
在Dart中,runes是字符串的UTF-32代码点。
Unicode为世界上所有书写系统中使用的每个字母,数字和符号定义唯一的数值。表达Unicode代码点的常用方法是\uXXXX,其中XXXX是4位十六进制值。要指定多于或少于4个十六进制数字,请将值放在大括号中。String类有几个属性可用于提取符文信息。 codeUnitAt
和codeUnit
属性返回16位代码单元。 使用runes属性获取字符串的符文。
7.Symbols
Symbol对象表示在Dart程序中声明的运算符或标识符。 您可能永远不需要使用符号,但它们对于按名称引用标识符的API非常有用,因为缩小会更改标识符名称而不会更改标识符符号。Symbols时编译时常量。
网友评论