Dart基础入门语法介绍,详细说明可以查看相关视频《Dart编程语言入门》

变量与常量

变量

1.使用 var 声明变量,默认值为 null

var a;//null
a = 10;

2.显示类型声明

int a;//null
a = 10;

3.使用 var 声明,可赋予不同类型的值

var a; //null
a = 10; //int
a = "Dart"; //string

4.使用 final 声明只能赋值一次的变量

final a = 30;
a = 10; //Error

常量

使用 const 声明编译期常量

const a = 10;

数据类型

数值型

Dart中使用 num 表示数值型,子类只有两种:int 和 double,分别表示整型和浮点型。
1.使用 num 声明的类型既可以接收整型,也可以接收浮点型;

num a = 10; //int
a = 12.5; //double

2.使用 int 声明整型;

int a = 10;

3.使用 double 声明浮点型

double a = 10.5;

4.常用属性和方法(更多可查看相关api)

int a = 30;
a.isEven;//是否偶数
a.isOdd; //是否奇数
a.abs();// 绝对值
a.toDouble();//转换为浮点型
... int b = 10.5;
b.toInt();//转换为整型
b.round(); //四舍五入,11
b.floor(); //不大于b的最大整数,10
b.ceil(); //不小于b的最小整数,11
...

字符串

Dart中使用 String 表示字符串。
1.使用 单引号 或 双引号 创建字符串;

String str = "Dart";

String str = 'Dart';

2.使用 三个单引号 或 三个双引号 创建多行字符串;

String str = '''Hello
Dart'''; String str = """Hello
Dart""";

3.使用 r 创建原始字符串

String str = r'Hello \n Dart'; // "\n"不会被转义

4.插值表达式
使用 ${ } 表示插件表达式,单个变量可省略 { }。

int a = 1;
int b = 2;
print("a + b = ${a + b}");

5.常用属性和方法(更多可查看相关api)

str.length;//字符串长度
str.isEmpty;//是否为空
... str.contains('xxx');//是否包含xxx
str.substring(0,3);//截取前三个字符
str.startsWith('xxx‘);//是否以xxx开头
str.split(",");//以,分隔字符串,返回数组
...

布尔型

Dart中使用 bool 表示布尔型。布尔型的值只有 true 和 false。

bool isTrue = true;
bool isFalse = false;

List body ol,body ul{margin:0;padding:0;}body .list-paddingleft-1{padding-left:0} body .list-paddingleft-2{padding-left:20px} body .list-paddingleft-3{padding-left:40px}

Dart中使用 List 表示列表,它和数组是同一概念。

1.创建List,使用 const 创建不可变的List

var list = [1, 2, 3];

//创建不可变的List
var list = const[1, 2, 3]; //使用类创建
var list = new List();

2.常用属性和方法(更多可查看相关api)

  • 获取元素个数
list.length;
  • 判断是否为空
list.isEmpty;

list.isNotEmpty;
  • 添加元素
list.add('xxx');

list.insert(index,'xxx'); //在下标位置添加元素
  • 删除元素
list.remove('xxx');

list.clear(); //清空list
  • 修改元素
list[0] = 'xxx'; //修改下标为0的元素值为xxx
  • 查询元素
list[0];//获取第一个元素,下标从0开始
  • 其它
list.indexOf('xxx');//查询元素xxx,返回下标,不存在返回-1

list.sort(); //排序

list.subList(start,end);//获取从子列表

list.forEach(); //遍历list
...

Map

Dart中使用 Map 表示key-value键值对。

1.创建Map,使用 const 创建不可变的Map

var map = {'first':'Java','second':'Dart'};

//创建不可变的Map
var map = {'first':'Java','second':'Dart'}; //使用类创建
var map = new Map();

2.常用属性和方法(更多可查看相关api)

  • 获取元素个数
map.length;
  • 判断是否为空
map.isEmpty;

map.isNotEmpty;
  • 添加元素
map['third'] = 'JavaScript'; //添加key为thrid,value为JavaScript的元素
  • 删除元素
map.remove('third'); //删除key为third的元素

map.clear(); //清空map
  • 修改元素
map['first'] = 'C++'; //修改key为first的value为C++
  • 查询元素
map['first'];//获取key为first的value
  • 其它
map.keys; //获取map所有的key

map.values; //获取map所有的value

map.containsKey('first'); //map是否包含key为first的元素

map.containsValue('Java'); //map是否包含value为Java的元素

map.forEach(); //遍历map
... map相加 .List相加.===========================================>
Map a = {'a':1, 'b':2};
Map b = {'c':3, 'd':4};
// print(a+b);
List c = [1,2,3];
var d = [4,5];
// print(c+d);
a.addAll(b);
print(a);




运算符

Dart中的很多运算符和其它语言是相似的,个别不同用法会详细说明。

算术运算符

  • 加减乘除: + , - , * , / , ~/ , %

“/” 运算符结果为浮点型;
"~/" 运算符为求整,类似Java中的"/";
"%"运算符为求余;

  • 递增递减: ++var , var++ , --var , var–

关系运算符

关系运算符包括:== , != , > , < , >= , <=

"=="运算符只是判断内容是否相同。

逻辑运算符

逻辑运算符包括:! , && , ||

赋值运算符

  • 基础运算符: = , ??=

“??=” 表示左侧变量为空时进行赋值,否则不赋值

int a;
a ??= 5; // a = 5 int a = 10;
a ??= 5; //a = 10
  • 复合运算符: *+= , -= , = , /= , %= , ~/=

条件运算符

  • 三目运算符: condition ? expr1 : expr2
  • ??运算符: expr1 ?? expr2

"??"运算符表示如果expr1为null,则使用expr2的结果,否则使用expr1

String a = "Dart";
String b = "Java";
String c = a ?? b; //c = "Dart" String a;
String b = "Java";
String c = a ?? b; //c = "Java"

控制流

if语句

if语句和其它语言类似。

if(condition1){
//...
if(condition2){
//...
}
} else if(condition3){
//...
} else {
//...
}

for语句

var list = [1,2,3,4,5];

for(var index = 0;index < list.length;index++){
print(list[index]);
}

for…in语句

for(var item in list){
print(item);
}

while语句

int count = 0;

while(count < 5){
print(count++);
}

do…while语句

do{
print(count--);
}while(count > 0 && count < 5);

break和continue

break:终止当前循环;
continue:跳出当前循环,继续下一次循环;

switch语句

switch语句支持num、String、编译期常量、对象和枚举。

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");
}

