首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从java到JavaScript(2):对比Java/Go/Swift/Rust看Dart

从java到JavaScript(2):对比Java/Go/Swift/Rust看Dart

原创
作者头像
周陆军博客
发布于 2023-04-09 13:39:40
发布于 2023-04-09 13:39:40
1.1K00
代码可运行
举报
文章被收录于专栏:前端博客前端博客
运行总次数:0
代码可运行

Dart与Java的一些直观区别

Dart和java以及C#都差不多,基本上不用学习可以直接使用,从这里可以你可以了解Dart有些特别之处。其实对于Java开发人员来说Dart,还是相对好理解的

基本语法对比:

关键字
  • 在 Dart 中没有诸如 public、private、protected 这样的关键词。如果一个标识符以 (_) 开头,则该标识符 在库内是私有的
  • Dart2中,可以不使用new关键字创建,也可以使用。new关键词省略,对我个人来说,还设有强制new 顺心些。
变量
  • Dart中变量初始值为null,即使是int类型也是null。
  • Dart支持自识别,可以是用var定义变量,也可以直接指定具体类型。
  • 如果你以后不打算修改一个变量,使用 final 或者 const。 一个 final 变量只能赋值一次;一个 const 变量是编译时常量。
基本类型
  • Dart中所有的类都是Object的子类。
  • int和double是num的子类。没有float类型。
  • String可以使用单引号或者双引号。
    • String支持模板,使用 ${expression} 的方式来实现字符串模板的效果,如果该表达式仅仅是一个标识符,还可以去掉花括号 $variableName。
    • 字符串前加r代表原始字符串。
  • booleans类型是bool,只包含true和false。这两个对象也是编译时常量。当Dart需要一个布尔值的时候,只有true对象才被认为true,其他都是false。
方法
  • Dart是一个真正面向对象的语言,方法也是对象并且具有一种类型Function。
  • 可以使用上文说的可选方法。
  • 支持直接设置默认参数值。
  • 所有函数都返回一个值,如果没有指定返回值,则 默认把语句 return null; 作为函数的最后一个语句执行。
  • 可以把方法当做参数调用另一个方法。
  • 方法也可以赋值给一个变量
操作符
  • ?? ,expr1 ?? expr2 如果 expr1 是 non-null,返回其值; 否则执行 expr2 并返回其结果。
  • .? ,可以避免表达式左边对象为null时候抛出异常。
  • ..,级联操作符,级联操作符 (…) 可以在同一个对象上 连续调用多个函数以及访问成员变量。——回顾jquery的链式调用,end()
  • as、 is、 和 is!,类型判定操作符
    • as 类型转换
    • is 如果对象是指定的类型返回 True
    • is! 如果对象是指定的类型返回 False

数据结构:

  • list对应的就是java里面的List,list可以像Python等语言那样使用[]进行数组操作。具体参考API
  • map对应java里面的Map,他的操作方式有点像Python。需要注意的有几点。具体参看API
    • Map的Key不能有重复的
    • 如果使用int类型作为key,取值的时候优先使用key匹配,然后是下标。
    • 取不到值不会抛异常,直接返回null
    • Map和List可以转换为Json,来回转换时深拷贝。

函数

Dart的函数比java多了几个概念。比如在参数列表里面添加个大括号,是可选命名参数;加个中括号叫可选位置参数。

  • 可选命名参数类似Python里面的**kwargs
  • 可选位置参数类似Python里面的*args
  • 可选命名参数和可选位置参数可以有默认值,普通参数不能有
  • 函数之间可以互相嵌套,互相调用,但他们都有自己作用域。
  • 若果函数简单可以使用()=> value简写。
构造函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//这样写很简单
User(this.cadence, this.speed, this.gear);

//也可以写成这样
Bicycle(int cadence, int speed, int gear) {
  this.cadence = cadence;
  this.speed = speed;
  this.gear = gear;
}

可选参数

在Dart中可以使用可选参数、无论是构造还是普通方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Book({this.money = 100, this.size = 0, this.author = null});

调用的时候要指定参数名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
main() {
  print(Book(money:100 , size: 88, author:'test'));
  print(Book(money:99,   size:100));
  print(Rectangle());
}

面向对象

一个类同名构造器只能有一个,也就是说可以给构造器起其他名字。所以可以把构造器分为默认构造器和命名构造器。

命名构造器不能自动继承,参考下面

Dart使用this代表当前对象,类似JavaScript

初始化列表

