美文网首页Flutter圈子Flutter
Dart常用数据类型(一)

Dart常用数据类型(一)

作者: 向日花开 | 来源:发表于2020-02-07 21:29 被阅读0次

Number(数值类型)

int 整形
double 浮点型

String (字符串类型)

String 字符串

Boolean(布尔类型)

bool 布尔

List(集合,数组类型)

在 Dart 中大多数人都称它为列表

Map(字典类型)

任意类型的键值对

数字类型(num,int double)

int,double 类型都继承自 num 类型。

运算符

符号 作用
+
-
*
~/ 取整
% 取余
/ 获得的结果是长除法的结果
    int num = 90;
    int n = 23;
    print("num=${num}"); //90
    print("n=${n}"); //23

    print("============运算符============");
    print("num+n=${num + n}"); //113
    print("num-n=${num - n}"); //67
    print("num*n=${num * n}"); //2070
    print("num~/n=${num ~/ n}"); //取整,3
    print("num%n=${num % n}"); //取余,21
    print("num/n=${num / n}"); //取长除法结果,3.9130434782608696

属性

isNaN

如果数字是非数字双精度值,则为 true;否则为 true。否则为假。

isNegative

是否是负数

isEven

是否是偶数

isOdd

是否是奇数

sign

返回该整数的符号(对于 0 返回 0,对于小于 0 的值返回 -1,对于大于 0 的值返回 1。)

    print((-9).isNaN); //false //如果数字是非数字双精度值,则为true;否则为true。否则为假。
    print((0 / 0).isNaN); //true
    print((-9).isNegative); //true//是否是小于0的数
    print((0).isNegative); //false //是否是小于0的数
    print(num.isEven); //true//是否是偶数
    print(num.isOdd); //false//是否是奇数
    print(num.sign); //1//返回该整数的符号(对于0返回0,对于小于0的值返回 -1,对于大于0的值返回 1。)

方法

    print(num1.toInt()); //3//转成int类型 (舍去小数)
    print(num.toDouble()); //90.0//转成double类型
    print((-3.14).abs()); //3.14//绝对值
    print(num1.round()); //3//四舍五入
    print(num1.ceil()); //4//返回此不小于的最小整数  比如5.2, 返回的是6,+0.5再四舍五入
    print(num1.floor()); //3//返回此不大于的最大整数  比如5.2, 返回的是5
    print(num1.truncate()); //3//返回去掉小数点后面的整数
    print(num1.truncateToDouble()); //3.0
    print(3.54.truncateToDouble()); //3.0

常用转换

    print(int.parse("3")); //3                //String=>int
    print(double.parse("3.14")); //3.14       //String=>double
    print(num1.toString()); //3.1314          //double=>String
    print(num1.toStringAsFixed(3)); //3.131   // double=>String

字符串类型

单引号,双引号都可以定义字符串。

字符串拼接可以用“+”或者“{}”。

  String str1 = '字符串', str2 = "双引号"; //字符串定义
  String str3 = 'st1:$str1\tstr2:$str2'; //字符串拼接

  String str4 = "+号拼接:\t" + 'st1:' + str1 + '\tstr2:' + str2; //字符串拼接,'\'转义

  String str5 = "{}号拼接:\tst1:${str1}\tstr2:${str2}";

  print(str3);
  print(str4);
  print(str5);

字符串常用方法


  String str6 = "在爱情里,不被爱的那个才是第三者。";
  print("str6.length="+str6.length.toString());//字符串长度
  print(str6.indexOf("爱"));//获取指定字符串位置,返回第一个
  print(str6.substring(1,9)); //字符串截取
  print("str6.startsWith('在爱情')=="+str6.startsWith("在爱情").toString());//判断
  print(str6.replaceAll("第三者", "你"));//字符串替换
  print(str6.split("爱").toString());//切割字符串//根据"爱"切割字符串
  print("str6.contains('在爱情')=="+str6.contains("在爱情").toString());//判断是否包含
  print("i love u".toUpperCase());//转大写
  print("I LOVE U".toLowerCase());//转小写
  print("".isEmpty);//为空判断

bool 布尔类型

  • 使用 bool 表示布尔类型

  • 布尔值只有 true 和 false

  • 布尔类型 bool 默认值是 null

  bool success = true, fail = false;
  bool heihei;
  print(heihei);//null
  print(success);
  print(fail);
  print(success || fail); //true
  print(success && fail); //false

  int a = 99, b = 78, c = 210;

  int max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);

  print("a,b,c最大值:" + max.toString());