支持使用continue跳转标签:

switch(language){
Test:
case "Dart":
print("Dart is my favorite");
break;
case "Java":
print("Java is my favorite");
continue Test;
case "Python":
print("Python is my favorite");
break;
default:
print("None");
}

assert语句

assert条件表达式为false时会抛出异常。

assert(str != null);

方法

方法声明

返回类型   方法名(参数1,参数2,....){
方法体…
return 返回值
}
  • 方法也是对象,并且有具体类型Function;
  • 返回值类型、参数类型都可省略;
void printPerson(String name,int age){
print("name=$name,age=$age");
} printPerson(name,age){
print("name=$name,age=$age");
}
  • 方法都有返回值。如果没有指定返回类型,默认return null最后一句执行;
printPerson(String name,int age){
print("name=$name,age=$age");
//return null;
}
  • => 语法,适用于方法体只有一个表达式的情况;
printPerson(String name,int age) => print("name=$name,age=$age");

可选参数

  • 可选命名参数,调用时使用名称传值。
printPerson(String name,{int age,String gender}){
print("name=$name,age=$age,gender=$gender");
} //方法调用
printPerson("李四",age: 20);
printPerson("李四",age: 20,gender: "Male");
  • 可选位置参数,调用时根据参数位置传递对应类型。
printPerson2(String name,[int age,String gender]){
print("name=$name,age=$age,gender=$gender");
} //方法调用
printPerson2("张三",18);
printPerson2("张三",18,"Female");
  • 如果存在具体参数,可选参数声明,必须在参数后面

默认参数值

在可选参数中可以使用默认参数值,默认参数值必须是编译期常量。

printPerson(String name,{int age = 30,String gender = "Female"}){
print("name=$name,age=$age,gender=$gender");
}

方法对象

Dart中一切都对象,包括方法。所以方法也可以作为对象赋值给其它变量,也可以作为参数传递给其它方法。

  • 方法赋值给其它变量
void printHello(){
print("Hello");
} Function func = printHello;
func();
  • 方法作为参数传递
//第二参数是一个方法
List listTimes(List list ,String t(str)){
for(var index = 0;index < list.length;index++){
list[index] = t(list[index]);
} return list;
} String times(str){
return str*3;
} //方法作为参数调用
var list2 = ["h","e","l","l","o"];
print(listTimes(list2, times));

匿名方法

匿名方法没有具体的名称,和方法有相同的特性,也是对象,也可作为变量赋值和参数传递。

  • 匿名方法声明
(参数1,参数2,….){
方法体…
return 返回值
}
  • 匿名方法赋值
var func = (str){
print("Hello---$str");
}; func(30);
  • 匿名方法作为参数
