Java和Dart的区别

1.新增了箭头函数 =>

2.函数参数,可以是一个函数

3.函数可以赋值给一个变量

4.新增了命名构造函数

Person.xxx   

这样可以方便定义各种构造函数,不用通过传入的参数,来区分各种构造函数

5.Dart没有 public private 这些属性修饰符

把方法或者属性,定义成私有,在前面加下划线_

但是注意的是,这个类,需要在另外一个文件里面,通过import引入进来的。否则还是可以被访问到。

私有属性:

String name;  变为: String _name;   

而不是 _ String  name

私有方法:

void run     变为:  void _run

而不是 _void run 

6. 类型转换,变为  as

var p1="123";

p1 as Object;

7.类型判断 变为 is

Person p;

if(p is Person){

}

8.新增问号,加上就空安全了 ?

Person p;

p?.run();

这个时候,就不会报错。

9.新增类型断言,感叹号表示 !

如果是空安全的变量,加上!,这样为空的话,就可以抛出异常

10.新增级联操作符,两个点..

作用就是可以连续写,一个对象写一次

Person p;

p.name="x1";

p.age=1;

变为:

Person p;

p..name="x1"

 ..age=1;

11.接口

dart的接口没有interface关键字定义接口,一般如果要实现像Java接口那样的方式,一般会使用抽象类。
建议使用抽象类定义接口。

12.新增 mixins,类似多继承

class c with A,B{

}

这样就有了A 和 B里面的方法

13.泛型

T getData<T>(T value){

return value;

}

调用:

getData<int>(12);

这样可以传入不特定类型,也限制了不特定类型。

14.引入库

 a.自定义库

import 'lib/xxx.dar';

b.系统内置库

import 'dart:io';

c.第三方库,使用pub包管理器

1.项目根目录新建 pubspec.yaml

2.里面加入想要的依赖

3.运行pub get

4.引入

import 'package:http/http.dart' as http;

15.增加await、async、Future,做异步任务

async只是用来表示,方法里面有异步,没有其他暖用。

await,表明这个是个异步方法。

16.新增late,延迟初始化属性

比如类有一个 String name;如果你不在构造函数初始化它,那么就必须改为:

late String name;

表示我一会儿再去初始化。

17.新增required,表示有些可变参数,允许是空值。如果不加,这些参数必须先赋值才行。

void printInfo(String username,{int age,String sex}){

}

上面这样会报错。

必须改为下面这样:

void printInfo(String username,{required int age,required String sex}){

}

16. 可以在class外定义变量,方法等

17.创建对象,new可选

18.Dart 所有变量如果未初始化都为 null ,不像 java int 的默认值是 0, boolean 的默认值是 false

19.构造函数简化

class Rectangle {

  num width;
  num height;

  Rectangle({this.width = 0, this.height = 0});

}

20.字符串可用单引号或者双引号

21.工厂构造函数 => 在抽象类中定义工厂函数,规定子类实例化方式

abstract class Shape {
  //factory constructor
  factory Shape(String type){
    if(type == 'circle') return Circle(10);
    if(type == 'square') return Square(10);
    throw 'can\'t create $type';
  }
  num get area;
}

22.函数无需声明可能抛出的异常类型

23.捕获异常

try {
  // ···
} on Exception catch (e) {
  print('Exception details:\n $e');
} catch (e, s) {
  print('Exception details:\n $e');
  print('Stack trace:\n $s');
}finally{
}

24.动态类型 Dart 还有dynamic 关键字

25.

没有float类型,int和double都是num的子类

26.

27.没有数组只有列表

28.

29. 

30.

31.

32.

 

33.

34. 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值