语言范畴\定义 | java | dart | kotlin | js JavaScript 一般用于HTML 和 Web 的编程语言。 |
日志打印 | Log.e/v/d("%s, %d") | print ? print("I am ${param1}, Hi ${param2},I am ${param3}"); | println("$s.length is ${s.length}") | 使用 window.alert() 写入警告框 使用 document.write() 写入 HTML 输出 使用 innerHTML 写入 HTML 元素 使用 console.log() 写入浏览器控制台 |
变量定义 | 基本类型和object类型定义 | var | val(final) / var | var? |
| final | final | final | final |
常量 | const | const | const | const(ES2015新增) |
顶部基类 | Object | dynamic | Object | 无顶部基类: Object Date Array String Number Boolean |
判空运算符 | if(x==null)null else x (a != null ? a : "b") | ?运算符: x?.toString() a ?? "b" | ?运算符: var a:Int? var b:Int | if(x==null)... 幂运算:**幂 |
Builder | Builder | ..运算符 final p = Person() ??? ..username = "lecon" ??? ..password = "123456" ??? ..setSex(true); | 构造函数初始化 | new Xobject() |
空类型 | Null | null | null | null |
数值 | int/double | numbers | Byte、Short、Int、Long、 Float、Double | int、short、long等 |
字符串 | String | strings | String | 'da'、"adf"、String |
bool类型 | bool | booleans true/false | Boolean true/false | boolean |
列表 | List | list | List<Int> ArrayList | ["Saab", "Volvo", "BMW"]; |
映射 | Map | map | MutableMap、HashMap、LinkedHashMap | new Map() |
函数返回简写 | String test() { ??? return "123"; } | String test ()=> "123"; | ->函数 var addFun : (Int,Int) -> Int = {a,b -> a + b} | function myFunction() { ? return "Hello"; } |
局部函数、 闭包 | 参数以引用方式传递, 可以达到相同的使用目的 | ?Function(int a) fn() { ? ? var num = 1; ? ? return (int a) { ? ? ? num += a; ? ? ? print(num); ? ? }; ? } ? var loadFn = fn(); ? loadFn(1); ? loadFn(2);? } | 局部函数和 闭包的返回和使用 当函数执行完毕后 仍然可以 通过 local 对函数的内部变量进行读写 override fun onCreate(savedInstanceState: Bundle?) { ? ? ? ? ... ? ? ? ? var num = 0; ? ? ? ? btn.setOnClickListener { ? ? ? ? ? ? num++? ? ? ? ? } ? ? } | JavaScript 变量属于本地或全局作用域。 全局变量能够通过闭包实现局部(私有)。 var add = (function () { ??? var counter = 0; ??? return function () {return counter += 1;} })();
add(); add(); |
创建对象 | new | new关键字可以省略 | ?new 类名() | new关键字可以省略 |
类型判断 | instanceof? | is | is、instanceof | typeof、instanceof |
类型转换 | (Class)object强转 | as | as | (Class)object强转 |
类初始化 | 构造函数初始化 | Class:初始化列表 | 构造函数初始化 | 构造函数初始化 |
访问权限 | private | _前缀 Dart文件之外不能访问,当前文件不同类是可以的。 | open相当于public、 fun声明默认为final修饰 | public、protected、private |
继承 | extends | extends | class Student : Person | extends |
接口 | implements/interface | mixin/with | interface class Child : MyInterface? | implements/interface、abstract |
get和set | 内部属性设置 | setter和getter语法糖 class Rectangle { ? num left, top, width, height;
? Rectangle(this.left, this.top, this.width, this.height);
? num get right => left + width; ? set right(num value) => left = value - width; ? num get bottom => top + height; ? set bottom(num value) => top = value - height; } ? | 内部属性设置 | constructor 内部属性设置 |
异常捕获 | try { ?? ? }? catch(e) { ???? ?? } finally { ??? ? } | try { ??? throw FormatException('Expected at least 1 section'); ? } on FormatException catch(e) { ???? print('section exception ${e}'); ?? } finally { ???? print("I am finally"); ???? rethrow; ? } | try catch finally | try catch finally |
内联 | 无 | Typedefs 同C++里面的内联函数 | 内联函数 | 无 |
回调 | 回调(类似于c里面的指针作用) | 回调 | 回调 | call/apply |
异步和多线程 | thread\synchronized\sleep\wait\notify | await/async Future/Stream | Future/Stream | Promise/async/await? |
其它特殊性质 | | | lateinit、by lazy | |