List listTimes(List list ,String times(str)){
for(var index = 0;index < list.length;index++){
list[index] = times(list[index]);
} return list;
} //使用匿名方法传递参数
var result = listTimes(list2, (str){ return str * 3;});

闭包

  • 闭包是一个方法(对象);
  • 闭包定义在其它方法内部;
  • 闭包能够访问外部方法内的局部变量,并持有其状态
//该方法返回一个闭包
a(){
int count = 0; return (){
print(count++);
};
} //闭包的调用可以访问局部变量count
var func = a();
func();
func();
func();
func();

Dart编程语言入门的更多相关文章

  1. Apple Swift编程语言入门教程

    Apple Swift编程语言入门教程 作者: 日期: 布衣君子 2015.09.22 目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 ...

  2. Dart编程语言从基础到进阶1

    Dart编程语言从基础到进阶Dart的语言的发展史以及Dart能做什么未来发展怎么样等等问题我们在这里是不讨论的.我相信既然选择了来学习它,那你内心基本已经认可了它,所以我们废话不多说直接进入主题. ...

  3. [转]Swift 编程语言入门教程

    今天在网上看到一篇非常好的教程,分享给大家 原文地址:http://gashero.iteye.com/blog/2075324 目录 1   简介 2   Swift入门 3   简单值 4   控 ...

  4. Apple Swift编程语言入门

    1   简单介绍 今天凌晨Apple刚刚公布了Swift编程语言,本文从其公布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS&a ...

  5. Dart语言入门(一)

    Dart 语言介绍 Dart 是谷歌在 2011 年推出的编程语言,是一种结构化 Web 编程语言,允许用户通过 Chromium 中所整合的虚拟机(Dart VM)直接运行 Dart 语言编写的程序 ...

  6. Swift 编程语言入门教程

    1   简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的iOS& ...

  7. [转] Julia 高性能动态编程语言入门

    本文共 851字,阅读大约需要 3分钟 ! 概 述 Julia 是一个 "全新"的高性能动态编程语言,前两天迎来了其 1.0 正式版的重大更新.Julia集 Python.C.R. ...

  8. dart快速入门教程 (8)

    9.dart中的库 9.1.自定义库 自定义库我们在前面已经使用过了,把某些功能抽取到一个文件,使用的时候通过import引入即可 9.2.系统内置库 以math库为例: import "d ...

  9. dart快速入门教程 (7.4)

    7.12.多态 多态字面上理解就是多种状态,通俗的说,多态表现为父类定义一个方法不去实现,子类继承这个方法后实现父类的方法,这个方法有多种表现 // import 'person.dart'; voi ...

随机推荐

  1. ratio_to_report 分析函数求占比

    drop table test; create table test ( name varchar(20), kemu varchar(20), score number  ); insert int ...

  2. C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子

    C#WinForm父级窗体内Panel容器中嵌入子窗体.程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点 主窗体窗体采用 ...

  3. 关于微信里wx.getUserInfo获取用户信息都是拼音的转成中文方法

    加一个参数:lang:"zh_CN" 就可以了  1.  加在js里面 wx.getUserInfo({ lang:"zh_CN", success: func ...

  4. WordCount扩展

    码云地址:https://gitee.com/xjtsh/ExpandedWordCount 功能实现: wc.exe -c file.c     //返回文件 file.c 的字符数 wc.exe ...

  5. IIS多个应用程序共享Session

    在应用程序目录下面添加一个Global.asax文件,在文件中添加以下代码: public override void Init() { base.Init(); foreach (string mo ...

  6. 泡泡一分钟:Cubic Range Error Model for Stereo Vision with Illuminators

    Cubic Range Error Model for Stereo Vision with Illuminators 带有照明器的双目视觉的三次范围误差模型 "链接:https://pan ...

  7. Consul的应用

    Consul在集群上的每一个节点(包括Server和Client)都运行一个Agent,通过这个Agent可以进行对Consul所提供的功能的操作,通过调用一系列HTTP API与Agent的交互即可 ...

  8. The way to unwind the stack on Linux EABI

    I. probe the stack frame structure The original idea is to unwind the function call stack according ...

  9. 获取子字符串函数MidStr

    MidStr返回指定范围内的字符串.该函数有三个参数.第一个参数为源字符串,第二个参数为起点(下标从1开始),第三个参数为结束点.通过第二.第三个参数则可指定要复制字符串的范围. function M ...

  10. vue-property-decorator 提供 OO 的风格 Vue Component 方便类型声明

    @Prop  父子组件之间传值 Install: npm install --save vue-property-decorator Child: <template> <div&g ...