https://try.kotlinlang.org这个可以运行Kotlin代码块
1 .在Kotlin中创建集合
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 等价于 Java的getClass()
>>>printLn(list.javaClass) ----->>> class java.util.Arraylist
Kotlin 中 可以获取一个列表的最后的元素list.last()和最大元素list.max()
2. Kotlin函数中可以显示地表明参数名称。 但是在Java的函数中不能采用命名参数。
kotlin中可以声明默认参数值的函数。
fun <T> joinToString( collection : Collection<T>, separator : String=" ," ,prefix : String = "", postfix : String = "") :String
上面的就是有默认值得函数。调用这个函数可以省略掉部分参数 。但是没有申明参数调用只能省略末尾的参数,如果申明命名参数可以省略一些中间的一些参数
>>> jionToString(list, "," , " " , " ")
>>>jionToString(list)
3.Kotlin中可以把函数直接放到代码文件的顶层,不用从属于任何类。这些函数依然是包内成员,如果你要从外部访问它,则需要import。修改顶层函数的名称需要给这个文件添加@JvmName的注解
顶层属性:和函数一样,属性也可以放到文件的顶层。默认情况下顶层属性是通过服务器暴露给Java使用的(如果是val就只有一个getter,如果是var就对应一对getter和setter)
const 用法 : const等同于Java的public static final
const val UNIX="\n" 等同于Java的 public static final String UNIX="\n"
4. 扩展函数和属性
扩展函数就是一个类的成员函数,不过定义在类的外面。你只要把扩展的类和接口的名称,放到即将添加的函数前面
fun String.lastChar() : Char = this.get(this.length-1)
扩展函数并不容许你打破他的封装性,和在类的内部定义方法不同的是,扩展函数不能访问私有或者是受保护的成员。
5.导入函数
自己定义的扩展函数,它不会自动地在整个项目范围内生效,如果要使用它需要导入。Kotlin 允许用和导入类一样的语法来导入这个函数
import string.lastChar
也可以用*
import string.*
可以使用关键字as来修改导入的类和函数名称
import strings.lastChar as last
val c="Kotlin".last() 这样就把lastChar改为last 方法
扩展函数不可重写。Kotlin中会把他们当做静态函数对待,扩展函数在Java中编译为静态函数。
如果一个类有相同的成员函数和扩展函数,成员函数会优先使用。在扩展API中,有相同的成员函数和扩展函数,会重新编译代码,这将指向新的成员函数。
6.Kotlin中字符串的处理
1> 和Java使用相同的正则表达式
2>kotlin的split扩展类可以指定多个分割符
3> Kotlin标准库有一些可以获取给定分割符的第一次(或最后一次)出现之前(或之后)的字符串的函数。
如:/Users/pyh/kotlin-book/chapter.adoc 可以使用 substringBeforeLast 和 substringAfterLast 函数将一个路径分割为目录、文件名、扩展名
4> 多行三重引号的字符串
一个三重引号的字符串可以包含换行,而不用专门的字符""" c:\Users\pyh\kotlin-book """
三重引号的字符串提供了一种简洁的方式,解决了原本在Java中需要进行大量啰嗦的转义和字符串链接的问题