Kotlin 从入门到实战(一)

花了四五天的时间看完了kotlin-docs和kotlin-for-android-developers并写了一个小app实战一下。于是打算写两篇文章,第一篇记录一下kotlin相对java的一些不同,kotlin的一些独特用法,主要是来入个门,第二篇文章带来一个实战,用kotlin实现了一个爬虫类的app。

  • 如何定义变量

Java 定义变量的写法:

String string = "Hello";

基本等价的 Kotlin 定义变量的写法:

 var string: String = "Hello"

kotlin中有两种声明变量的关键字,var和val,var是可变的,val是不可变得。

  • 如何定义函数
    Java 当中如何定义函数,也就是方法,需要定义到一个类当中:
 public boolean testString(String name){
     ...
 }

等价的 Kotlin 写法:

 fun testString(name: String): Boolean {
     ...
 }

还有就是很多时候直接用lambda表达式了,不用再拘泥于这样的格式。

  • 如何定义静态变量、方法
    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

     }
 }

这里的@JvmStatic与java中的static几乎一样。

  • 如何实例化类

Java 和 C++ 这样的语言,在构造对象的时候经常需要用到 new 这个关键字,比如:

 Date date = new Date();

Kotlin 构造对象时,不需要 new 这个关键字,所以上述写法等价于:

 val date = Date()
  • 还有一些比较特殊的用法如延迟加载

Kotlin 有办法,使用 lazy 这个 delegate 即可:

 class Hello{
     private val name by lazy{
         hahahaha() 
     }
 }
  • lambda表达式
    和java中几乎一样就不多说了
  • 扩展函数
    将在下一篇实战中看到具体的例子。
  • 开发前的准备
buildscript {
    ext.kotlin_version = '1.1.3'
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile 'org.jetbrains.anko:anko-common:0.10.0'
compile "org.jetbrains.anko:anko-sqlite:0.10.0"
compile "org.jetbrains.anko:anko-coroutines:0.10.0"

你可能感兴趣的:(Android项目实战)