• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Dart基础学习

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

TOC

参考:https://www.imooc.com/learn/1035

概述

  • Dart是Google发布的一门开源编程语言
  • Dart初期目标是成为下一代的web开发语言
  • Dart目前已可用于全平台开发
  • Dart是一门面向对象的编程语言

应用场景

  • Web开发
  • 跨平台移动应用开发( Fltter )
  • 脚本或服务端开发

版本

Dart1.x为稳定版本

Dart2.x目前为开发版本

案例:

hello_world.dart

  1. //Main程序入口
  2. void main(){
  3. //控制台打印
  4. print("Hello World!");
  5. }
  • main方法是固定写法,它是程序入口
  • print方法可以在控制台输出内容
  • 通过文件选择run ,可以运行文件中的main方法

数据类型

变量

  • 使用var声明变量,可赋予不同类型的值var a=12;
  • 未初始化时,默认值为null
  • 使用final声明一个只能赋值一次的变量 final c=30

var

类似于JavaScript中的var,它可以接收任何类型的变量,但最大的不同是Dart中var变量一旦赋值,类型便会确定,则不能再改变其类型

  1. var t;
  2. t = "hi world";
  3. // 下面代码在dart中会报错,因为变量t的类型已经确定为String,
  4. // 类型一旦确定后则不能再更改其类型。
  5. t = 1000;

dynamic和Object

  • Object 是Dart所有对象的根基类,也就是说所有类型都是Object的子类(包括Function和Null),所以任何类型的数据都可以赋值给Object声明的对象.
  • dynamicvar一样都是关键词,声明的变量可以赋值任意对象。
  • dynamicObject,声明的变量可以在后期改变赋值类型
  • dynamic声明的对象编译器会提供所有可能的组合, 而Object声明的对象只能使用Object的属性与方法, 否则编译器会报错。
  1. dynamic t;
  2. Object x;
  3. t = "hi world";
  4. x = 'Hello Object';
  5. //下面代码没有问题
  6. t = 1000;
  7. x = 1000;
  1. dynamic a;
  2. Object b;
  3. main() {
  4. a = "";
  5. b = "";
  6. printLengths();
  7. }
  8. printLengths() {
  9. // no warning
  10. print(a.length);
  11. // warning:
  12. // The getter 'length' is not defined for the class 'Object'
  13. print(b.length);//只能使用Object类型默认的属性和方法,子类的不能使用了
  14. }
  15. //变量a不会报错, 变量b编译器会报错

常量final和const

  • 一个 final 变量只能被设置一次.
  • const 变量是一个编译时常量(编译的时候就初始化了--定义的时候就要初始化).
  • final变量在第一次使用时被初始化。
  • final或者const修饰的变量,变量类型可以省略
  1. //可以省略String这个类型声明
  2. final str = "hi world";
  3. //final String str = "hi world";
  4. const str1 = "hi world";//定义的时候就要初始化
  5. //const String str1 = "hi world";

数值型

  • 数值型-Number
  • 字符串-String
  • 布尔型-Boolean
  • 列表-List
  • 键值对-Map
  • Runes/Symbols(基本不用)

数值型num

类型:

  • 整形Int
  • 浮点型 double

数值型操作

  • 运算符:+、-、*、/、~/(取整)、%
  • 常用属性: isNaN(是否是非数字),isEven(是否是偶数),isOdd(是否是奇数)等
  • 常用方法:
    • abs(),取绝对值。
    • round(), 四舍五入。
    • floor()、向下取整。
    • ceil(),向上取整。
    • toInt()、
    • toDouble()
  1. void main(){
  2. //num是数值类型,因此可以设置整数和浮点数。
  3. num a = 10;
  4. a = 12.5;
  5. //是整数,仅仅只能复制为整数,不能设置古典色。
  6. int b = 20;
  7. // b = 20.5;
  8. //浮点数不能设置整数。
  9. double c = 10.5;
  10. // c = 30;
  11. print(b + c);//30.5
  12. print(b - c);//9.5
  13. print(b * c);//210.0
  14. print(b / c);//1.9047619047619047
  15. print(b ~/ c);//1
  16. print(b % c);//9.5
  17. print(0.0 / 0.0);//NaN 0.0/0.0非数字,其他都是数字
  18. print(b.isEven);//true
  19. print(b.isOdd);//false
  20. int d = 11;
  21. print(d.isEven);//false
  22. print(d.isOdd);//true
  23. int e = -100;
  24. print(e.abs());//100
  25. double f = 10.3;
  26. print(f.round());//10
  27. print(f.floor());//10
  28. print(f.ceil());//11
  29. print(f.toInt());//10,取整
  30. print(d.toDouble());//11.0,向上取整,获取为小数
  31. }

