Dart的基础类型 例子总结

import 'package:flutter/material.dart';

class DataType extends StatefulWidget {
  @override
  _DataTypeState createState() => _DataTypeState();
}

class _DataTypeState extends State<DataType> {
  @override
  Widget build(BuildContext context) {
    _numType();
    _stringType();
    _boolType();
    _listType();
    _mapType();
    _dvo();
    return Container(
      child: Text("数据类型请到控制台查看"),
    );
  }

  //数字类型
  void _numType(){
    num num1= -1.0; //num是数字类型的父类
    num num2= 2;
    int int1=3; //只能是整数
    double d1=3.14; //双精度
    print("num:$num1 num:$num2 int: $int1 double:$d1"); //num:-1.0 num:2 int: 3 double:3.14
    print(num1.abs()); //绝对值 1.0
    print(num1.toInt()); //转化成int类型 -1
    print(num1.toDouble()); //转化成double类型 -1.0
  }

  //字符串类型
  void _stringType(){
    String str1="张三",str2='李四';
    String str3="str1是$str1,str2是$str2"; //str1是张三,str2是李四
    String str4='str1是'+str1+','+'str2是'+str2; //str1是张三,str2是李四
    String str5="这是一个字符串的例子,请操作";
    print(str3);
    print(str4);
    print(str5.substring(1,3)); //开始位置,结束位置(不包含),截取字符串  结果:是一
    print(str5.indexOf(",")); //-1 表示没有找到
    print(str5.indexOf(new RegExp(r'字(符|串)'))); //pattern正则 结果:4
  }

  //bool类型
  void _boolType(){
    bool f1=true,f2=false;
    print(f1 || f2); //true
    print(f1 && f2); //false
  }

  //List类型
  void _listType(){
    List list1=[1,2,3,"字符"]; //这个默认是dynamic的类型
    print(list1);
    List<int> list2=[1,2,3]; //只能是Int类型
    //list2=list1; //这个会报错,类型不对 type 'List<dynamic>' is not a subtype of type 'List<int>'
    list2.add(3); //添加数据
    list2.addAll([4,5]); //添加多个数据
    print(list2); //[1, 2, 3, 3, 4, 5]
    List list3=List.generate(3, (i){ //数组的生成  参数1--个数  参数2--生成的回调
      return i*3;
    });
    print(list3); //[0, 3, 6]
    //遍历
    for(int i=0;i<list2.length;i++){
      print(list2[i]);//123345
    }
    for(var o in list2){
      print(o); //元素 123345
    }
    list2.forEach((e){ //元素
      print("--$e"); //--1 --2 --3 --3 --4 --5
    });

  }

  // Map类型
  void _mapType(){
    Map names={"zs":"张三",'ls':"李四"};
    print(names); //{zs: 张三, ls: 李四}
    Map ages={};
    ages["child"]=18;
    print(ages); // {child: 18}
    //遍历
    names.forEach((key,value){
      print("Key:$key Value:$value"); //Key:zs Value:张三  Key:ls Value:李四
    });
    Map result=names.map((key,value){
      return MapEntry(value,key); //颠倒过来
    });
    print(result); // {张三: zs, 李四: ls}
    for(var key in names.keys){
      print("Key:$key Value:${names[key]}"); //Key:zs Value:张三  Key:ls Value:李四
    }
  }

  //dynamic var Object区别

  void _dvo(){
    dynamic d="123";  //动态类型,编译时候不操作,运行时根据值赋予类型,一般不主动用它
    print(d.runtimeType); //String
    d=123;
    print("${d.runtimeType} $d"); //可以赋值不同的类型,类型会改变 int 123

    var v="234";   //编译时候就确定类型,根据值类型自动赋予
    // v=123; 不可赋值不同类型,会报错
    v="567"; //相同类型可以
    print(v.runtimeType); //String
    print(v); //567

    Object o="123"; //有编译时候的静态类型检查
    print(o.runtimeType); //String
    o=123; //也可以赋值
    print(o.runtimeType); //int
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值