Android studio3.0以上
android studio新建kotlin项目的时候,会自动将gradle关于kotlin的环境配置好,不过在kotlin官方网站也有gradle配置的教程。
Kotlin怎么学
mapped types:掌握java数据类型对应kotlin中的哪些数据类型 (page151)
变量的定义不同
var 变量名: 变量类型
<code>val a: Int = </code><code>1</code> <code>// immediate assignment</code>
<code>val b = </code><code>2</code> <code>// `Int` type is inferred</code>
<code>val c: Int </code><code>// Type required when no initializer is provided</code>
<code>c = </code><code>3</code> <code>// deferred assignment</code>
var代表变量,val代表常量。
3.定义List和Map,相当简单 (page23)
4.类和对象 (page 41)
1)实例化对象不需要new 关键字
5.方法复写需要override关键字
Kotlin哪些地方让人很爽
基本数据类型自带 (page 29)
toType,转各种类型。
plus,连接方法
还可以给数据类型定义指定的方法
<code>fun String.spaceToCamelCase() { ... }</code>
<code>"Convert this to camelcase"</code><code>.spaceToCamelCase()</code>
2.在引号里就可以直接操作变量(有点像php的语法)
<code>fun printSum(a: Int, b: Int) {</code>
<code> </code><code>println(</code><code>"sum of $a and $b is ${a + b}"</code><code>)</code>
<code>}</code>
控制台打印:System.out: sum of 3 and 5 is 8
想想一下在java里打印上面的一句话,得要多少个引号,多么的蛋痛!
3.语法简洁
1)
<code>fun maxOf(a: Int, b: Int) = </code><code>if</code> <code>(a > b) a </code><code>else</code> <code>b</code>
java的话得多{}和return以及;
2)当不为null执行一段代码
<code>val data = ...</code>
<code>data?.let {</code>
<code>... </code><code>// execute this block if not null</code>
3.with 执行一个对象的多个方法
4.java 7 读写文件 (但是要求API 26)
<code>val stream = Files.newInputStream(Paths.get(</code><code>"/some/file.txt"</code><code>))</code>
<code>stream.buffered().reader().use { reader -></code>
<code>println(reader.readText())</code>
4.变量+?控制变量是否可以为null
5.Loop (page:20)
6.when分支判断很强大
7.in range判断(page:21)
<code>for</code> <code>(i in </code><code>1</code><code>..</code><code>100</code><code>) { ... } </code><code>// closed range: includes 100</code>
<code>for</code> <code>(i in </code><code>1</code> <code>until </code><code>100</code><code>) { ... } </code><code>// half-open range: does not include 100</code>
<code>for</code> <code>(x in </code><code>2</code><code>..</code><code>10</code> <code>step </code><code>2</code><code>) { ... }</code>
<code>for</code> <code>(x in </code><code>10</code> <code>downTo </code><code>1</code><code>) { ... }</code>
<code>if</code> <code>(x in </code><code>1</code><code>..</code><code>10</code><code>) { ... }</code>
8.集合链式写法(有点RxJava的感觉)
<code>val items = listOf(</code><code>"apple"</code><code>, </code><code>"banana"</code><code>, </code><code>"kiwi"</code><code>,</code><code>"agelababy"</code><code>)</code>
<code>items.filter { it.startsWith(</code><code>"a"</code><code>) }</code>
<code> </code><code>.sortedBy { it }</code>
<code> </code><code>.map { it.toUpperCase() }</code>
<code> </code><code>.forEach { println(it) }</code>
9.优雅的嵌套循环break,再也不用自己写什么标记控制了。
Kotlin哪些地方让人头痛
访问作用域/类修饰词/继承
本文转自屠夫章哥 51CTO博客,原文链接:http://blog.51cto.com/4259297/1964591,如需转载请自行联系原作者