天天看点

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

继续阅读