https://try.kotlinlang.org這個(gè)可以運(yùn)行Kotlin代碼塊
1 .在Kotlin中創(chuàng)建集合
val set= hashsetOf(1,5,6)
val list = arrayListOf(1,6,45);
val map = hashMapOf( 1 to "one",? 5 to "five" ,53 to "fifty-three" )
Kotlin 中JavaClass 等價(jià)于 Java的getClass()
>>>printLn(list.javaClass)? ? ----->>> class java.util.Arraylist
Kotlin 中 可以獲取一個(gè)列表的最后的元素list.last()和最大元素list.max()
2. Kotlin函數(shù)中可以顯示地表明參數(shù)名稱。 但是在Java的函數(shù)中不能采用命名參數(shù)。
kotlin中可以聲明默認(rèn)參數(shù)值的函數(shù)。
fun <T> joinToString( collection : Collection<T>, separator : String=" ,"? ,prefix : String = "", postfix : String = "") :String?
上面的就是有默認(rèn)值得函數(shù)。調(diào)用這個(gè)函數(shù)可以省略掉部分參數(shù) 。但是沒有申明參數(shù)調(diào)用只能省略末尾的參數(shù),如果申明命名參數(shù)可以省略一些中間的一些參數(shù)
>>> jionToString(list,? ","? ,? " " , " ")
>>>jionToString(list)
3.Kotlin中可以把函數(shù)直接放到代碼文件的頂層,不用從屬于任何類。這些函數(shù)依然是包內(nèi)成員,如果你要從外部訪問它,則需要import。修改頂層函數(shù)的名稱需要給這個(gè)文件添加@JvmName的注解
頂層屬性:和函數(shù)一樣,屬性也可以放到文件的頂層。默認(rèn)情況下頂層屬性是通過服務(wù)器暴露給Java使用的(如果是val就只有一個(gè)getter,如果是var就對應(yīng)一對getter和setter)
const 用法 : const等同于Java的public static final?
const val UNIX="\n" 等同于Java的 public static final String UNIX="\n"
4. 擴(kuò)展函數(shù)和屬性
擴(kuò)展函數(shù)就是一個(gè)類的成員函數(shù),不過定義在類的外面。你只要把擴(kuò)展的類和接口的名稱,放到即將添加的函數(shù)前面
fun String.lastChar() : Char = this.get(this.length-1)
擴(kuò)展函數(shù)并不容許你打破他的封裝性,和在類的內(nèi)部定義方法不同的是,擴(kuò)展函數(shù)不能訪問私有或者是受保護(hù)的成員。
5.導(dǎo)入函數(shù)
自己定義的擴(kuò)展函數(shù),它不會自動地在整個(gè)項(xiàng)目范圍內(nèi)生效,如果要使用它需要導(dǎo)入。Kotlin 允許用和導(dǎo)入類一樣的語法來導(dǎo)入這個(gè)函數(shù)
import string.lastChar
也可以用*
import string.*
可以使用關(guān)鍵字as來修改導(dǎo)入的類和函數(shù)名稱
import strings.lastChar as last
val c="Kotlin".last()? 這樣就把lastChar改為last 方法
擴(kuò)展函數(shù)不可重寫。Kotlin中會把他們當(dāng)做靜態(tài)函數(shù)對待,擴(kuò)展函數(shù)在Java中編譯為靜態(tài)函數(shù)。
如果一個(gè)類有相同的成員函數(shù)和擴(kuò)展函數(shù),成員函數(shù)會優(yōu)先使用。在擴(kuò)展API中,有相同的成員函數(shù)和擴(kuò)展函數(shù),會重新編譯代碼,這將指向新的成員函數(shù)。
6.Kotlin中字符串的處理
1> 和Java使用相同的正則表達(dá)式
2>kotlin的split擴(kuò)展類可以指定多個(gè)分割符
3> Kotlin標(biāo)準(zhǔn)庫有一些可以獲取給定分割符的第一次(或最后一次)出現(xiàn)之前(或之后)的字符串的函數(shù)。
如:/Users/pyh/kotlin-book/chapter.adoc? 可以使用 substringBeforeLast 和 substringAfterLast 函數(shù)將一個(gè)路徑分割為目錄、文件名、擴(kuò)展名
4> 多行三重引號的字符串
一個(gè)三重引號的字符串可以包含換行,而不用專門的字符""" c:\Users\pyh\kotlin-book """
三重引號的字符串提供了一種簡潔的方式,解決了原本在Java中需要進(jìn)行大量啰嗦的轉(zhuǎn)義和字符串鏈接的問題