List 集合列表

下标从 0 开始

  List list1 = [1, 2, 3, "Hello", false];

  list1[2] = "世界"; //修改下标为2 的值

  print(list1.length); //5//列表长度
  list1.add("心跳"); //添加元素

  List list2 = List.generate(3, (index) {
    return index + 9;
  }); //[9,10,11]

  list1.addAll(list2); //添加多个元素//[1, 2, 世界, Hello, false, 心跳, 9, 10, 11]

  list1.insert(1, "hi"); //向指定位置插入元素

  print(list1);
  // 移除数组中的元素
  list1.remove("value");
  print(list1);

  // 移除数组中指定的元素
  list1.removeAt(1);
  print(list1);

  // 判断数组中是否有某个元素
  print(list1.indexOf("element")); // 输出结果:-1

  // 可以使用 sort() 函数来排序, 但是由于我们使用定义的数组类型不一样,就不能使用
  var list3 = [10, 22, 53, 216, 53];

  // 根据语法提示: List.sort([(int, int) → int compare]) → void
  list3.sort((a, b) => a.compareTo(b));
  print(list3); // 输出结果:

  print("============集合遍历1============");

  ///遍历集合的方式
  for (int i = 0; i < list3.length; i++) {
    print(list3[i]);
  }
  print("============集合遍历2============");
  for (var o in list3) {
    print(o);
  }
  print("============集合遍历3============");
  list3.forEach((val) {
    print(val);
  });

Map 字典类型

map 是将 key 和 value 相关联的对象,key 和 value 都可以是任何类型的对象,并且 key 是唯一的如果 key 重复后面添加的 key 会替换前面的。

  // 创建Map
  var map = {'sf': '影魔', 'viper': '冥界亚龙'};

  // 获取长度
  print(map.length); // 输出:2
  // 判断是否为空
  print(map.isEmpty); // 输出:false
  print(map.isNotEmpty); // 输出:true
  // 获取到所有的 key
  print(map.keys); // 输出:(sf, viper)
  // 获取到所有的 values
  print(map.values); // 输出:(影魔, 冥界亚龙)

  // 判断是否包含某个key
  print(map.containsKey("key")); // 输出:false

  // 判断是否包含某个value
  print(map.containsValue("key")); // 输出:false

  // 添加一个新的元素进去
  map['spa'] = '幽鬼';
  print(map); // 输出:{sf: 影魔, viper: 冥界亚龙, spa: 幽鬼}

  // 循环打印 代码提示:Map.forEach((String, String) → void f) → void
  map.forEach((key, value) => print("key:${key}, value:${value}"));

弱类型

Dart 中弱类型有 var, Object 以及 dynamic。

dynamic

动态任意类型,编译阶段不检查类型

var

  • 如果没有初始值,可以变成任何类型
  • 如果有初始值,那么其类型将会被锁定,类型将不能被更改

Object

动态任意类型,编译阶段检查类型

  print('----dynamic,var,Object----');
  print('--------------------------');
  print('----dynamic----');
  dynamic x = 'hello';
  print(x.runtimeType);
  //print(x.hello()); //此处编译能通过,但是运行报错 提示Class 'String' has no instance method 'hello'.
  print(x);
  x = 123;
  print(x);
  print(x.runtimeType);
  print('----var----');
  var a = 'hello';
  // a = 123;//编译报错//你可以改变 x的类型,但是无法改变 a的类型
  print(a.runtimeType);
  print(a);
  print('----Object----');
  Object o1 = 'hello';
  print(o1.runtimeType);
  print(o1);
  o1 = 345;
  print(o1);
  print(o1.runtimeType);

小结

var 初始化确定类型后不可更改类型, Object 以及 dynamic 可以更改类型
Object 编译阶段检查类型, 而 dynamic 编译阶段不检查类型

最后

贴一张自己学习Flutter的公众号,感兴趣的小伙伴可以一起学习哦。。。

完整代码

import 'package:flutter/material.dart';

class DartDataTypePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("常用数据类型"),
      ),
      body: Center(
        child: Material(
          child: InkWell(
            onTap: () {
              _showDataType();
              _showStringType();
              _showBoolType();
              _showListType();
              _showMapType();
              _showSpecialType();
            },
            child: Container(
              alignment: Alignment.center,
              height: 50,
              width: 200,
              decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(5),
                  gradient: LinearGradient(colors: [
                    Theme.of(context).primaryColor.withOpacity(.5),
                    Theme.of(context).primaryColor.withOpacity(.7),
                  ])),
              child: Text(
                "点击运行",
                style: TextStyle(color: Colors.white, fontSize: 16),
              ),
            ),
          ),
        ),
      ),
    );
  }

  //数值类型
  void _showDataType() {
    int num = 90;
    int n = 23;
    print("num=${num}"); //90
    print("n=${n}"); //23

    print("============运算符============");
    print("num+n=${num + n}"); //113
    print("num-n=${num - n}"); //67
    print("num*n=${num * n}"); //2070
    print("num~/n=${num ~/ n}"); //取整,3
    print("num%n=${num % n}"); //取余,21
    print("num/n=${num / n}"); //取长除法结果,3.9130434782608696

    print("============属性============");
    print((-9).isNaN); //false //如果数字是非数字双精度值,则为true;否则为true。否则为假。
    print((0 / 0).isNaN); //true
    print((-9).isNegative); //true//是否是小与0的数
    print((0).isNegative); //false //是否是小与0的数
    print(num.isEven); //true//是否是偶数
    print(num.isOdd); //false//是否是奇数
    print(num.sign); //1//返回该整数的符号(对于0返回0,对于小于0的值返回 -1,对于大于0的值返回 1。)

    print("============方法============");

    double num1 = 3.1314;

    print(num1.toInt()); //3//转成int类型 (舍去小数)
    print(num.toDouble()); //90.0//转成double类型
    print((-3.14).abs()); //3.14//绝对值
    print(num1.round()); //3//四舍五入
    print(num1.ceil()); //4//返回此不小于的最小整数  比如5.2, 返回的是6,+0.5再四舍五入
    print(num1.floor()); //3//返回此不大于的最大整数  比如5.2, 返回的是5
    print(num1.truncate()); //3//返回去掉小数点后面的整数
    print(num1.truncateToDouble()); //3.0
    print(3.54.truncateToDouble()); //3.0

    print("============常用转换方法============");

    print(int.parse("3")); //3                //String=>int
    print(double.parse("3.14")); //3.14       //String=>double
    print(num1.toString()); //3.1314          //double=>String
    print(num1.toStringAsFixed(3)); //3.131   // double=>String
  }
}

//字符串类型
void _showStringType() {
  String str1 = '字符串', str2 = "双引号"; //字符串定义
  String str3 = 'st1:$str1\tstr2:$str2'; //字符串拼接

  String str4 = "+号拼接:\t" + 'st1:' + str1 + '\tstr2:' + str2; //字符串拼接,'\'转义

  String str5 = "{}号拼接:\tst1:${str1}\tstr2:${str2}";

  print(str3);
  print(str4);
  print(str5);

  print("============常用方法============");
  String str6 = "在爱情里,不被爱的那个才是第三者。";
  print("str6.length=" + str6.length.toString()); //字符串长度
  print(str6.indexOf("爱")); //获取指定字符串位置,返回第一个
  print(str6.substring(1, 9)); //字符串截取
  print("str6.startsWith('在爱情')==" + str6.startsWith("在爱情").toString()); //判断
  print(str6.replaceAll("第三者", "你")); //字符串替换
  print(str6.split("爱").toString()); //切割字符串//根据"爱"切割字符串
  print("str6.contains('在爱情')==" + str6.contains("在爱情").toString()); //判断是否包含
  print("i love u".toUpperCase()); //转大写
  print("I LOVE U".toLowerCase()); //转小写
  print("".isEmpty); //为空判断
}

//Flutter中经常用到三目运算
void _showBoolType() {
  bool success = true, fail = false;
  bool heihei;
  print(heihei); //null
  print(success);
  print(fail);
  print(success || fail); //true
  print(success && fail); //false

  int a = 99, b = 78, c = 210;

  int max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);

  print("a,b,c最大值:" + max.toString());
}

