Dart:基础

入口方法

方式一

main() {
    
    
  print('你好dart');
}

方式二

//表示main方法没有返回值
void main() {
    
    
  print('你好dart');
}

变量

dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推导

变量定义

dart中定义变量可以通过var关键字也可以通过类型来申明变量。

var str='this is var';
String str='this is var';
int str=123;

注:var定义的变量会自动进行类型推导,dart中的变量是强类型的

变量命名规则

与大多数语言相同,变量命名需要遵守以下条件:

  • 变量名称必须由数字、字母、下划线和美元符($)组成。
  • 注意:标识符开头不能是数字
  • 标识符不能是保留字和关键字。
  • 变量的名字是区分大小写的如: age和Age是不同的变量。在实际的运用中,也建议,不要用一个单词大小写区分两个变量。
  • 标识符(变量名称)一定要见名思意 :变量名称建议用名词,方法名称建议用动词

常量

Dart中的 常量使用 final 和 const来定义。

  • const值不变 一开始就得赋值
  • final 可以开始不赋值 只能赋一次 ; 而final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化

数据类型

dart支持如下类型:

  • int:整形
  • double:双精度浮点型
  • String:字符串
  • bool:布尔
  • List:列表,数组
  • Maps:字典,键值对

字符串

字符串可以使用 单引号 双引号 和 三引号定义

main() {
    
    
  var a = '单引号""';
  var b = "双引号''";
  var c = '''
    三引号,
    三引号里可以有单引号'',和双引号"",不能再有三引号
    ''';
  print(a);
  print(b);
  print(c);
}

print只能输出一个变量,有点跟console.log混了

字符串的拼接

在这里插入图片描述

数值类型

int类型的值可以转换成double类型,double类型不可以转成int类型

  double a = 1;   正确
  int b = 1.2; 错误

list数组

方式1:不指定类型

main() {
    
    
  var a = ['a', 1, false];
  print(a); //[a, 1, false]
  print(a[0]); // a
  print(a.length); //3
}

方式2:指定类型

main() {
    
    
  var a = <int>[1, 2, 3];
  var b = <String>['a'];
  print(a);
  print(b);
}

方式3:,通过[]创建的集合它的容量可以变化

main() {
    
    
  //指定具体类型的
  var a = <int>[];
  print(a); // []
  print(a.length); //0
  a.add(1);
  print(a); //[1]

  //未指定具体类型的
  var b = [];
  print(b); //[]
  print(b.length); //0
  b.add(1);
  b.add('a');
  print(b); //[1,a]

  //存在值的,只能添加同类型的值
  //例如最初全是整形,会默认为整形数组,添加时就只能添加整形
  var c = [1, 2, 'a'];
  c.add('c');
  print(c); // [1,2,a,c]
}

Maps 字典

方式1

main() {
    
    
  var a = {
    
    'name': '张三', 'age': 15}; //key也必须加引号,不能项js一样不加引号
  print(a); //{name: 张三, age: 15}
  print(a['name']); //张三
}

方式2

main() {
    
    
  var p = new Map();
  p["name"] = "李四";
  p["age"] = 22;
  p["work"] = ["程序员", "送外卖"];
  print(p); // {name: 李四, age: 22, work: [程序员, 送外卖]}
  print(p["age"]); // 22
}

类型判断

dart中使用is关键词判断类型

main() {
    
    
  String a = '1';
  print(a is int); // false
  int b = 1;
  print(b is double); // false
  double c = 1.0;
  print(c is int); // false
  var d = 1;
  print(d is int); // true
}

运算符

与主流语言相同,比如Java、JavaScript。

类型转换

dart是强类型的语言,类型转换只支持Number类型转换成String类型和String类型转成Number类型

Number类型转换成String类型

 var myNum=12;
 var str=myNum.toString();
 print(str is String);

String类型转成Number类型

 String str='123';
 var myNum=int.parse(str);
 print(myNum is int);

 String str='123.1';
 var myNum=double.parse(str);
 print(myNum is double);

循环

和c语言没什么区别,包括for循环、while循环、do while循环

for循环

for (int i = 1; i<=100; i++) {
    
      
   print(i);
}

while循环

main() {
    
    
  int a = 1;
  while (a < 5) {
    
    
    print(a);
    a++;
  }
}

do while

main() {
    
    
  int a = 1;
  do {
    
    
    print(a);
    a++;
  } while (a < 5);
}

break 和 continue

List常用属性和方法

属性

length 长度

 var a = [11, 'a'];
 print(a.length); // 2

reversed 翻转

 var a = [11, 'a'];
 print(a.reversed);  // (a,11)

isEmpty 是否为空

 var a = [11, 'a'];
 print(a.isEmpty); // false

isNotEmpty 是否不为空

  var a = [11, 'a'];
  print(a.isNotEmpty); // true

first和last 第一个和最后一个

  var a = [1, 2, 3];
  print(a.first); //1
  print(a.last); //3

方法

