dart会代替java吗_dart基础:和java的简单区别

基本数据类型

Dart中支持以下数据类型:

Numbers

Strings

Booleans

List(也就是数组)

Maps

num有2个子类型,int和double.

控制流程

循环,if esle,switch case,try catch等等和java相差不大,有些细微差异,可以在使用时深入了解。

final和const

const和final定义的都是常量,值不能改变,并且在声明的时候就必须初始化。

但是也有细微差别,简单来说

const定义的是编译时常量,只能用编译时常量来初始化

final定义的常量可以用变量来初始化

final time = new DateTime.now(); //Ok

const time = new DateTime.now(); //Error,new DateTime.now()不是const常量

关于类和对象

dart中所有的基础类型、函数、类等等都是继承自Object,默认值是null,可以调用自有的方法。

类的定义使用class关键字,创建对象使用new关键字,创建不可变对象需要使用const关键字

每个字段都对应一个隐式的Getter和Setter,你可以使用get和set关键字扩展功能,如果字段为final或者const的话,那么它只有一个getter方法

抽象类

在Dart中类和接口是统一的,类就是接口。如果你想重写部分功能,那么你可以继承一个类,如果你想实现某些功能,那么你也可以实现一个类。

使用abstract关键字来定义抽象类,并且抽象类不能被实例化,抽象方法不需要关键字,直接以分号;结束即可。

注意:当使用implements的时候,子类需要重写父类的成员变量和方法,包括私有的成员和方法.

函数

函数和java成员方法有些区别,但是基本写法差不多,下面是简单的例子

String sayHello(String name){

return 'Hello $name!';

}

当没有指定返回值时,默认返回null,如果能推断类型,可以省略返回类型。但是建议写入参类型和返回类型,这样方便阅读和维护。

如果函数体只有一条表达式,可以使用箭头语法,=>expr;

于是上面的代码可以写成这样:

sayHello(name) => 'Hello $name!';

还可以定义匿名函数:var sayHello = (name)=>'Hello $name!';

函数闭包

核心就是理解函数也是对象,可以作为函数的返回类型。

Function makeSubstract(num n){

return (num i) => n - i;

}

void main(){

var x = makeSubstract(5);

print(x(2));

}

可选参数

dart中支持命名可选参数和位置可选参数,但是不能同时混用。

命名可选参数使用大括号{},默认值用冒号:

位置可选参数使用方括号[],默认值用等号=

注意:命名可选参数在sdk1.2.1之后可以使用冒号‘:’和等号‘=’来赋值默认值。

函数别名

可以使用typedef来定义函数,这样可以使用这个名字来关联该函数。

typedef int Compare(int a, int b);

int sort(int a, int b) => a - b;

main() {

assert(sort is Function);

assert(sort is Compare);

}

总结

从基础语法和使用习惯来看和java差别很小,当然更深入的差别有待继续学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值