写点什么

Flutter 开发之 Dart 的数据类型 01,安卓开发面试自我介绍

用户头像
Android架构
关注
发布于: 刚刚

print(m3.toString());


// 幂次求模; m3 的 4 次幂, 在对 3 求模 print(m3.modPow(4, 3)); // 1


// 返回 m3 和 16 的最大公约数 print(m3.gcd(16));


// 返回 m3 除以 5 的余数 print(m3.remainder(5));


// 转成 doubleprint(m3.toDouble());


// 比较大小, 0:相同、1:大于、-1:小于 print(m3.compareTo(30));

double

下面是定义double的一些方式:


var y = 1.1;var exponents = 1.42e5;


double类型相关的属性使用


// 是否是 NaN 值 print(d0.isNaN);// 是否是无穷大或者无穷小 print(d0.isInfinite);// 是否是有限的 print(d0.isFinite);// 是否为负数, 大于 0 即为 falseprint(d0.isNegative);


// 根据代码单元生成的哈希码 print(d0.hashCode);


// 数据的符号,-1.0:值小于 0、+1.0:值大于 0、-0.0/0.0/NaN:值是其本身 print(d0.sign);print(-1.23.sign);print(0.0.sign);


// 返回运行时的类型 print(d0.runtimeType); // double


double类型相关方法的使用


// 转成字符串 print(d0.toString());


// 取整数, 小数点舍去 print(d0.toInt());


// 比较大小, 0:相同


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


、1:大于、-1:小于 print(d0.compareTo(30));


// 获取绝对值 print(d0.abs());


// 四舍五入 print(d0.round()); // 13// 向上取整 print(d0.ceil()); // 14// 向下取整 print(d0.floor()); // 13


// 输出的 double 类型, 相当于 d0.round().toDouble()print(d0.roundToDouble()); // 13.0print(d0.ceilToDouble()); // 14.0print(d0.floorToDouble()); // 13.0


// 保留指定的小数位数(四舍五入), 不足补 0, 字符串返回 print(d0.toStringAsFixed(2)); // 13.10


// 保留变量的位数(小数点前后的总位数), 不足补 0, 多余的四舍五入 print(d0.toStringAsPrecision(10)); // 13.09870000


