var
Dart中使用var
申明一个变量,可以赋值不同的类型,var
声明的变量如果没有初始化那么它的值为nil
,我们按住command
鼠标移动到变量a上可以看到提示dynamic a
void main() {
var a;
print(a);
a = 1;
print(a);
a = 'hello world';
print(a);
}
final
使用final
声明的只能赋值一次的变量。也可以叫做最终变量。
void main() {
final b = 21;
b = 'hello';
}
如果我们再次赋值会报错,即使是同样类型的也不能。
tips:被final修饰的变量在使用之前必须要被赋值。
void main() {
final b ;
print(b);
}
const
const修饰的常量在声明的时候就必须要赋值,这个是跟变量不同。当然也不能被修改。
void main() {
const c;
}
number
数值型numer: int & double
void main() {
num a = 10;
print(a);
a = 1.5;
print(a);
}
一个整形的数据(int)是没有办法直接被赋值给double类型的。此时把a换成double类型就可以,用double修饰的话实际上是10.0
void main() {
int a = 10;
print(a);
a = 1.5;
print(a);
}
关于int有一些语法,command点击就能查到,isEven
偶数,isOdd
奇数
void main() {
int a = 10;
print(a);
print( a.isEven);
}
算数运算符:+ - * / (四则) %(取模) ~/(取整)
void main() {
int a = 10;
int b = 8;
int c = a + b;
print( a.isEven);
print(a ~/ b); /// 1
print('a + b = ${a + b}'); /// 18
print('a + b = $c'); /// 18
}
如果a是double类型,可以先转成int类型toInt()
void main() {
double a = 10;
int b = 8;
print(a.toInt().isEven);
print(a.toInt() ~/ b);
}
String
使用单引号和双引号创建
void main() {
var a = 'hello';
var b = "world";
print(a + b);
}
三个引号或者双引号可以创建多行字符串
void main() {
String str1 = "hello"
"world"
"1hang"
"2hang";
print(str1);
String str2 =
'''
1hang
2hang
3hang
''';
print(str2);
}
使用双引号可以看到这里并没有换行,需要手动添加\n
,而三个引号修饰的会自动换行
在Dart语法中,字符串取值非常简单,可以直接采用下标。append可以直接使用+
void main() {
String str1 = "hello";
print(str1[0]);
print(str1[1]);
print(str1 + 'world');
print(str1 * 2);
}
Stirng中的转义字符
void main() {
String str2 = 'h\nw';
print(str2);
String str3 = r'h\nw';
print(str3);
print(str2.length); /// 3
print(str3.length); /// 4
}
/// 其他的用法:
/// endsWith 以...结尾
/// startsWith 以...开头
list
Dart中的列表,类似于OC中的数组。有可变和不可变list, 同时可以存放不同的数据类型。
void main() {
var list1 = [1,2,3,'hello'];
var list2 = const [1,2,3];
print(list1);
list1[3] = 'world';
print(list1);
print(list1.length);
list1.add('value');
print(list1);
}
使用const
修饰的是不可变的list,不能被重新赋值。
同时数组的增删改查也比较简单
list1.insert(0, 0);
list1.removeAt(5);
list1.clear();
void main() {
var list1 = [1,4,2,5,3,9,7,6];
list1.sort();
print(list1);
print(list1.sublist(1,5)); /// 包含前面不包含后面
}
map
Dart中的map键值对,类似于OC中的字典。也有可变和不可变两种map
void main() {
var json1 = {'one': 1, 'two': 2};
var json2 = const {'one': 1, 'two': 2}; /// 不可变的一般实际中用到的非常之少
print(json1['one']); /// 取值
json1['one'] = 0; /// 赋值
print(json1);
// 常用的操作
print(json1.length);
print(json1.keys);
print(json1.values);
var list = ['hello', 'world'];
print(list.asMap()); /// 数组转map
}