效果:运行Dart程序,并输出字符串 ‘hello itcast’
// 程序肯定都是有入口的 : main函数
void main(){
//打印字符串 'hello dart'
print('hello dart');
}
dart hello.dart
能够知道变量和常量、数据类型、运算符、流程控制的基本使用
学习内容:
思考:编写代码时,如何表示一个数字? 字面量
思考:编写代码时,如何对数据进行计算? 表达式
思考:如何记录计算结果? 变量
变量:
在计算机中记录计算结果,并在需要的时候使用,可以修改
语法:var 变量名 = 表达式;
var age = 18;
类型推断:var 声明的变量支持类型推断,并且有类型检查
void main(){
//计算机中,表示一个数字:字面量
1;
10;
//表达式 计算机中记录计算结果,使用表达式对数据进行计算并且得到结果
1 + 10 ;
print(1+10);
print(1+10);
//变量:计算机中记录计算结果,并且在需要的时候去使用
//语法:var 变量名 = 表达式
var num = 1+10;
print(num);
print(num);
//变量特点:
//可以修改
var age = 18;
print(age);
age = 19;
print(age);
// 支持类型推断:修改变量时会检查类型
// A value of type 'String' can't be assigned to a variable of type 'int'.
// age = 'hello';
}
思考:如何记录不可变的数据? 常量:用于记录不可变的数据,不可以修改
关键字: const 和 final
区别:
void main(){
//const
const a = 10;
print(a);
// Constant variables can't be assigned a value.
// a = 20;
// final
final b = 30;
print(b);
//区别
var x = 1;
var y = 2;
//final:运行时常量,值在运行时赋值
final ret1 = x+y;
// const :编译期常量,值在编译时赋值
// const res2 = x+y;
const rest3 = 1+2;
}
虽然,Dart可以使用var关键字定义不同类型的变量,并且有类型推断和检查
但是,我们依然可以在定义变量时明确的指定变量的类型,从而更好的做类型检查
学习内容:
常用数据类型
Dart空安全机制
bool 类型用于记录真 或 假,一般用于逻辑判断
真:true
假:false
void main() {
// 需求:使用布尔类型记录用户是否登录成功
// 登录成功:true
bool isLogin = true;
print(isLogin);
// 登录失败:false
isLogin = false;
print(isLogin);
}
// 定义字符串:String String name = 'zzm'; print(name);
double price = 199.0;
// String priceStr = '${price}起'; String priceStr = '$price起'; print(priceStr);
void main() {
// 定义字符串:String
String name = 'zzm';
print(name);
// 拼接字符串: '199.0起'
// 准备价格:double
double price = 199.0;
// 价格字符串拼接
// String priceStr = '${price}起';
String priceStr = '$price起';
print(priceStr);
}
// 定义列表:List // 需求:按序存储 '居家' '美食' '服饰' List categories = ['居家', '美食', '服饰'];
void main() {
// 定义列表:List
// 需求:按序存储 '居家' '美食' '服饰'
List categories = ['居家', '美食', '服饰'];
print(categories);
List nums = [1, 3, 5, 7];
print(nums);
// 使用列表:查改增删
// 查询:
// 查询列表的长度,就是列表内部元素的个数
int len = categories.length;
print(len);
// 查询指定的元素: 列表[索引]
String category = categories[1];
print(category);
// 修改:列表[索引] = 新值
categories[1] = '美食家';
print(categories);
// 新增:
// 新增一个元素,一次新增一个元素:列表.add(新元素)
categories.add('母婴');
print(categories);
// 新增一个列表,一次新增多个元素:列表.addAll(新列表)
categories.addAll(['办公', '生鲜']);
print(categories);
// 删除
// 使用元素删除
categories.remove('生鲜');
print(categories);
// 使用索引删除
categories.removeAt(4);
print(categories);
// 遍历列表:取出所有商品分类名称
// element: 列表中遍历读取的元素
categories.forEach((element) {
print(element);
});
}
Map(字典)是使用 键值对 来存储数据的
语法:{ key: value }
// 需求:记录商品分类的编号 和 名称
Map category = {
'id': 1,
'name': '居家',
};
void main() {
// 定义字典:{key: value}
// 需求:记录商品分类的编号 和 名称
Map category = {
'id': 1,
'name': '居家',
};
// 使用字典:查改增删
// 查询:字典[key]
String name = category['name'];
print(name);
// 修改:字典[key] = 新值
category['name'] = '美食';
print(category);
// 删除:remove(key)
category.remove('name');
print(category);
// 新增:字典[新key] = 值
// 注意:key必须是当前字典中不存在的key,很少使用新增
category['name'] = '办公';
print(category);
// 遍历字典
category.forEach((key, value) {
print('$key -- $value');
});
}
Dart 从 2.12.0 版本开始,已支持健全的空安全机制
在空安全机制下,代码中的类型默认都是非空的 除非将变量明确的声明为可空,否则它一定是非空的类型
空安全机制下,如何定义并使用变量?
变量不能为空时:指定默认值
变量可以为空时:使用 ? 明确的指定变量可以为空
` // 直接设置默认值
String name2 = 'itheima';
// The non-nullable local variable 'name2' must be assigned before it can be used.
print(name2.length);
// 使用 ? 明确的指定变量可以为空
String? name3;
// name3? : 表示非空检查,如果name3为空,不去调用属性或方法,如果name3不为空,可以调动属性或方法
print(name3?.length); `
void main() {
// 需求:定义字符串,并获取字符串长度
String name1 = 'zzm';
print(name1.length);
// 直接设置默认值
String name2 = 'zzxm';
// The non-nullable local variable 'name2' must be assigned before it can be used.
print(name2.length);
// 使用 ? 明确的指定变量可以为空
String? name3;
// name3? : 表示非空检查,如果name3为空,不去调用属性或方法,如果name3不为空,可以调动属性或方法
print(name3?.length);
}