天天看點

21. Kotlin學習筆記 (一) 基本文法

如果用Help->Eclipse marketplace安裝不成功的話,可以用Help->Install new software

<a href="https://github.com/JetBrains/kotlin" target="_blank">kotlin github源代碼</a>

<a href="http://kotlinlang.org/docs/reference/whatsnew11.html" target="_blank">kotlin官網和線上執行代碼</a>

個人覺得學習kotlin文法的話,用eclipse可能比較友善點,直接寫直接運作。

1. package

<code>package</code> <code>my.demo</code>

<code>import</code> <code>java.util.*</code>

2. 函數定義

fun函數有兩個Int參數和一個Int傳回值

<code>fun sum(a: Int, b: Int): Int{</code>

<code>    </code><code>return</code> <code>a + b</code>

<code>}</code>

函數表達式和傳回值

<code>fun sum(a:Int, b: Int) = a + b</code>

Unit 函數無傳回值

<code>fun sum(a: Int, b: Int):Unit {</code>

<code>    </code><code>println(</code><code>"a: ${a} , b: ${b}"</code><code>)</code>

無傳回值函數

<code>fun sum1(a: Int, b: Int){</code>

<code>    </code><code>println(</code><code>"aa: ${a}, bb: ${b}"</code><code>)</code>

3. 局部變量

不可變局部變量(val)

<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>var x = </code><code>5</code>

<code>x += </code><code>1</code>

4. 注釋

// 和 /**/

5. String 模闆

<code>var a = </code><code>1</code>

<code>val s1 = </code><code>"a is ${a}"</code>

<code>a = </code><code>2</code>

<code>val s2 = </code><code>"${s1.replace("</code><code>is</code><code>", "</code><code>was</code><code>")}, but now is ${a}"</code>

6. 條件表達式

<code>fun maxOf(a: Int, b: Int): Int{</code>

<code>    </code><code>if</code><code>(a &gt; b) {</code>

<code>        </code><code>return</code> <code>a</code>

<code>    </code><code>}</code><code>else</code> <code>{</code>

<code>        </code><code>return</code> <code>b</code>

<code>    </code><code>}</code>

使用if表達式

<code>fun maxOf(a:Int, b: Int) = </code><code>if</code><code>(a &gt; b) a </code><code>else</code> <code>b</code>

7. 使用可為null的值和null檢查

一個引用必須被明确标記為可能為null

<code>fun maxOf(a:Int, b: Int): Int? {</code>

<code>    </code><code>println(</code><code>"a: ${a}"</code><code>)</code>

<code>    </code><code>return</code> <code>null</code>

8. 類型檢查和動态轉換

<code>fun getStringLength(obj: Any): Int? {</code>

<code>    </code><code>if</code> <code>(obj is String) {</code>

<code>        </code><code>return</code> <code>obj.length</code>

<code>    </code> 

9. 循環

<code>val items = listOf(</code><code>"a"</code><code>, </code><code>"b"</code><code>, </code><code>"c"</code><code>, </code><code>"e"</code><code>)</code>

<code>for</code><code>(zz in items) {</code>

<code>    </code><code>println(zz)</code>

<code>}  </code>

<code>//或者</code>

<code>val items = listOf(</code><code>"a"</code><code>, </code><code>"b"</code><code>, </code><code>"c"</code><code>, </code><code>"e"</code><code>, </code><code>"f"</code><code>)</code>

<code>    </code><code>for</code><code>(idx in items.indices) {</code>

<code>        </code><code>println(items.get(idx))</code>

<code>        </code><code>println(</code><code>"value: ${items[idx]}"</code><code>)</code>

10. while 循環

<code>var ind = </code><code>0</code>

<code>while</code><code>(ind &lt; items.size) {</code>

<code>    </code><code>println(</code><code>"value: ${items[ind]}"</code><code>)</code>

<code>    </code><code>ind ++;</code>

11. when 表達式

<code>fun descrbe(obj: Any): String =</code>

<code>when (obj) {</code>

<code>    </code><code>1</code> <code>-&gt; </code><code>"one"</code>

<code>    </code><code>"Hello"</code> <code>-&gt; </code><code>"greeting"</code>

<code>    </code><code>else</code> <code>-&gt; </code><code>"else default"</code>

12. 範圍

檢查一個數字是否在一個範圍時可以使用in

<code>val x = </code><code>10</code>

<code>val y = </code><code>8</code>

<code>if</code><code>(x in </code><code>1</code><code>.. y+</code><code>1</code><code>) {</code>

<code>    </code><code>println(</code><code>"x in..."</code><code>)</code>

<code>}</code><code>else</code> <code>{</code>

<code>    </code><code>println(</code><code>"not in"</code><code>)</code>

檢查一個數字不在一個範圍

<code>if</code> <code>(x !in </code><code>1</code><code>..y+</code><code>1</code><code>) {</code>

<code>    </code><code>println(</code><code>"b not in "</code><code>)</code>

<code>    </code><code>println(</code><code>"b x in"</code><code>)</code>

疊代一個範圍

<code>for</code><code>(x in </code><code>1</code><code>..</code><code>5</code><code>) {</code>

<code>    </code><code>println(x)</code>

級數周遊一個範圍

<code>for</code><code>(x in </code><code>1</code><code>..</code><code>5</code> <code>step </code><code>2</code><code>) {</code>

13. 使用集合

周遊

<code>var lists = listOf(</code><code>"a"</code><code>, </code><code>"b"</code><code>, </code><code>"c"</code><code>)</code>

<code>    </code><code>for</code><code>(ele in lists){</code>

<code>    </code><code>println(ele)</code>

使用in檢查某個元素是否在某個集合

<code>when {</code>

<code>    </code><code>"a"</code> <code>in lists -&gt; println(</code><code>"a in list"</code><code>)</code>

<code>    </code><code>"b"</code> <code>in lists -&gt; println(</code><code>"b in list"</code><code>)</code>

使用lambda文法過濾集合

<code>var lists = listOf(</code><code>"acake"</code><code>, </code><code>"apple"</code><code>, </code><code>"orange"</code><code>)</code>

<code>    </code><code>lists.filter { x-&gt;x.startsWith(</code><code>"a"</code><code>) }</code>

<code>    </code><code>.sortedBy { it }</code>

<code>    </code><code>.map { x-&gt;x.toUpperCase() }</code>

<code>    </code><code>.forEach{println(it)}</code>

     本文轉自rongwei84n 51CTO部落格,原文連結:http://blog.51cto.com/483181/1931412,如需轉載請自行聯系原作者

繼續閱讀