/** toStringAsExponential



    */


    /** toStringAsPrecision



      */

      Booleans

      • 为了代表布尔值,Dart有一个名字为bool的类型。

      • 只有两个对象是布尔类型的:truefalse 所创建的对象, 这两个对象也都是编译时常量

      • Dart需要一个布尔值的时候,只有true对象才被认为是true, 所有其他的值都是flase; 像 1、 "aString"、 以及someObject等值都被认为是false


      const m = 1;if (m) {print('是一个布尔值');} else {print('不是一个布尔值');}


      • Dart中上面判断语句是合法的代码

      • 但是在Dart检查模式运行,上面的代码将会抛出一个异常,表示m变量不是一个布尔值

      • 所以不建议这么使用上述方法进行判断

      Strings

      Dart字符串是UTF-16编码的字符序列, 可以使用单引号或者双引号来创建字符串:


      var s1 = 'Single quotes work well for string literals.';var s2 = "Double quotes work just as well.";// 单引号里面有单引号(双引号里面有双引号)时, 必须使用反斜\杠转义 var s3 = 'It's easy to escape the string delimiter.';var s4 = "It's even easier to use the other delimiter.";

      字符串的拼接

      直接把相邻字符串写在一起,就可以连接字符串了


      var string = 'name''+''age'


      用+把相邻字符串连接起来


      var string1 = 'name' + '+' + 'age';

      引用变量

      • Dart中使用$符号引用变量或者表达式

      • 表达式引用方式: ${表达式}, 如果表达式是一个变量则{}可以省略


      const num1 = 12;// 引用表达式 const ageStr0 = 'age = {num1} is my age';// 引用表达式 const ageStr2 = 'age = ${num1 * num1}';

      多行字符串

      使用单引号或双引号的三引号


      const line1 = '''道路千万条,安全第一条,行车不规范,亲人两行泪''';const line2 = """道路千万条,安全第一条,行车不规范,亲人两行泪""";

      转义符号

      声明raw字符串(前缀为r),在字符串前加字符r,或者在\前面再加一个\,可以避免\的转义作用,在正则表达式里特别有用


      // 转义字符 print(r'转义字符, \n');print('转义字符, \n');print('转义字符, \n');

      属性介绍

      const string0 = 'https://www.titanjun.top/';


      // 可根据索引获取字符串的每一个字符 print(string0[1]);


      // 字符串是否是空的 print(string0.isEmpty);print(''.isEmpty); // true// 字符串是否不是空的 print(string0.isNotEmpty);print(''.isNotEmpty); // false


      // 返回字符串 Unicode 代码的可迭代对象 print(string0.runes);// 返回字符串的 UTF-16 代码单元列表 print(string0.codeUnits);// 返回根据代码单元生成的哈希码 print(string0.hashCode);// 字符串的长度 print(string0.length);// 返回对象运行时的类型 print(string0.runtimeType); // String

      方法介绍

      const string0 = 'https://www.titanjun.top/';


      // 字符串比较 print('titan'.compareTo('jun'));


      // 大小写转换 print(string0.toUpperCase());print(string0.toLowerCase());


      // 截取字符串(开头索引和结尾索引)print(string0.substring(0, 5)); // https// 只有开头索引, 默认截取到最后 print(string0.substring(12)); // titanjun.top/


      // 拆分字符串 print(string0.split('.')); // [https://www, titanjun, top/]print(string0.split(new RegExp(r"t"))); // [h, , ps://www., i, anjun., op/]


      // 去掉字符串里面的 tab 空格和换行符 const string1 = '\t\ttitanjun top\n';print(string1.trim());// 去掉字符串开头的 tab 空格和换行符 print(string1.trimLeft());// 去掉字符串结尾的 tab 空格和换行符 print(string1.trimRight());

      endsWith

      判断字符串是否以某字符(字符串)结尾, 参数不接受正则表达式


      const str1 = 'titanjun.top';print(str1.endsWith('p')); //trueprint(str1.endsWith('/')); //falseprint(str1.endsWith('top')); //true

      startsWith

      bool startsWith(Pattern pattern, [int index = 0]);


      判断字符串是否以某字符(字符串)开头, 参数接受正则表达式


      const str1 = 'titanjun.top';print(str1.startsWith('h')); //falseprint(str1.startsWith('tit')); //trueprint(str1.startsWith('it', 1)); //trueprint(str1.startsWith(new RegExp(r'[A-Z][a-z]'), 1)); //false

      indexOf

      int indexOf(Pattern pattern, [int start]);


      • 根据指定的字符(字符串)获取其在原字符串中第一次出现的索引值, 顺序是从左到右

      • 可以从指定的索引初开始, 默认从 0 开始

      • 如果原字符串中没有需要查找的字符(字符串), 则返回值为: -1


      const str2 = 'https://www.titanjun.top/';print(str2.indexOf('titan')); // 12print(str2.indexOf('t', 5)); // 12print(str2.indexOf(new RegExp(r'[a-z]'))); //0// 如果没有改字符, 则会输出-1print(str2.indexOf('ppp')); // -1

      lastIndexOf

      int lastIndexOf(Pattern pattern, [int start]);


      效果和indexOf一样, 不同点则是: indexOf的顺序是从左到右, lastIndexOf是从右到左


      const str2 = 'https://www.titanjun.top/';print(str2.lastIndexOf('t', 20)); //14print(str2.indexOf(new RegExp(r'[a-z]'))); //0// 如果没有改字符, 则会输出-1print(str2.indexOf('ppp')); // -1

      补占位符

      String padLeft(int width, [String padding = ' ']);String padRight(int width, [String padding = ' ']);


      • 在字符串前后补占位符

      • 参数一: 想要得到的字符串的位数

      • 参数二: 位数不足时, 补充的字符


      const str3 = '12';print(str3.padLeft(2, '0')); //12print(str3.padRight(3, '0')); // 120

      contains

      bool contains(Pattern other, [int startIndex = 0]);


      • 判断字符串中是否包含某字符

      • 判断指定索引处的字符是否是某字符


      bool contains(Pattern other, [int startIndex = 0]);


      const str = 'Dart strings';print(str.contains('D'));print(str.contains(new RegExp(r'[A-Z]')));print(str.contains('D', 0));print(str.contains(new RegExp(r'[A-Z]'), 0));

      替换字符

      // 只能替换一次, 参数三为开始的索引值, 默认 0String replaceFirst(Pattern from, String to, [int startIndex = 0]);


      // 替换所有符合条件的字符(字符串)String replaceAll(Pattern from, String replace);


      // 替换某一区间的字符 String replaceRange(int start, int end, String replacement);


      // 示例如下:// 替换字符串 const str4 = 'titanjun12--0123';print(str4.replaceFirst('t', 'T')); // Titanjun12--0123print(str4.replaceFirst('12', '21', 10)); //titanjun12--0213


      // 全部替换 print(str4.replaceAll('12', '21')); //titanjun21--0213print(str4.replaceAll('t', 'T')); //TiTanjun12--0123


      // 区间替换 print(str4.replaceRange(0, 5, 'top')); //topjun12--0123

      List

      DartList对象就是其他语言中的数组

      创建数组

      // 创建一个指定长度的 List, 不能添加/删除元素 List([int length]);


      //通过指定长度创建一个固定长度的 List,并使用 fill 初始化每个位置的值, 不能添加/删除元素 List.filled(int length, E fill, {bool growable: false});


      //创建一个包含所有 elements 的 List,//当 growable 为 true(默认)时,构造函数返回一个可增长的 List。 否则,它返回一个固定长度的 ListList.from(Iterable elements, {bool growable: true})


      //生成一个包含所有值的 List//除非 growable 为 true(默认),否则创建的 List 是固定长度的 List.generate(int length, E generator(int index), {bool growable: true})


      //创建一个包含所有 elements 的,不能改变它的长度或元素 List.unmodifiable(Iterable elements)

      List

      • 如果设置了参数length(length不能为负数或null),那么创建的List是固定长度的

      • 元素可修改, 元素个数不可修改, 不能删除和增加元素


      var l1 = new List(3); //[null, null, null]print(l1.length); //3


      // 下面这种写法会报错 l1.length = 1;


      如果未设置参数length,那么List的长度是 0,并且是可增长的


      // 这两种方式一样 var l10 = new List();var l11 = [];


      // 都是可行的 l10.length = 3;l10.add(1);


      当使用指定长度创建一个可增长的List时,仅仅在刚创建后分配长度


      List growableList = new List()..length = 500;

      filled

      • 通过指定长度创建一个固定长度的List,并初始化每个位置的值

      • 所有的元素都是相同的fill值。 如果指定的值是一个可变对象,那么List中所有的元素都是相同的对象,并且是可修改的


      var l2 = new List.filled(3, 'l'); //[l, l, l]var l3 = new List.filled(2, []); // [[], []]l3[0].add(12);


      print(l3); // [[12], [12]]

      from

      • 创建一个包含所有elementsList

      • elementsIterator规定了元素的顺序。

      • growabletrue(默认)时,构造函数返回一个可增长的List。 否则,它返回一个固定长度的List


      var l5 = new List.from([1, 2, 3, 4]);l5.add(5);print(l5); // [1, 2, 3, 4, 5]


      // 下面的 add 方法会报错 var l5 = new List.from([1, 2, 3, 4], growable: false);l5.add(5);

      generate

      • 生成一个包含所有值的List, 根据索引值创建元素

      • growablefalse时,创建的List是固定长度的


      var l4 = new List.generate(3, (int i) => i * i);l4.add(14);print(l4);// [0, 1, 4, 14]

      unmodifiable

      • 创建一个包含所有elements的,不可修改的List

      • 不可修改的List不能改变它的长度或元素

      • 如果元素本身是不可改变的,那么由此产生的List也是不可改变的


      var l6 = new List.unmodifiable([1, 2, 3, 4]);

      List 属性

      var arr1 = [1, 2, 3, 4];// 数组的第一个和最后一个元素 print(arr1.first); // 1print(arr1.last); // 4


      // 判断数组是否为空

      用户头像

      Android架构

      关注

      还未添加个人签名 2021.10.31 加入

      还未添加个人简介

      评论

      发布
      暂无评论
      Flutter开发之Dart的数据类型01,安卓开发面试自我介绍