Dart有继承和接口概念,和java基本差不多,同时多了个混入的的概念minix,这个非常好理解。

minix,对于前段,react与vue框架,对这个应该非常熟悉

setter和getter

很多语言里面,为了方便获取属性都提供了setter和getter。其实他就是个语法糖。直接使用就可以。

异步

dart的异步和JavaScript ES6差不多,使用await和async,只不过ES6中的Promise变成了Future。目前比较流行的解决方案都是这个,比如Python,Kotlin都这么使用。一般在网络请求或者数据库操作时候使用,就像java的多线程基础版吧。

异步这块东西有点多,而且很重要,直接贴官方地址。https://www.dartlang.org/guides/libraries/library-tour#future

异步中有两个很重要的接口:Future和Stream。贴出地址,这两个一定要弄明白。https://www.dartlang.org/guides/libraries/library-tour#dartasync---asynchronous-programmin

Swift和Dart

推荐文章: https://blog.csdn.net/zsxjtip/article/details/104155131

Swift

java

var name: String

String name;

var age: Int

int age;

var height: Double

double age;

初始化语法如下

var name = "andy"

var name = 'andy';

类型推断

var arguments = {'argA': 'hello', 'argB': 42}; // Map<String, Object>

var arguments = [ "argA": "hello", "argB": 42 ] // [ String : Any ]

声明不可变变量

let a = 10常量声明定义常量名称和初始化表达式值之间的不可变绑定;设置常量值后,无法更改。

final a = 10;final 变量只能设置一次(变量或字段必须具有 initializer);const 变量是编译时常量。

元组

let t = ("andy", 4, 1.5)print(t.0) // prints "Andrea"

const t = const Tuple3<String, int, double>('andy', 4, 1.5);

Arrays / Lists

var emptyArray = [Int]() // empty array                var array = [1, 2, 3] // array literal

var emptyList = &lg;int>[]; // empty list                var list = [1, 2, 3]; // list literal

var emptyFruits = Set<String>()                var fruits = Set<String>(["apple", "banana"])

var emptyFruits = Set<String>();                var fruits = Set<String>.from(['apple', 'banana']); // set from Iterable

var namesOfIntegers = [Int: String]() // empty dictionary                var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"] // dictionary literal

var namesOfIntegers = Map<Int,String>(); // empty map                var airports = { 'YYZ': 'Toronto Pearson', 'DUB': 'Dublin' }; // map literal

Go与Dart

Go作为一种简单的语言,非常适合构建网络应用程序,这是正确的,如果你不需要其他功能,如泛型。

待续完善

参考文章:

Flutter开发语言Dart与Java的一些直观区别 https://blog.csdn.net/xuanguofeng/article/details/82775578

Dart对比java快速入门 https://www.jianshu.com/p/753b50594c20

Dart与Java的语法区别  https://www.cnblogs.com/hello-yz/p/12370063.html

Dart vs Swift https://blog.csdn.net/zsxjtip/article/details/104155131

Swift和Dart  https://www.jianshu.com/p/58fab0af5acc

转载本站文章《从java到JavaScript(2):对比Java/Go/Swift/Rust看Dart》, 请注明出处:https://www.zhoulujun.cn/html/webfront/AppDev/Dart/8515.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
swift Dictionary
字典是一种存储多个相同类型的值的容器。每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。字典中的数据项并没有具体顺序,我们在需要通过标识符(键)访问数据的时候使用字典。
赵哥窟
2018/09/13
1K0
『Flutter开发实战』一小时掌握Dart语言
本文将从变量和运算符开始到类和库的使用来向你介绍 Dart 编程语言的主要功能,这里假设你已经有使用其它语言进行编程的经验。
小宋是呢
2022/01/05
5.4K0
Dart 基础知识笔记
开发过程中可以使用 assert(condition , optionalMessage) 断言,检查某些条件是否为真。断言通常由工具或框架决定是否生效:
徐建国
2021/08/02
1.3K0
Dart语言基础
  var是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和java中声明变量的方式一样。
