Dart(二)变量与注释
变量
方式一:var 用于声明变量,不用特指其类型。
var age = 15;
var name = 'li';
var sex = "male";
var value = true;
var side = false;
var distance = 11.5;
print('---------------');
print(age);
print(name);
print(sex);
print(value);
print(side);
print(distance);
print('---------------');
02-21 11:27:09.485 3057-3078/com.zrfpublic.flutternote I/flutter: ---------------
02-21 11:27:09.485 3057-3078/com.zrfpublic.flutternote I/flutter: 15
02-21 11:27:09.485 3057-3078/com.zrfpublic.flutternote I/flutter: li
02-21 11:27:09.485 3057-3078/com.zrfpublic.flutternote I/flutter: male
02-21 11:27:09.485 3057-3078/com.zrfpublic.flutternote I/flutter: true
02-21 11:27:09.485 3057-3078/com.zrfpublic.flutternote I/flutter: false
02-21 11:27:09.485 3057-3078/com.zrfpublic.flutternote I/flutter: 11.5
02-21 11:27:09.485 3057-3078/com.zrfpublic.flutternote I/flutter: ---------------
但需注意:一旦赋值就固定其类型了,不能再赋予其他类型的值。
![](https://upload-images.jianshu.io/upload_images/10820743-55ce0f70c5ee77a3.png?imageMogr2/auto-orient/strip|imageView2/2/w/414/format/webp)
image.png
方式二:使用内置类型
- 数字
- 字符串
- 布尔值
- 数组或列表
- map
- 符号
int a = 11;
double b = 3.3;
String c = "333";
String d = '33';
bool e = false;
List<String> f = ['a','b'];
List g = [1,2];
var h = [1,2,3];
List i =new List(3);//指明数组长度
Map map = new Map();
Map<String,String> map2 = new Map();
var map3 = {
'a':'aa',
'b':'bb'
};
字符串
字符串与int double转换
int a = int.parse("11");
double b = double.parse("22.3");
String c = 33.toString();
String d = 44.3.toString();
print(a);
print(b);
print(c);
print(d);
02-21 12:08:21.049 3057-3078/com.zrfpublic.flutternote I/flutter: 11
02-21 12:08:21.050 3057-3078/com.zrfpublic.flutternote I/flutter: 22.3
02-21 12:08:21.050 3057-3078/com.zrfpublic.flutternote I/flutter: 33
02-21 12:08:21.050 3057-3078/com.zrfpublic.flutternote I/flutter: 44.3
字符串可以用单引号或双引号引,都可以。
String c = "333";
String d = '33';
字符串模板
使用 $变量名 ${表达式}
String a = '111';
String b = '222';
String c = 'ccc';
String d = '$a and ${b} and ${2+2} and ${c+c}';
print(d);
02-21 12:15:35.670 3057-3078/com.zrfpublic.flutternote I/flutter: 111 and 222 and 4 and cccccc
字符串比较 使用==
String a = '111';
String b = '222';
String c = "111";
print(a==b);
print(a==c);
02-21 12:20:15.491 3057-3078/com.zrfpublic.flutternote I/flutter: false
02-21 12:20:15.491 3057-3078/com.zrfpublic.flutternote I/flutter: true
字符串判空
var e = '';
print(e.isEmpty);
print(e==null);
var f;
print(f==null);
02-21 12:40:07.018 3057-3078/com.zrfpublic.flutternote I/flutter: true
02-21 12:40:07.018 3057-3078/com.zrfpublic.flutternote I/flutter: false
02-21 12:40:07.018 3057-3078/com.zrfpublic.flutternote I/flutter: true
连接字符串 使用+ 或 两个字符串相邻(声明时,两个字符串之间0-n个空格)
String d = 'aaa''bbb' 'ccc';
String e = 'a'+'b'+"c";
print(d);
print(e);
02-21 12:24:18.590 3057-3078/com.zrfpublic.flutternote I/flutter: aaabbbccc
02-21 12:24:18.590 3057-3078/com.zrfpublic.flutternote I/flutter: abc
保持格式的字符串 使用''' ''' 引起来
String f = '''
a
bdd dd 22 %&**(
3
''';
print(f);
02-21 12:27:55.689 3057-3078/com.zrfpublic.flutternote I/flutter: a
bdd dd 22 %&**(
3
布尔值 只有true是真 false是假 其他全不合法(与js不一样)。
bool a = true;
bool b = false;
print(a==true);
print(b==false);
print(!b);
02-21 12:35:09.728 3057-3078/com.zrfpublic.flutternote I/flutter: true
02-21 12:35:09.728 3057-3078/com.zrfpublic.flutternote I/flutter: true
02-21 12:35:09.728 3057-3078/com.zrfpublic.flutternote I/flutter: true
![](https://upload-images.jianshu.io/upload_images/10820743-de30112aea0c4c8f.png?imageMogr2/auto-orient/strip|imageView2/2/w/328/format/webp)
image.png
变量默认值与java不同
- 变量的默认值都是null,原因是dart中所有类型都是Object的,不赋值则默认为null。
var、const、final之间区别
- var可以声明一个变量,但是可以根据变量的值自动推导出其具体的数据类型,确定数据类型后,就不能赋值别的类型的数据了,强类型语言特性。
- const声明一个变量,初始化后,其值便不可再改变,const表示的是编译时常量,也就是说在编译前就确定了其值。
- final声明一个变量,初始化后,其值便不可再改变,但是final声明的变量直到第一次使用时才开始赋值,也就是惰性赋值,也就是说在运行时才确定。
- const和final因为只需要赋值一次,便不能再次更改,因此其声明一个变量时,可以选择不明确其数据类型,自动推导即可,下面代码都是ok的:
const a = 1;
const int b = 2;
final c = 1;
final int d = 2;
注释
和其他语言的注释基本类似:
- 单行注释和多行注释
//单行注释
int a=1;
/*
多行注释,可以跨行
*/
String str = '333';
- 文档注释:可以利用dart的文档生成器生成sdk文档
/// 单行文档注释
String str2 = "333";
/**
* 多行文档注释
*/
String str3 = "333";