//List结合列表
void _showListType() {
  List list1 = [1, 2, 3, "Hello", false];

  list1[2] = "世界"; //修改下标为2 的值

  print(list1.length); //5//列表长度
  list1.add("心跳"); //添加元素

  List list2 = List.generate(3, (index) {
    return index + 9;
  }); //[9,10,11]

  list1.addAll(list2); //添加多个元素//[1, 2, 世界, Hello, false, 心跳, 9, 10, 11]

  list1.insert(1, "hi"); //向指定位置插入元素

  print(list1);
  // 移除数组中的元素
  list1.remove("value");
  print(list1);

  // 移除数组中指定的元素
  list1.removeAt(1);
  print(list1);

  // 判断数组中是否有某个元素
  print(list1.indexOf("element")); // 输出结果:-1

  // 可以使用 sort() 函数来排序, 但是由于我们使用定义的数组类型不一样,就不能使用
  var list3 = [10, 22, 53, 216, 53];

  // 根据语法提示: List.sort([(int, int) → int compare]) → void
  list3.sort((a, b) => a.compareTo(b));
  print(list3); // 输出结果:

  print("============集合遍历1============");

  ///遍历集合的方式
  for (int i = 0; i < list3.length; i++) {
    print(list3[i]);
  }
  print("============集合遍历2============");
  for (var o in list3) {
    print(o);
  }
  print("============集合遍历3============");
  list3.forEach((val) {
    print(val);
  });
}

void _showMapType() {
  // 创建Map
  var map = {'sf': '影魔', 'viper': '冥界亚龙'};

  // 获取长度
  print(map.length); // 输出:2
  // 判断是否为空
  print(map.isEmpty); // 输出:false
  print(map.isNotEmpty); // 输出:true
  // 获取到所有的 key
  print(map.keys); // 输出:(sf, viper)
  // 获取到所有的 values
  print(map.values); // 输出:(影魔, 冥界亚龙)

  // 判断是否包含某个key
  print(map.containsKey("key")); // 输出:false

  // 判断是否包含某个value
  print(map.containsValue("key")); // 输出:false

  // 添加一个新的元素进去
  map['spa'] = '幽鬼';
  print(map); // 输出:{sf: 影魔, viper: 冥界亚龙, spa: 幽鬼}

  // 循环打印 代码提示:Map.forEach((String, String) → void f) → void
  map.forEach((key, value) => print("key:${key}, value:${value}"));
}

void _showSpecialType() {
  print('----dynamic,var,Object----');
  print('--------------------------');
  print('----dynamic----');
  dynamic x = 'hello';
  print(x.runtimeType);
  //print(x.hello()); //此处编译能通过,但是运行报错 提示Class 'String' has no instance method 'hello'.
  print(x);
  x = 123;
  print(x);
  print(x.runtimeType);
  print('----var----');
  var a = 'hello';
  // a = 123;//编译报错//你可以改变 x的类型,但是无法改变 a的类型
  print(a.runtimeType);
  print(a);
  print('----Object----');
  Object o1 = 'hello';
  print(o1.runtimeType);
  print(o1);
  o1 = 345;
  print(o1);
  print(o1.runtimeType);
}

//

相关文章

  • Flutter中Dart基础

    Flutter是基于Dart语音开发的,Dart是面向对象的语言,下面记录一些Dart语言常用数据类型的用法。 1...

  • Dart常用数据类型(一)

    Number(数值类型) int 整形 double 浮点型 String (字符串类型) String 字符串 ...

  • Dart语言基础(二)之数据类型

    Dart语言之数据类型 数据类型 dart语言数据类型包含一下类型:变量-Var常量-Const数值型-Numbe...

  • Dart数据类型

    Dart中支持以下数据类型: Dart数据类型: Numbers数值类型intdouble 字符串类型 Strin...

  • Dart基础语法

    Dart基础语法 基本数据类型 Dart 属于强类型语言(在Dart2.0之前,Dart是一门弱类型语言。2.0以...

  • 数字(num, int, double) Dart语言相较于其他语言,它只有三种数字类型,num, int, do...

  • Dart常用数据类型之Map

    key-value键值对(可以使用相关联的key检索value值)的集合, 即传说中的字典Map中key的数量是有...

  • Flutter之旅:Dart的基础语法

    1.Dart中常见数据类型一览: 总的来看Dart的常见的数据类型有下面8种: 1.1.数字类型 num、int和...

  • Dart入门-枚举&泛型

    枚举 枚举是一种有穷序列集的数据类型 使用关键字enum定义一个枚举 常用于代替常量,控制语句等 Dart枚举特性...

  • Dart语言基础(七)之枚举与泛型

    枚举 枚举是一种有穷序列集的数据类型 使用关键字enum定义一个枚举 常用于代替常量,控制语句等 Dart枚举特性...

网友评论

    本文标题:Dart常用数据类型(一)

    本文链接:https://www.haomeiwen.com/subject/adtdxhtx.html