Dart与Java不同的地方

数据类型

  • 基类是num

  • 数值型的操作

运算符: +、 - 、* 、/ 、 ~/ 、 %

  • / 除法 整数+余数
  • ~/ 除法 取整
  • % 取余

常用属性: isNaN、isEven、isOdd (是否非数字、奇偶)

常用方法:abs()、round()、floorl()、ceil()、toInt()、toDouble()

  • double nan = 0.0 / 0.0;

      nan ->  not a number  只有这种情况才是非数字
    
  • abs 绝对值

  • round 最接近的整数 Returns the integer closest to this.

  • floor 不比它大的整数 Returns the greatest integer no greater than this.

  • ceil 不比它小的整数 Returns the least integer no smaller than this.

string 字符串
    String a = '''asdfasdf
    ==asdfasdf''';
    String b = 'aaa \n  bbb';
    String bb = r'aaa \n  bbb';
    print(a);
    print(b);
    print(bb);
  • 单引号能存储字符串

      var aaa = 'asdfasdf';
    
  • 三个单引号是保存长字符串,支持换行

  • r 关键字是不能使用转义字符

       asdfasdf
           ==asdfasdf
       aaa 
         bbb
       aaa \n  bbb
    
  • 字符串* []

      String b = 'agggb';
      print(b*5);
      print(b[4]);
      
      I/flutter ( 7429): agggbagggbagggbagggbagggb
      I/flutter ( 7429): b
    
集合
  • List

  • list集合可以存储不同类型的数据

  • 遍历可以直接传入方法

  • 加了const关键字说明不可修改

      var list =[1,"asdfas",'aaaa',false,0.2];
      print(list);
      list[0]="hhh";
      print(list);
    
      var list2 = const[1,2,3];
      var list3=new List();
    
      list.forEach(print);
      
      I/flutter (26396): [1, asdfas, aaaa, false, 0.2]
      I/flutter (26396): [hhh, asdfas, aaaa, false, 0.2]
      I/flutter (26396): hhh
      I/flutter (26396): asdfas
      I/flutter (26396): aaaa
      I/flutter (26396): false
      I/flutter (26396): 0.2
    
  • Map

  • 可以存储不同类型的变量

  • 加了const关键字说明不可修改

  • List转Map key是从0开始排序的

  • foreach可以传入自定义方法

      var map={"ad":22,3:"gggg",1:"asd",true:'aa',0.58:'asdf'};
      print(map[true]);
      print(map["ad"]);
      map[1]=false;
      print(map[1]);
      var finalMap = const{1:2};
    
      map.forEach(myPrint);
    
      print(map.keys);
      print(map.values);
    
      var list =['aaa','f',"asd",false,0.85];
      print(list.asMap());
      
      void myPrint(key,value){
          print("key=$key,value=$value");
      }
      
      
      I/flutter (17298): aa
      I/flutter (17298): 22
      I/flutter (17298): false
      I/flutter (17298): key=ad,value=22
      I/flutter (17298): key=3,value=gggg
      I/flutter (17298): key=1,value=false
      I/flutter (17298): key=true,value=aa
      I/flutter (17298): key=0.58,value=asdf
      I/flutter (17298): (ad, 3, 1, true, 0.58)
      I/flutter (17298): (22, gggg, false, aa, asdf)
      I/flutter (17298): {0: aaa, 1: f, 2: asd, 3: false, 4: 0.85}
    
  • dynamic

  • 动态类型

      dynamic b = 20;
      b="kotlin";
    
      //list本来就可以存动态类型
      var dList = new List<dynamic>();
      dList.add(1);
      dList.add("bala");
      print(dList);
    
      var list = new List();
      list.add("asdf");
      list.add(false);
      print(list);
    
运算符
  • ??

  • 有值的时候直接使用当前值,没有值的时候使用赋值的值

  • a ?? b a 有值就用 a 的值 ,否则用 b 的值

      int a = 10;
      a ??= 66;
      print(a);
      
      
      var a;
      var b = "kotlin";
      print(a??b);
      
      I/flutter (20501): kotlin
    

方法

  • 没有返回值类型可以省略void不写

  • 参数可以不写类型

  • 方法体只有一个语句可以用 => 代替

        myPrint(key,value){
          print("key=$key,value=$value");
        }
        
        testReturn1(a, b) => "$a,$b";
      
        var hello = 1;
        testReturn2(a, b) => hello == 1 ? "$a" : "$b";
    
  • {} 大括号包裹的是可选命名参数,调用的时候一定要 name:value 的形式

  • [] 中括号包裹的是可选位置参数

  • 如果既有可选参数又有普通的参数,那么普通的参数一定要写在前面

      print(myPrint(1, value:2));
      print(myPrint1(1, "asdf",1));
      
        //可选命名参数
        myPrint(key, {value,age}) {
          print("key=$key,value=$value,age=$age");
        }
      
        //可选位置参数
        myPrint1(key, [String value,aa]) {
          print("key=$key,value=$value,aa=$aa");
        }
    
  • 可选参数可以有默认值,并且真正传入的值的数据类型可以和默认值不同

      print(myPrint1(1, "asdf",1));
      
      //可选位置参数
      myPrint1(key, [value=10,aa]) {
          print("key=$key,value=$value,aa=$aa");
      }
    
  • 方法可以赋值给变量

      var fun01 = myPrint;
      var fun02 = myPrint(1, value:2);
      Function fun03 = myPrint(1, value:2);
    
  • 字符乘法

      var times01 = times;
      print(listTimes(list02, times01));
          
      String times(str) => str*3;
      
      List listTimes(List list,String times(str)){
          for(int i =0;i<list.length;i++){
              list[i]=times(list[i]);
          }
          return list;
      }
        
      I/flutter (28302): [aaa, bbb, ccc, ddd]
    
  • 匿名方法

      (str) {
          print("bala~~$str");
      };
    
  • 匿名变量赋值给变量,可以直接使用

      var fun01 = (str) {
        print("bala~~$str");
      };
      fun01("asdf");
    
  • 直接调用匿名方法

      ((){
        print("bbbbbbbbaaaaaa");
      })();
    
  • 匿名方法demo

      var list = ["b","a","l","a"];
      
      print(listTimes01(list));
      
      List listTimes01(List list) {
          var func = (str){return str*3;};
          for (int i = 0; i < list.length; i++) {
            list[i] = func(list[i]);
          }
          return list;
      }
    

闭包

  • 闭包是一个方法(对象)

  • 闭包可以访问外部方法的局部变量,并持有其状态

  • 注意闭包 a 中返回 printCount 和 printCount()的区别

          a(){
      
              int count = 6;
            /*printCount(){
              print(++count);
              }
              return printCount;*/
      
              return (){
                  print(++count);
              };
      
          }
          
          var func = a();
          func();
          func();
          func();
          
          I/flutter (28650): 7
          I/flutter (28650): 8
          I/flutter (28650): 9
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值