add 增加

  var a = [];
  a.add(1);
  print(a); // [1]

addAll 拼接数组

  var a = [1];
  var b = [2];
  var c = [3];
  a.addAll(b);
  print(a); // [1,2]

注:
1、不能拼接自身
2、只能拼接一个数组

indexOf 查找 ,返回第一个符合匹配的下标

  var a = [1, 'a', '1'];
  print(a.indexOf('1')); // 返回下标 2
  print(a.indexOf(2)); // 找不到返回 -1

参数1是要查找的值;参数2可选,是起始位置。

indexWhere():查找
indexOf类似,但是更高级,返回符合条件的元素下标。类似于JavaScript中的findIndex

 var a = ['ab', 'bc', 'bd'];
 print(a.indexWhere((element) => element.startsWith('b'))); // 1

remove 删除 传入具体值

 var a = [1, 'a', '1'];
  a.remove('a');
  print(a); // [1,1]
  print(a[1] is int); // false

removeAt 删除 传入索引值

fillRange 修改

  var a = [1, 'a', '1'];
  a.fillRange(0, 2, 'new');
  print(a); // [new, new, 1]

参数1是起始下标,参数2是终止下标。参数3是要改成的值。包括起始不包括终止。

注意:当起始下标不存在时,运行会报错。

insert(index,value); 指定位置插入

 var a = [1, 'a'];
  a.insert(0, 'new');
  print(a); //[new, 1, a]

insertAll(index,list) 指定位置插入List

  var a = [1];
  a.insertAll(1, [1, 2, 3]);
  print(a); //[1, 1, 2, 3]

上述也可以通过+来实现

 var a = [1];
 print(a + [2, 3]); // [1,2,3]
 print(a + [1,[2]]);  //错误,var具有默认类型推断功能

fill 填充

  var a = new List.filled(2, [], growable: true);
  print(a); // [[], []]
  a[0].add(1);
  print(a); //[[1], [1]]
  a.add([3]);
  print(a); //[[1], [1], [3]]

  var b = new List.filled(2, [], growable: false);
  print(b);
  b[0].add(1);
  print(b);
  b.add([3]);
  print(b); //报错

  var c = new List.filled(2, [], growable: true);
  print(c); // [[], []]
  c[0] = [2];
  print(c); //[[2], []]

注:
1、growable是否可以扩展,为true时这个list可以继续扩展;为false时不允许扩展
2、file的填充是共享填充,如果使用add进行添加时,其他项也会被添加
3、不想共享填充可以直接进行赋值操作

join() List转换成字符串

同JavaScript中的join()

clear 清空List

遍历

for

for in

for(var item in myList){
    
    
   print(item);
 }

forEach

map

every

any

where

  List myList = [1, 3, 4, 5, 7, 8, 9];

  var newList = myList.where((value) {
    
    
    return value > 5;
  });

  print(newList); // (7,8,9)
  print(newList is List); //false
  print(newList.toList()); //[7,8,9]
  print(newList.toList() is List); // true

toList:转化为List

Set

Dart 里面的Set它最主要的功能就是去除数组重复内容。
Set是没有顺序且不能重复的集合,所以不能通过索引去获取值。可以先通过toList转成list,再根据索引取值。

  var a = new Set();
  a.add('香蕉');
  a.add('苹果');
  a.add('苹果');
  print(a); //{香蕉, 苹果}
  print(a.toList()); //[香蕉, 苹果]

  List myList = ['香蕉', '苹果', '西瓜', '香蕉', '苹果', '香蕉', '苹果'];
  var s = new Set();
  s.addAll(myList);
  print(s); //{香蕉, 苹果, 西瓜}
  s.remove('香蕉');
  print(s.toList()); //[苹果, 西瓜]

Set支持不需要索引的List方法

Maps

定义

 //第一种方式
 Map person = {
    
    "name": "张三", "age": 20};
 print(person);

 //第二种方式
 var m = new Map();
 m["name"] = "李四";
 print(m);

 //第三种
 var a = {
    
    'name': '张三'};
 print(a);

  //第四种,指定泛型
  var a = <String, int>{
    
    'age': 2};
  print(a);

常用属性

  • keys 获取所有的key值
  • values 获取所有的value值
  • isEmpty 是否为空
  • isNotEmpty 是否不为空

常用方法

remove(key) 删除指定key的数据

addAll({…}) 合并映射 给映射内增加属性

var person = {
    
    "name": "张三", "age": 20, "sex": "男"};

person.addAll({
    
    
  "work": ['敲代码', '送外卖'],
  "height": 160
});

print(person);

containsKey和containsValue

 //第四种,指定泛型
 var a = <String, int>{
    
    'age': 2};
 print(a.containsKey('a')); //是否包含键a
 print(a.containsValue(2)); //是否包含值2

遍历

forEach、map、where、any、every。类似于List的用法

猜你喜欢

转载自blog.csdn.net/weixin_41897680/article/details/125174391