Dart基本语法
1. 主方法
main() {}
// 无返回值
void main() {}
2. 注释
同JavaScript: // ; /* */ ; ///
3. 变量
Dart是一个强大的脚本类语言,可以不预先定义变量类型
通过var定义自动推断类型的变量
var str = 'dart';
var myNum = 1234;
定义指定类型变量
String str = 'dart';
int myNum = 1234;
Dart变量命名规则:
- 变量名称必须由数字、字母、下划线和美元符($)组成
- 标识符开头不能是数字
- 标识符不能是保留字和关键字
- 变量的名字是区分大小写的如: age和Age是不同的变量
- 标识符(变量名称)一定要见名思意:变量名称建议用名词,方法名称建议用动词
4. 常量
const定义
const PI = 3.14159;
final定义
final PI = 3.1415926;
区别:最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化
final today = new DateTime.now();
// 使用const定义会报错
// const today = new DateTime.now();
5. 数据类型
字符串类型
var str1 = 'this is str1';
var str2 = "this is str2";
String str3 = 'this is str3';
String str4 = "this is str4";
使用三对单引号/双引号可以定义一个多行字符串
String str = '''I
Me
My
Mine'''
字符串拼接
String str1 = '你好';
String str2 = 'Dart';
print('$str1 $str2');
print(str1 + ' ' + str2);
isEmpty: 判断字符串是否为空
数字类型
整型int
int a = 123;
浮点型double
double b = 12.3;
isNaN: 检查参数是否为非数字值
var myNum = 0/0;
print(myNum.isNaN); // 输出结果:true
布尔类型
bool flag1 = true;
bool flag2 = false;
数组类型
var l1 = ["aaa", "bbb", "ccc"];
var l2 = new List();
l2.add('张三');
l2.add('李四');
var l3 = new List<String>();
l3.add('张三');
l3.add('李四');
字典类型
var person = {
"name": "张三",
"age": 23,
"work": ["程序员", "送外卖"]
}
var p = new Map();
p["name"] = "李四";
p["age"] = 24;
p["work"] = ["程序员", "送外卖"];
判断数据类型
通过关键字is来判断数据类型
var str = '1234';
if(str is String) {
print('String');
} else if(str is int) {
print('Int');
} else {
print('Others');
}
类型转换
Number类型转换为String类型:toString()
String类型转换为Int类型:int.parse()
String类型转换为Double类型:double.parse()
使用try…catch包围以防转换失败
String price = '';
try {
print(double.parse(price));
} catch(err) {
print(0);
}
6. 运算符
算术运算符
加 | 减 | 乘 | 除 | 除法取整 | 除法取余 | 加一 | 减一 |
---|---|---|---|---|---|---|---|
+ | - | * | / | ~/ | % | ++ | – |
关系运算符
等于 | 不等于 | 大于 | 小于 | 大于等于 | 小于等于 |
---|---|---|---|---|---|
== | != | > | < | >= | <= |
逻辑运算符
与 | 或 | 非 |
---|---|---|
&& | || | ! |
赋值运算符
赋值 | 若为空则赋值 |
---|---|
= | ??= |
复合赋值运算符:+=、-=、*=、/=、%=、~/=
7. 条件控制
条件表达式:if…else; switch…case
三目运算符
bool a = true;
String b = a ? 'True' : 'False';
print(b); // 输出结果:True
空值合并运算符
var a;
var b = a ?? 10;
print(b); // 输出结果:10
8. 循环语句
for循环;while/do…while循环;continue和break
双循环遍历二维数组:
void main() {
List list = [
{
"cate": "国内",
"news": [
{"title": "国内新闻1"},
{"title": "国内新闻2"},
{"title": "国内新闻3"},
]
},
{
"cate": "国际",
"news": [
{"title": "国际新闻1"},
{"title": "国际新闻2"},
{"title": "国际新闻3"},
]
},
];
for (int i = 0; i < list.length; i++) {
print(list[i]["cate"]);
print("----------------------");
for (int j = 0; j < list[i]["news"].length; j++) {
print(list[i]["news"][j]["title"]);
}
print("----------------------");
}
}
输出结果:
国内
----------------------
国内新闻1
国内新闻2
国内新闻3
----------------------
国际
----------------------
国际新闻1
国际新闻2
国际新闻3
----------------------