字符串(String)

创建

  • 使用单引号,双引号创建字符串
  • 使用三个引号或双引号创建多行字符串
  • 使用r创建始raw字符串

操作:

  • 运算符:+、*、==、[]
  • 插值表达式: $(lexpression} (字符串中表达式)
  • 常用属性: length, isEmpty, isNotEmpty
  • 常用方法:
    • contains()
    • subString()
    • startsWith(),
    • endsWith()
    • indexOf(),
    • lastIndexOf()
    • toLowerCase(),
    • toUpperCase()
      trim(),
    • trimLeft(),
    • trimRight()
      split(),
    • replacexXX()
  1. void main(){
  2. String str1 = 'Hello';//""
  3. //```设置多行
  4. String str2 = '''Hello
  5. Dart''';//"""
  6. print(str2);
  7. //Hello
  8. // Dart
  9. String stra = 'Hello \n Dart';//单引号\n会换行
  10. print(stra);
  11. //Hello
  12. // Dart
  13. String str3 = r'Hello \n Dart';//r开头,\n等会是字符创
  14. print(str3);
  15. //Hello \n Dart
  16. String str4 = "This is my favorite language";
  17. print(str4 + "New");//This is my favorite languageNew
  18. print(str4 * 2);//复制2遍 This is my favorite languageThis is my favorite language
  19. print(str3 == str4);//false
  20. print(str4[1]);//h
  21. int a = 1;
  22. int b = 2;
  23. print("a + b = ${a + b}");//a + b = 3
  24. print("a = $a");//只有一个字符,可以省略{} a = 1
  25. print(str4.length);//28
  26. print(str4.isEmpty);//false
  27. print(str4.contains("This"));//true
  28. print(str4.substring(0,3));//Thi
  29. print(str4.startsWith("a"));//false
  30. print(str4.endsWith("ge"));//true
  31. var list = str4.split(" ");//[This, is, my, favorite, language]
  32. print(list);
  33. print(str4.replaceAll("This", "That"));//That is my favorite language
  34. }

布尔型bool

布尔值只有true和false

  1. bool isTrue = true;
  2. bool isFalse = false;
  3. print("Hello".isEmpty);//false

列表List(数组)

创建

  • 创建List :var list = [1, 2, 3];
  • 创建不可变的List : var list = const [1, 2, 3];
  • 构造创建: var list = new List();也可以定义固定类型的var list = new List<String>();

常用操作:

  • [],length
  • indexOf(),lastIndexOf()
  • add(),insert()
  • sort()排序,sublist()
  • remove(),clear()
  • shuffle()打乱,asMap()转map,forEach()
  • 倒序
  • 修改值fillRange(s,e,value)
  • join("字符串"),以字符串分割,转为字符串
  • split("字符串")
  1. void main(){
  2. var list1 = [1,2,3,"Dart",true];//[1, 2, 3, Dart, true]
  3. print(list1);
  4. print(list1[2]);//3
  5. list1[1] = "Hello";//[1, Hello, 3, Dart, true]
  6. print(list1);
  7. var list2 = const [1,2,3];
  8. // list2[0] = 5;
  9. var list3 = new List();
  10. var list = ["hello","dart"];
  11. print(list.length);//2
  12. list.add("New");//[hello, dart, New]
  13. print(list);
  14. list.insert(1, "Java");//[hello, Java, dart, New]
  15. print(list);
  16. list.remove("Java");//[hello, dart, New]
  17. print(list);
  18. // list.clear(); //[]
  19. // print(list);
  20. print(list.indexOf("dart1"));//-1
  21. list.sort();
  22. print(list);//[New, dart, hello],按照字母牌,大写字母比小写字母小
  23. print(list.sublist(1));//[dart, hello]
  24. list.forEach(print);
  25. //New
  26. //dart
  27. //hello
  28. list=list.reversed.toList();//只调用reversed方法会是(1,2,3),不是list
  29. list.fillRange(1,3,"aa");
  30. //将list的下表为[1,3)的值都改为"aa"
  31. }

