1、Dart 的数据类型
1.1、变量
创建一个变量
var name = "wmding";
1.2、Final 和 Const
使用过程中从来不会被修改的变量, 可以使用 final
或 const
,
final name = 'Bob'; // Without a type annotation
如果需要在编译时就固定变量的值,可以使用 const
类型变量。 如果 Const 变量是类级别的,需要标记为 static const
。
const bar = 1000000; // 压力单位 (dynes/cm2)
const double atm = 1.01325 * bar; // 标准气压
1.3、内置类型
Dart 语言支持以下内建类型:
- Number
- String
- Boolean
- List (也被称为 Array)
- Map
- Set
- Rune (用于在字符串中表示 Unicode 字符)
- Symbol
1.3.1、Number
Dart 语言的 Number 有两种类型:
- int
- Double
///------Number--------
int num = 12;
double numDouble = 10.0;
print(numDouble);
///---------------------
1.3.2、String
字符串通过单引号或者双引号创建。
///------Strings------
var a = "a";
String str = "str";
String str1 = '''
我是三引号
我可以空行
哈哈哈
''';
print(str1);
String str2 = """
我是三引号
我可以空行
""";
// 字符串拼接
print("$a $str");
print(a + str);
///--------------------
1.3.3、Boolean
///-------Boolean------- true false
bool flag = true;
if (flag != null) {
print("flag: " + flag.toString());
}
///---------------------
1.3.4、List
///-------List----------
List list = [1, 2, 3];
// 添加元素
list.add(4);
list.add(5);
print(list);
// list的长度
print(list.length);
print(list[0]);
// 循环获取
for(var item in list){
print(item);
}
list.forEach((value){
print(value);
});
/// --------------------
1.3.5、Set
在 Dart 中 Set 是一个元素唯一且无需的集合。
var set = new Set();
set.add("1");
// 再次添加同样的元素会进行去重
set.add("1");
set.add("2");
// 2
print(set.length);
1.3.6、Map
Map 是用来关联 keys 和 values 的对象。 keys 和 values 可以是任何类型的对象。在一个 Map 对象中一个 key 只能出现一次。 但是 value 可以出现多次。
///-------Map----------
Map map = {"name": "wmding", "age": 22};
print(map);
print(map["name"]);
var person = new Map();
person["name"] = 'wmd';
person["age"] = 22;
print(person);
for(var item in map.keys){
print(item);
}
/// --------------------
2、Dart 的运算符、条件表达式、类型转换
2.1、算术运算符
Operator | Meaning |
---|---|
+ |
Add |
– |
Subtract |
-*expr* |
Unary minus, also known as negation (reverse the sign of the expression) |
* |
Multiply |
/ |
Divide |
~/ |
Divide, returning an integer result |
% |
Get the remainder of an integer division (modulo) |
print(2 + 3 == 5);
print(2 - 3 == -1);
print(2 * 3 == 6);
print(5 / 2 == 2.5); // 结果是双浮点型
print(5 ~/ 2 == 2); // 结果是整型
print(5 % 2 == 1); // 余数
2.2、关系运算符
Operator | Meaning |
---|---|
== |
Equal; see discussion below |
!= |
Not equal |
> |
Greater than |
< |
Less than |
>= |
Greater than or equal to |
<= |
Less than or equal to |
2.3、逻辑运算符
Operator | Meaning |
---|---|
!*expr* |
inverts the following expression (changes false to true, and vice versa) |
|| |
logical OR |
&& |
logical AND |
2.4、赋值运算符
使用 =
为变量赋值。 使用 ??=
运算符时,只有当被赋值的变量为 null 时才会赋值给它。
// 将值赋值给变量a
a = value;
// 如果b为空时,将变量赋值给b,否则,b的值保持不变。
b ??= value;
2.5、条件表达式
Dart有两个运算符,有时可以替换 if-else 表达式, 让表达式更简洁:
-
condition ? expr1 : expr2
如果条件为 true, 执行 expr1 (并返回它的值): 否则, 执行并返回 expr2 的值。
-
expr1 ?? expr
如果 expr1 是 non-null, 返回 expr1 的值; 否则, 执行并返回 expr2 的值。
3、Dart 的循环语句
3.1、if 和 else
if (isRaining()) {
you.bringRainCoat();
} else if (isSnowing()) {
you.wearJacket();
} else {
car.putTopDown();
}
3.2、for 循环
var message = StringBuffer('Dart is fun');
for (var i = 0; i < 5; i++) {
message.write('!');
}
3.3、while 和 do-while
while
循环在执行前判断执行条件:
while (!isDone()) {
doSomething();
}
do
-while
循环在执行后
判断执行条件:
do {
printLine();
} while (!atEndOfPage());
3.4、break 和 continue
使用 break
停止程序循环:
while (true) {
if (shutDownRequested()) break;
processIncomingRequests();
}
使用 continue
跳转到下一次迭代:
for (int i = 0; i < candidates.length; i++) {
var candidate = candidates[i];
if (candidate.yearsExperience < 5) {
continue;
}
candidate.interview();
}
3.5、switch 和 case
/// --------switch-------
var sex = "男";
switch (sex) {
case "男":
print("男");
break;
case "女":
print("nv");
break;
default:
break;
}
4、Dart 中的函数
// 没有返回值
void printInfo(var info) {
print(info);
}
// 有int的返回值
int sum(var a, var b) {
return a + b;
}
5、Dart 的对象、类
跟 Java 一模一样。
class Person{
String name;
int age;
Person(this.name, this.age);
@override
String toString() {
return 'Person{name: $name, age: $age}';
}
}
使用对象
// 创建对象
var person = new Person("xiaoming",21);
// 设置age,修改
person.age = 100;
print(person.toString());
var name = person.name;
print(name);