第五章 11招快速入门Kotlin.docVIP

  • 7
  • 0
  • 约4.9千字
  • 约 10页
  • 2017-07-05 发布于湖北
  • 举报
11招快速入门Kotlin 最近经常会收到一些 “用?Kotlin?怎么写” 的问题,作为有经验的程序员,我们已经掌握了一门或者多门语言,那么学 Kotlin 的时候就经常会有类似 “ ‘再见’用日语怎么说?”、“ ‘你好’ 用西班牙语怎么说?” 的问题,所以我决定把一些常用的语法对照列举出来,如果大家熟悉 Java,那么快速上手 Kotlin 会变得非常地容易。 这篇文章主要是写给需要快速上手 Kotlin 的 Java 程序员看的,这时候他们关注的是如何 Kotlin 写出类似某些 Java 的写法,所以本文基本不涉及 Kotlin 的高级特性。 1. 如何定义变量 Java 定义变量的写法: String string = Hello; 基本等价的 Kotlin 定义变量的写法: var string: String = Hello Java 定义 final 变量的写法: final String string = Hello; 注意到前面的是一个编译期常量,Kotlin 当中应该这么写: const val string: String = Hello 同样是 final 变量,Java 这么写: final String string = getString(); 注意到,这个不是编译期常量,Kotlin 这么写: val string: String = getString() 另外, Kotlin 有类型推导的特性,因此上述变量定义基本上都可以省略掉类型 String。 2. 如何定义函数 Java 当中如何定义函数,也就是方法,需要定义到一个类当中: public boolean testString(String name){ ... } 等价的 Kotlin 写法: fun testString(name: String): Boolean { ... } 注意到返回值的位置放到了参数之后。 3. 如何定义静态变量、方法 Java 的静态方法或者变量只需要加一个 static 即可: public class Singleton{ private static Singleton instance = ...; public static Singleton getInstance(){ ... return instance; } } 用 Kotlin 直译过来就是: class KotlinSingleton{ companion object{ private val kotlinSingleton = KotlinSingleton() @JvmStatic fun getInstance() = kotlinSingleton } } 注意 getInstance 的写法。 JvmStatic 这个注解会将 getInstance 这个方法编译成与 Java 的静态方法一样的签名,如果不加这个注解,Java 当中无法像调用 Java 静态方法那样调用这个方法。 另外,对于静态方法、变量的场景,在 Kotlin 当中建议使用包级函数。 4. 如何定义数组 Java 的数组非常简单,当然也有些抽象,毕竟是编译期生成的类: String[] names = new String[]{Kyo, Ryu, Iory}; String[] emptyStrings = new String[10]; Kotlin 的数组其实更真实一些,看上去更让人容易理解: val names: ArrayString = arrayOf(Kyo, Ryu, Iory) val emptyStrings: ArrayString? = arrayOfNulls(10) 注意到,Array T 即数组元素的类型。另外,String? 表示可以为 null 的 String 类型。 数组的使用基本一致。需要注意的是,为了避免装箱和拆箱的开销,Kotlin 对基本类型包括 Int、Short、Byte、Long、Float、Double、Char 等基本类型提供了定制版数组类型,写法为 XArray,例如 Int 的定制版数组为 IntArray,如果我们要定义一个整型数组,写法如下: val ints = intArrayOf(1, 3, 5) 5. 如何写变长参数 Java 的变长参数写法如下: void hello(String... names){ ... } Kotlin 的变长参数写法如下: fun hello(vararg names: String){ } 6. 如何写三元运算符 Java 可以写三元运算符: int code =

文档评论(0)

1亿VIP精品文档

相关文档