Map

创建

  • var language = {first': 'Dart' 'second': Java' };
  • 创建不可变Map:var language = const { 'first': 'Dart','second":'Java'};
  • 构造创建:var language = new Map();
  1. void main(){
  2. //创建法1
  3. var map1 = {"first":"Dart",1:true,true:"2"};
  4. print(map1);//{first: Dart, 1: true, true: 2}
  5. print(map1["first"]);//Dart
  6. print(map1[true]);//2
  7. map1[1] = false;
  8. print(map1);//{first: Dart, 1: false, true: 2}
  9. var map2 = const {1:"Dart",2:"Java"};
  10. // map2[1] = "Python";//不能改变值
  11. var map3 = new Map();
  12. var map = {"first":"Dart","second":"Java","third":"Python"};
  13. print(map.length);//3
  14. // map.isEmpty;
  15. print(map.keys);//(first, second, third)(是list)
  16. print(map.values);//(Dart, Java, Python)
  17. print(map.containsKey("first"));//true
  18. print(map.containsValue("C"));//false
  19. map.remove("third");
  20. print(map);//{first: Dart, second: Java}
  21. map.forEach(f);//forEach遍历每一个字段,f调用f方法,传入key,value;
  22. //key=first,value=Dart
  23. //key=second,value=Java
  24. var list = ["1","2","3"];
  25. print(list.asMap());//{0: 1, 1: 2, 2: 3} //转map是 下标:value
  26. }
  27. void f(key,value){
  28. print("key=$key,value=$value");//${} 简写
  29. }

dynamic动态类型

使用var定义一个字段,字段类型可以随便变换,其实,var定义的就是一个dynamic类型

  1. void main(){
  2. var a;
  3. a = 10;
  4. a = "Dart";
  5. dynamic b = 20;//定义,动态类型
  6. b = "JavaScript";
  7. var list = new List<dynamic>();
  8. list.add(1);
  9. list.add("hello");
  10. list.add(true);
  11. print(list);
  12. }

运算符

算术运算符

  • 加减乘除,取整取余:+,-,*, /,~/,%
  • 递增递减:++var, var++,--var, var--
  1. void main(){
  2. int a = 10;
  3. int b = 2;
  4. print(a + b);//12
  5. print(a - b);//8
  6. print(a * b);//20
  7. print(a / b);//5.0
  8. print(a ~/ b);//5
  9. print(a % b);//0
  10. print(a++);//10
  11. print(++a);//12
  12. print(a--);//12
  13. print(--a);//10
  14. }

关系运算符

  • 运算符:==,!=, >, <,>=,<=
  • 判断内容是否相同使用==

    判断对象不适合

  1. void main(){
  2. int a = 5;
  3. int b = 3;
  4. print(a == b);//false
  5. print(a !=b );//true
  6. print(a > b);//true
  7. print(a < b);//false
  8. print(a >= b);//true
  9. print(a <= b);//false
  10. String strA = "123";
  11. String strB = "123";
  12. print(strA == strB);//true
  13. strB = "123 ";
  14. print(strA == strB);//false
  15. }

逻辑运算符

  • 运算符:!取反,&&且,||或
  1. void main(){
  2. bool isTrue = true;
  3. print(!isTrue);//false
  4. bool isFalse = false;
  5. print(isTrue && isFalse);//false
  6. print(isTrue || isFalse);//true
  7. String str = "";
  8. print(str.isEmpty);//true isEmpty空字符串

  9. 鲜花

    握手

    雷人

    路过

    鸡蛋
    该文章已有0人参与评论

    请发表评论

    全部评论

    专题导读
    上一篇:
    Dart异步发布时间:2022-07-13
    下一篇:
    [转]CSS、LESS和SASS(SCSS)的区别以及Ruby Sass、LibSass、Node Sass、Dart Sass之 ...发布时间:2022-07-13
    热门推荐
    热门话题
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap