博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dart编程语言入门学习
阅读量:6294 次
发布时间:2019-06-22

本文共 14069 字,大约阅读时间需要 46 分钟。

1.数据类型

Boolean

void main(){  bool isTrue = true;  bool isFalse = false;  print("Hello".isEmpty);}复制代码

Number

void main(){  num a = 10;  a = 12.5;  int b = 20;//  b = 20.5;  double c = 10.5;//  c = 30;  print(b + c);  print(b - c);  print(b * c);  print(b / c);  print(b ~/ c);  print(b % c);  print(0.0 / 0.0);  print(b.isEven);  print(b.isOdd);  int d = 11;  print(d.isEven);  print(d.isOdd);  int e = -100;  print(e.abs());  double f = 10.5;  print(f.round());  print(f.floor());  print(f.ceil());  print(f.toInt());  print(d.toDouble());}复制代码

String

void main(){  String str1 = 'Hello';//""  String str2 = '''Hello                  Dart''';//"""  print(str2);//  String str3 = 'Hello \n Dart';  String str3 = r'Hello \n Dart';  print(str3);  String str4 = "This is my favorite language";  print(str4 + "New");  print(str4 * 5);  print(str3 == str4);  print(str4[1]);  int a = 1;  int b = 2;  print("a + b = ${a + b}");  print("a = $a");  print(str4.length);  print(str4.isEmpty);  print(str4.contains("This"));  print(str4.substring(0,3));  print(str4.startsWith("a"));  print(str4.endsWith("ge"));  var list = str4.split(" ");  print(list);  print(str4.replaceAll("This", "That"));}复制代码

Const

void main(){  var a;  print(a);  a = 10;  print(a);  a = 'Hello Dart';  print(a);  var b = 20;  print(b);  final c = 30;//  c = 50;  const d = 20;//  d = 50;}复制代码

List

void main(){  var list1 = [1,2,3,"Dart",true];  print(list1);  print(list1[2]);  list1[1] = "Hello";  print(list1);  var list2 = const [1,2,3];  //不可变//  list2[0] = 5;  var list3 = new List();  var list = ["hello","dart"];  print(list.length);  list.add("New");  print(list);  list.insert(1, "Java");  print(list);  list.remove("Java");  print(list);//  list.clear();//  print(list);  print(list.indexOf("dart1"));  list.sort();  print(list);  print(list.sublist(1));  list.forEach(print);}复制代码

Map

void main(){  var map1 = {
"first":"Dart",1:true,true:"2"}; print(map1); print(map1["first"]); print(map1[true]); map1[1] = false; print(map1); var map2 = const {1:"Dart",2:"Java"};//不可变// map2[1] = "Python"; var map3 = new Map(); var map = {
"first":"Dart","second":"Java","third":"Python"}; print(map.length);// map.isEmpty; print(map.keys); print(map.values); print(map.containsKey("first")); print(map.containsValue("C")); map.remove("third"); print(map); map.forEach(f); var list = ["1","2","3"]; print(list.asMap());}void f(key,value){ print("key=$key,value=$value");}复制代码

dynamic

void main(){  var a;  a = 10;  a = "Dart";  dynamic b = 20;  b = "JavaScript";  var list = new List
(); list.add(1); list.add("hello"); list.add(true); print(list);}复制代码

2.运算符

operator_arithmetic

void main(){  int a = 10;  int b = 2;  print(a + b);  print(a - b);  print(a * b);  print(a / b);  print(a ~/ b);  print(a % b);  print(a++);//11  print(++a);//12  print(a--);//11  print(--a);//10}复制代码

operator_asignment

void main(){  int a = 10;  int b = 5;  b ??= 10;  print(b);  a += 2;  print(a);  a -= b;  print(a);  a *= b;//  a /= b;  a ~/= b;  a %= b;}复制代码

operator_conditional

void main(){  int gender = 1;  String str = gender == 0 ? "Male=$gender" :"Female=$gender";  print(str);  String a = "Dart";  String b = "Java";  String c = a ?? b;  print(c);}复制代码

operator_logical

void main(){  bool isTrue = true;  print(!isTrue);  bool isFalse = false;  print(isTrue && isFalse);  print(isTrue || isFalse);  String str = "";  print(!str.isEmpty);}复制代码

operator_relational

void main(){  int a = 5;  int b = 3;  print(a == b);  print(a !=b );  print(a > b);  print(a < b);  print(a >= b);  print(a <= b);  String strA = "123";  String strB = "123";  print(strA == strB);}复制代码

3.控制语句

break_and_continue

void main(){  var list = [1,2,3];  for(var item in list){    if(item == 2) {//      break;      continue;    }    print(item);  }  print("-----");  var list2 = [4,5,6];  for(var item1 in list){    if(item1 == 2){      break;    }    for(var item2 in list2){      if(item2 == 5){        break;      }      print(item2);    }  }  }复制代码

stmt_assert

void main(){  String str;  assert(str != null);}复制代码

stmt_for

void main(){  var list = [1,2,3,4,5];  for(var index = 0;index < list.length;index++){    print(list[index]);  }  print("---------");  for(var item in list){    print(item);  }}复制代码

stmt_if

void main(){  int score = 100;  if(score >= 90){    if(score == 100){      print("完美");    }else {      print("优秀");    }  }else if(score > 60){    print("良好");  }else if(score == 60){    print("及格");  }else {    print("不及格");  }}复制代码

stmt_switch

void main(){  String language = "Java";  switch(language){    case "Dart":      print("Dart is my favorite");      break;    case "Java":      print("Java is my favorite");      break;    case "Python":      print("Python is my favorite");      break;    default:      print("None");  }  switch(language){    Test:    case "Dart":      print("Dart is my favorite");      break;    case "Java":      print("Java is my favorite");      continue Test;//      break;    case "Python":      print("Python is my favorite");      break;    default:      print("None");  }}复制代码

stmt_while

void main(){  int count = 0;  while(count < 5){    print(count++);  }  print("---$count----");  do{    print(count--);  }while(count > 0 && count < 5);}复制代码

4.方法

function_declaration

void main(List args){  print(args);  print(getPerson("张三", 18));  print(printPerson("李四", 20));}int gender = 1;getPerson(name,age) => gender == 1 ? "name=$name,age=$age":"Test";printPerson(name,age){  print("name=$name,age=$age");}复制代码

function_optional_param可选参数

void main(){  printPerson("李四");  printPerson("李四",age: 20);  printPerson("李四",age: 20,gender: "Male");  printPerson("李四",gender: "Male");  printPerson2("张三");  printPerson2("张三",18);  printPerson2("张三",18,"Female");}printPerson(String name,{int age,String gender}){  print("name=$name,age=$age,gender=$gender");}printPerson2(String name,[int age,String gender]){  print("name=$name,age=$age,gender=$gender");}复制代码

function_default_param默认参数

void main(){  printPerson("李四");  printPerson("李四",age: 20);  printPerson("李四",gender: "Male");}printPerson(String name,{int age = 30,String gender = "Female"}){  print("name=$name,age=$age,gender=$gender");}复制代码

function_object方法对象

void main(){  Function func = printHello;  func();  var list = [1,2,3,4];  list.forEach(print);  var list2 = ["h","e","l","l","o"];  print(listTimes(list2, times));}void printHello(){  print("Hello");}List listTimes(List list ,String times(str)){  for(var index = 0;index < list.length;index++){    list[index] = times(list[index]);  }  return list;}String times(str){  return str*3;}复制代码

function_anonymous匿名方法

void main(){  var func = (str){    print("Hello---$str");  };  func(30);//  ((){//    print("Test");//  })();  var list2 = ["h","e","l","l","o"];  var result = listTimes(list2, (str){ return str * 3;});  print(result);  print(listTimes2(list2));}List listTimes(List list ,String times(str)){  for(var index = 0;index < list.length;index++){    list[index] = times(list[index]);  }  return list;}List listTimes2(List list ){  var func = (str){ return str * 3;};  for(var index = 0;index < list.length;index++){    list[index] = func(list[index]);  }  return list;}复制代码

function_closure闭包

void main(){  var func = a();  func();  func();  func();  func();}a(){  int count = 0;//  printCount(){//    print(count++);//  }  return (){    print(count++);  };}复制代码

5.面向对象

class_and_object类与对象

import 'person.dart';void main() {    var person = new Person();    person.name = "Tom";    person.age = 20;    print(person.name);    print(person.address);    person.work();}复制代码
//person.dartclass Person {  String name;  int age;  final String address = "";  void work(){    print("Name is $name,Age is $age,He is working...");  }}复制代码

calculated_property计算属性

void main() {    var rect = new Rectangle();    rect.height = 20;    rect.width = 10;    print(rect.area);    rect.area = 200;    print(rect.width);}class Rectangle{  num width,height;  num get area => width * height;      set area(value){        width = value / 20;      }}复制代码

constructors构造方法

void main() {    var person = new Person("Tom",20,"Male");    new Person.withName("John");    new Person.withAge(20);}class Person{  String name;  int age;  final String gender;  Person(this.name,this.age,this.gender);  Person.withName(String name){    this.name = name;  }  Person.withAge(this.age);  void work(){    print("Work...");  }}复制代码

const_constructors常量构造方法

void main() {    const person = const Person("Tom",20,"Male");    person.work();}class Person{  final String name;  final int age;  final String gender;  const Person(this.name,this.age,this.gender);  void work(){    print("Work...");  }}复制代码

factory_constructors工厂构造方法

class Logger {  final String name;  static final Map
_cache =
{}; factory Logger(String name) { if (_cache.containsKey(name)) { return _cache[name]; } else { final logger = Logger._internal(name); _cache[name] = logger; return logger; } } Logger._internal(this.name); void log(String msg) { print(msg); }}复制代码

init_list初始化列表

void main() {    var person = new Person("Tom", 20, "Male");}class Person{  String name;  int age;  final String gender;  Person(this.name,this.age,this.gender);  Person.withMap(Map map): name = map["name"],gender = map["gender"]{    age = map["age"];  }  void work(){    print("Work...");  }}复制代码

static_member静态成员

void main() {  var page = new Page();  Page.scrollDown();}class Page{  static const int maxPage = 10;  static int currentPage = 1;  //下滑  static void scrollDown(){    currentPage = 1;    print("ScrollDown...");  }  //上滑  void scrollUp(){    currentPage++;    print("scrollUp...");  }}复制代码

object_operator对象操作符

void main() {//  Person person = new Person();//  person?.name;//  var person;//  person = "";//  person = new Person();//  (person as Person).work();//  if (person is Person){//    person.work();//  }  new Person()    ..name = "Tom"        ..age = 20        ..work();}class Person{  String name;  int age;  void work(){    print("Work...$name,$age");  }}复制代码

object_call对象call

void main() {    var person = new Person();    print(person("Test",30));}class Person{  String name;  int age;//  void work(){//    print("Name is $name,Age is $age");//  }  String call(String name,int age){    return "Name is $name,Age is $age";  }}复制代码

6.面向对象扩展

继承

import 'person.dart';void main() {//  var student = new Student();//  student.study();////  student.name = "Tom";//  student.age = 16;////  print(student.isAdult);////  student.run();  Person person = new Student();  person.name = "Tom";  person.age = 18;  if(person is Student){    person.study();  }  print(person);}class Student extends Person{  void study(){    print("Student study...");  }  @override  bool get isAdult => age > 15;  @override  void run() {    print("Student run...");  }}复制代码
class Person {  String name;  int age;  String _birthday;  bool get isAdult => age > 18;  void run(){    print("Person run...");  }  @override  String toString() {    return "Name is $name,Age is $age";  }}复制代码

继承中的构造方法

void main() {  var student = new Student("Tom","Male");  print(student.name);}class Person{  String name;  Person(this.name);  Person.withName(this.name);}class Student extends Person{  int age;  final String gender;  Student(String name,String g) : gender = g, super.withName(name);}复制代码

抽象类

void main() {  var person = new Student();  person.run();}abstract class Person{  void run();}class Student extends Person{  @override  void run() {    print("run...");  }}复制代码

接口

void main() {  var student = new Student();  student.run();}//class Person{//  String name;////  int get age => 18;////  void run(){//    print("Person run...");//  }//}abstract class Person{  void run();}class Student implements Person{  @override  void run() {    print("Student run...");  }}复制代码

mixins

void main() {//  var d = new D();//  d.a();}//class A{//  void a(){//    print("A.a()...");//  }//}////class B{////  void a(){//    print("B.a()...");//  }////  void b(){//    print("B.b()...");//  }//}////class Test{}//////class C{////  void a(){//    print("C.a()...");//  }////  void b(){//    print("C.b()...");//  }////  void c(){//    print("C.c()...");//  }//}////class D  extends A with C,B{////}abstract class Engine{  void work();}class OilEngine implements Engine{  @override  void work() {    print("Work with oil...");  }}class ElectricEngine implements Engine{  @override  void work() {    print("Work with Electric...");  }}class Tyre{  String name;  void run(){}}class Car = Tyre with ElectricEngine;class Bus = Tyre with OilEngine;复制代码

操作符覆写

void main() {  var person1 = new Person(20);  var person2 = new Person(20);  print(person1 > person2);  person1.age;  print(person1['age']);  print(person1 == person2);}class Person{  int age;  Person(this.age);  bool operator >(Person person){    return this.age > person.age;  }  int operator [](String str){    if("age" == str){      return age;    }    return 0;  }  @override  bool operator ==(Object other) =>      identical(this, other) ||          other is Person &&              runtimeType == other.runtimeType &&              age == other.age;  @override  int get hashCode => age.hashCode;}复制代码

7.枚举

enum

void main() {  var currentSeason  = Season.winter;  print(currentSeason.index);  switch(currentSeason){    case Season.spring:      print("1-3月");      break;    case Season.summer:      print("4-6月");      break;    case Season.autumn:      print("7-9月");      break;    case Season.winter:      print("10-12月");      break;  }}enum Season{  spring,  summer,  autumn,  winter}复制代码

8.泛型

generics

void main() {  var list = new List
(); list.add(1);// var utils = new Utils
();// utils.put(1); var utils = new Utils(); utils.put
(1);}class Utils{ void put
(T element){ print(element); }// void putString(String element){// this.elementStr = element;// }}复制代码

转载于:https://juejin.im/post/5ce12d126fb9a07f0052abb7

你可能感兴趣的文章
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
秋式广告杀手:广告拦截原理与杀手组织
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>