天天看点

Kotlin

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 &gt; 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 -&gt;</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,如需转载请自行联系原作者

下一篇: WebService