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. 【HTML5】video 标签禁用自带的下载按钮

    h5自带的 video标签 ,会有个下载按钮,有时候想避免,就可以利用样式的方法 <style type="text/css"> video::-internal-me ...

  2. LeetCode - Subarray sum equals k

    Given an array of integers and an integer k, you need to find the total number of continuous subarra ...

  3. No Ads for Blogs

    最近浏览器出问题了还是博客园登录的问题. 每次进入自己博客都要输入密码. 然后进入某一篇博文查看时,底部总会有些垃圾广告. 怎么办呢. 好吧,真抱歉,为了营造良好的阅读环境,只好给你屏蔽掉了. 其实也 ...

  4. Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,java 判断请求是不是ajax请求   Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 java ...

  5. Linux下的搜索查找命令的详解(find)

    4.find Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项 ...

  6. codechef cook 103 div2

    第一次打codechef...不太会用这oj. A: #include <bits/stdc++.h> #define mk(a,b) make_pair(a,b) #define pii ...

  7. js 函数中的this

    资料 function 函数 没有"this"的持久概念, 调用函数时,创建this function hello(thing) { console.log(this + &quo ...

  8. Logcat

    logcat -- "-s"选项 : 设置输出日志的标签, 只显示该标签的日志; -- "-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参 ...

  9. HTML经典模板总结(地址)

    HTML经典模板总结 地址:http://download.csdn.net/tag/html%E6%A8%A1%E6%9D%BF?from=singlemessage

  10. MySQL 添加索引,删除索引及其用法

    一.索引的作用 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 在数据 ...