官方文档java
官方中文数组
` 包起来// 若是 in 为java的一个函数, 定义以下 // class A{ // void in(); // } x = A() x.`in`() // in 是kotlin关键字
kotling关键字:ide
关键字 | 说明 |
---|---|
abstract | 抽象声明,被标注对象默认是open |
annotation | 注解声明 |
by | 类委托、属性委托 |
class | 声明类 |
companion | 伴生对象声明 |
const | 声明编译期常量 |
constructor | 声明构造函数 |
crossinline | 标记内联函数的lambda表达式参数,标识该lambda函数返回为非局部返回,不容许非局部控制流 |
data | 数据类,声明的类默认实现equals()/hashCode()/toString/copy()/componentN() |
enum | 声明枚举类 |
field | 属性的幕后字段 |
fun | 声明函数 |
import | 导入 |
in | 修饰类型参数,使其逆变:只能够被消费而不能够被生产 |
init | 初始化块;至关于主构造函数的方法体 |
inline | 声明内联函数 |
inner | 标记嵌套类,使其成为内部类:可访问外部类的成员 |
interface | 声明接口 |
internal | 可见性修饰符,相同模块内可见 |
lateinit | 延迟初始化,避免空检查 |
noinline | 禁用内联,标记内联函数不须要内联的参数 |
object | 对象表达式、对象声明 |
open | 容许其它类继承;kotlin类默认都是final,禁止继承 |
operator | 标记重载操做符的函数 |
out | 修饰类型参数,使其协变:只能够被生产而不能够被消费 |
override | 标注复写的方法、属性 |
package | 包声明 |
private | 可见性修饰符,文件内可见 |
protected | 可见性声明,只修饰类成员,子类中可见 |
public | kotlin默认的可见性修饰符,随处可见 |
reified | 限定类型参数,须要配合inline关键字使用 |
sealed | 声明密封类,功能相似枚举 |
super | 访问超类的方法、属性 |
suspend | 声明挂起函数,该函数只能从协程和其余挂起函数中调用 |
throw | 抛异常 |
typealias | 声明类型别名 |
val | 声明只读属性 |
var | 声明可变属性 |
vararg | 修饰函数参数:声明为可变数量参数 |
as
或 as?
x: A = y as A //将y强转为 A 类型 x: A? = y as? A //将y强转为 A 类型, 转换失败可为 null
as
import xxx.xxx.A import yyy.yyy.A as YA //为避免与 xxx.xxx.A冲突,引进别名 x = A() // == xxx.xxx.A() y = YA() //使用别名建立对象, == yyy.yyy.A()
typealias A = ABCDEFG //类别太长,设置个短的别名 x = A()
is
可判断对象的实际类型,一旦判断成功,能够不用强转,直接使用该类型方法class ABC { fun abc() { } } val x: Any = ABC() x.abc() //error, x是Any类型,没有 abc() 方法 if( x is ABC ) { x.abc() // OK ,已经知道 x 就是 ABC 类型 }
open
,默认是不可继承的in
运算判断元素是否在集合中, ..
运算表示一个范围, !in
运算判断元素不在集合中x in 1 .. 9 // x = 1 到 9 的任何Int 就返回 true for( y in 0 .. 100) { println(y) //循环0到100, 打印 }
new Int[] { 1,2,3 ...}
这样的不定参数初始化var x = arrayOf(1,2,3) // 数组 [ 1, 2, 3 ] x = arrayOf(1,2,3,4,5) // 数组 [ 1, 2, 3, 4, 5 ]
不定参数定义函数
fun f1( vararg ls: Int) { for ( x in ls ) { println("${x} , ") } } f1(1,2,3) // 输出 1 , 2 , 3 , f1(1,2,3,4,5) // 输出 1 , 2 , 3 , 4 , 5 ,
internal
修饰的类,函数,属性,变量,在同一模块(如打包成同一给 jar 文件的代码属于同一个模块)是全局 public
的,可是到了模块外,就是 private
的,不可调用,这样能够保护一些内部敏感函数不被外界调用