var
使用var声明变量,可赋予不同类型的值
未初始化时,默认值为null
final
使用final声明一个只能赋值一次的变量
const
使用const声明的必须是编译期常量
内置类型
数值型-Number、字符串-String、布尔型-Boolean、列表-List、键值对-Map、Runes、Symbols
使用关键字num来表示,分为两种: 整形int 浮点型 double
int、double都继承于num
运算符
+(加)、-(减)、*(乘)、/(除)、~/(取整)、%(取余)
常用属性
isNaN(是否为非数字)、isEven(是为偶数)、isOdd(是否为奇数)等
常用方法:
取绝对值abs()、round()四舍五入、取不大于它的最大整数floor()、取不小于它的最小整数ceil()、转为整形toInt()、转为浮点型toDouble()
使用单引号、双引号创建字符串;
使用三个引号或双引号创建多行字符串;
使用r创建原始raw字符串(即使有转义字符也会被打印出来,例如:r'Hello \n Dart',打印出来的就是Hello \n Dart,不会转义换行)
运算符
+(和java一样)、*(和Python一样,例如"new"*4,就是复制4次,即: new new new new)、==(比较内容是否相等)、[](取字符,下标从0)
插值表达式:${expression}
int a=1;
int b=2;
print("a+b=${a+b}");
print("a=$a");
输出为:a+b=3
a=1
常用属性
length、isEmpty、isNotEmpty和java相同
**常用方法 **
contains()、subString()、startsWith()、endsWith()、indexOf()、lastIndexOf()、toLawerCase()、
toUpperCase()、trim()、split()和java相同
trimLeft()将字符串最前面的空格修整掉、trimRight()消除从右侧起所遇到的所有空格字符
replaceXXX()
dart中列表和数组是同一个
创建
常用操作(同Java)
创建
常用操作(同Java)
mapforEach(f);
void f(key,value){
print("key"=$key,value=$value);
}
多种不同类型
+(加)、-(减)、*(乘)、/(除)、~/(取整)、%(取余)
++var,var++,--var,var--
bool isTrue=true;
bool isFalse=false;
print(isTrue && isFalse);
print(isTrue || isFalse);
输出:
false
true
int a=10;
int b;
b ??=a;
print(b);
输出:10
int a=10;
int b=5;
b ??=a;
print(b);
输出:5
for(var item in list){
print(item);
}
返回类型 方法名(参数1,参数2,....){
方法体...
return 返回值
}
void main(){
printPerSon("老王");
printPerSon("刑天",age:4000);
printPerSon("老张",age: 40,gender: "男");
printPerSon2("汉斯");
printPerSon2("马飞",23);
printPerSon2("刘芳",22,"女");
}
/**
* 具体参数必须放在可选参数前
*/
printPerSon(String name,{int age,String gender}){
print("name=$name,age=$age,gender=$gender");
}
/**
* 具体参数必须放在可选参数前
*/
printPerSon2(String name,[int age,String gender]){
print("printPerSon2==>name=$name,age=$age,gender=$gender");
}
输出:
name=老王,age=null,gender=null
name=刑天,age=4000,gender=null
name=老张,age=40,gender=男
printPerSon2==>name=汉斯,age=null,gender=null
printPerSon2==>name=马飞,age=23,gender=null
printPerSon2==>name=刘芳,age=22,gender=女
void main(){
printPerSon("老王");
printPerSon("刑天",age:4000);
printPerSon("老张",age: 40,gender: "男");
}
printPerSon(String name,{int age=24,String gender="男"}){
print("name=$name,age=$age,gender=$gender");
}
输出:
name=老王,age=24,gender=男
name=刑天,age=4000,gender=男
name=老张,age=40,gender=男
void main(){
//方法作为对象赋值给其他变量
Function func= printHello;
func();
var list=[1,2,3,4];
//方法作为参数传递给其他方法 print 与 forEach
list.forEach(print);
var list2=["h","e","l","l","o"];
//方法作为参数传递给其他方法 times 与 listTiemes
print(listTiemes(list2, times));
}
void printHello(){
print("Hello");
}
/**
* 方法作为参数传递给其他方法
*/
List listTiemes(List list,String fun(str)){
for(var index = 0;index
(参数1,参数2,...){
方法体...
return 返回值
}
void main(){
var func=(str){
print("匿名方法输出==>$str");
};
func(20);
// //也可以不传递给变量调用匿名方法,但不建议使用,不方便阅读
// ((){
// print("Test");
// })();
}
输出:匿名方法输出==>20
void main(){
var list2=["h","e","l","l","o"];
//匿名方法作为一个参数给给其他方法调用
print(listTiemes(list2, (str){
return str*3;
}));
}
/**
* 方法作为参数传递给其他方法
*/
List listTiemes(List list,String fun(str)){
for(var index = 0;index
void main(){
var func = a();
func();
func();
func();
func();
}
a(){
int count=0;
// printCount(){
// print(count++);
// }
// return printCount;
//使用匿名方法
return (){
print(count++);
};
}
输出:
0
1
2
3
使用with关键字后面跟着一个或多个扩展类名
class Musician extends Performer with Mnsical {
// ...
}
class Maestro extends Person with Musical, Aggressive, Demented {
Maestro(String maestroName) {
name = maestroName;
canConduct = true;
}
}
要实现扩展类,创建一个没有构造函数,没有父类调用的类
abstract class Musical {
bool canPlayPiano = false;
bool canCompose = false;
bool canConduct = false;
void entertainMe() {
if (canPlayPiano) {
print('Playing piano');
} else if (canConduct) {
print('Waving hands');
} else {
print('Humming to self');
}
}
}