zhangjiqun
2024/12/16
2070
上手指南 | Dart,随用随查
dynamic:该类型具有所有可能的属性和方法,一个变量被 dynamic 修饰,相当于告诉系统,我知道这个类型到底是什么。使用后再编译时不会推断数据的类型,但是运行时会推断。
345
2022/02/11
2K0
上手指南 | Dart,随用随查
Dart语言详解(二)——基本语法
文档归档: https://github.com/yang0range/flutterfile
Demo_Yang
2020/03/11
1.3K0
Dart语言基础语法(一)
前言 环境准备 安装Dart SDK 配置环境变量 配置 VSCode 编辑器 测试环境 基础语法 代码注释 内置数据类型 变量与常量 定义变量 定义常量 内置类型的常用操作 数值类型 字符串 布尔类型 列表 映射 函数 定义函数 函数的参数 命名可选参数 位置可选参数 匿名函数 箭头函数 运算符 算术运算符 类型判定运算符 条件表达式 级联运算符 条件成员访问符 分支与循环 条件分支 循环语句 基本循环 特有循环 Flutter课程已上线 Flutter 全栈开发之Dart编程指南 https://
arcticfox
2019/09/17
2.8K0
Dart语言基础语法(一)
前端转Flutter - 对照Javascript学Dart
最近在学flutter,发现flutter的编程语言Dart和Javascript有诸多相似,对于前端开发者而已好处在于有JavaScript经验学习Dart会快一些,缺点在于容易搞混这两种语言。因此在学习的过程中记录了一下Javascript和Dart的对比,方便记忆。
MudOnTire
2019/10/15
3.2K0
老司机用一篇博客带你快速熟悉Dart语法
版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/3d927a7bf020
AWeiLoveAndroid
2018/09/03
3.5K0
【Dart语言解密】想要深入了解Dart语法和类型变量吗?
快来读读这篇文章吧!本文从Dart信息表示的角度出发,详细讲解了Dart的基础语法和类型变量。通过本文的学习,你将会对Dart语言有更深入的认识和理解,更好地掌握Dart的开发技巧和实践应用。快来一起解密Dart语言吧!
JavaEdge
2023/07/09
5170
【Dart语言解密】想要深入了解Dart语法和类型变量吗?
Java官方笔记4类和对象
定义了类MyClass继承类MySuperClass,并实现接口YourInterface。类只能有一个父类,但是能实现多个接口。
dongfanger
2023/06/10
2950
Java官方笔记4类和对象
为 JavaScript 开发人员准备的 Dart 参考教程
Dart 是 Flutter 主要的开发语言,这一篇文章主要为 JavaScript 开发人员准备的 Dart 教程,我会用很详细的对比来参考,力争 JavaScript 开发人员可以快速的熟练使用 Dart,为使用 Flutter 做好准备;
icepy
2019/06/24
6550
为 JavaScript 开发人员准备的 Dart 参考教程
Flutter 入门指北之 Dart
原文:https://www.jianshu.com/p/8ddb16902ce6
陈宇明
2020/12/16
9610
Swift基础类型[通俗易懂]
假设初始值没有提供足够的信息(或者没有初始值),那你须要在变量后面声明类型,用冒号切割。
全栈程序员站长
2022/07/10
1.1K0
Flutter--Dart学习
2011年10月公开。它的开发团队由Google Chrome浏览器V8引擎 (JavaScript引擎)")团队的领导者拉尔斯·巴克主持,目标在于成为下一代结构化Web开发语言。 2014年7月,ECMA的第107次全体大会通过了第一版Dart语言规范 Dart中文网 Dart官网
None_Ling
2018/10/24
1.1K0
Swift基础 集合类型
翻译自:https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html
郭顺发
2023/07/17
6300
Swift基础 集合类型
Dart 概览
元数据注解是以 @ 字符开头,后面是一个编译时 常量(例如 deprecated)或者 调用一个常量构造函数。
前端GoGoGo
2019/07/01
9160
flutter--Dart基础语法(一)注释、变量、数据类型、运算符
Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,Flutter 开源、免费,拥有宽松的开源协议,支持移动、Web、桌面和嵌入式平台。
mukekeheart
2021/02/04
3.3K0
flutter--Dart基础语法(一)注释、变量、数据类型、运算符
Java 中文官方教程 2022 版(二)
现在你已经学会了如何声明和初始化变量,你可能想知道如何对其进行操作。学习 Java 编程语言的运算符是一个很好的开始。运算符是执行特定操作的特殊符号,作用于一个、两个或三个操作数,然后返回一个结果。
ApacheCN_飞龙
2024/05/24
3780
Flutter Lesson 2: Dart 语法简单介绍
Dart语法【Dart中文】可以说是Google因为为Flutter量身定做的一门语言,所以,我们之前基本上都没有接触过这门语言,在入手Flutter坑的时候,还必须了解一下Dart的语言特性。
踏浪
2019/07/31
2K0
Flutter Lesson 2: Dart 语法简单介绍
相关推荐
swift Dictionary
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验