Kotlin学习之旅(D8)-From Java to Kotlin

版权声明:本文作者为BlueLzy,原出处为CSDN博客 - http://blog.csdn.net/blue_zy,转载请注明出处。 https://blog.csdn.net/blue_zy/article/details/83065067

Kotlin学习之旅第八天

今天的主题是:From Java to Kotlin

前言

Kotlin学习之旅(D1)-学习计划&基本语法

Kotlin学习之旅(D2)-基本语法

Kotlin学习之旅(D3)-类与继承

Kotlin学习之旅(D4)-函数与Lambda表达式

Kotlin学习之旅(D5)-高级语法

Kotlin学习之旅(D6)-Kotlin Idioms part 1

Kotlin学习之旅(D7)-Kotlin Idioms part 2

学习资源

Kotlin官网在线学习课程(需要翻墙):Kotlin Koans

kotlin中文(不需要翻墙):Kotlin语言中文站

Github学习资源 : From Java To Kotlin

kotlin必备知识:

首先如果是有Java基础的童鞋,推荐直接从官网文档上手,可以快速学习Kotlin这门语言的特性和用法。

如果是零基础的童鞋,那么推荐看视频+看书,一般都是直接在youtube上搜索kotlin就可以找到很有有用的视频了,书籍的话推荐《Kotlin in Action》

这两天的任务比较轻松,因为From Java to Kotlin 其实在前面我们讲语法和习惯用法的时候,基本上都已经见过了,这里其实只是相当于再复习一遍,而且上面的 From Java To Kotlin已经很全了,我就把自己不太熟练的摘录下来。

常见区别

Null

Java

if(text != null){
  int length = text.length();
}

Kotlin

val length = text?.length

val length = text!!.length // NullPointerException if text == null

?:可以为空,但是如果没做非空判断,在编译的时候会报错

!!.:可以为空,编译的时候也不会报错,但是运行的时候有可能会NPE

Strings II

Java

String text = "First Line\n" +
              "Second Line\n" +
              "Third Line";

Kotlin

val text = """
        |First Line
        |Second Line
        |Third Line
""".trimMargin()

Kotlin里面通过 ''' 来表示多行字符串,通过 | 来表示换行

Bits Operations

Java

final int andResult  = a & b;
final int orResult   = a | b;
final int xorResult  = a ^ b;
final int rightShift = a >> 2;
final int leftShift  = a << 2;

Kotlin

val andResult  = a and b
val orResult   = a or b
val xorResult  = a xor b
val rightShift = a shr 2
val leftShift  = a shl 2

Java 和 Kotlin 的位操作符

Collections

Java

for (int number : numbers) {
  System.out.println(number);
}

for (int number : numbers) {
  if(number > 5) {
    System.out.println(number);
  }
}

Kotlin

numbers.forEach {
    println(it)
}

numbers.filter  { it > 5 }
       .forEach { println(it) }

Kotlin通过 filter{x > 5} 来表示 Java里面的 if(x > 5) 这个条件语句的区别需要注意

Constructors

Java

public class Utils {

    private Utils() {
      // This utility class is not publicly instantiable
    }

    public static int getScore(int value) {
        return 2 * value;
    }
}

Kotlin

class Utils private constructor() {
    companion object {
        fun getScore(value: Int): Int {
            return 2 * value
        }
    }
}

// another way
object Utils {
    fun getScore(value: Int): Int {
        return 2 * value
    }
}

Java:通过 静态方法 来实现工具类

Kotlin:一切皆是对象,通过 companion object / ojbect utils 来实现工具类

Class methods

Java

public class Utils {

    private Utils() {
      // This utility class is not publicly instantiable
    }

    public static int triple(int value) {
        return 3 * value;
    }

}

int result = Utils.triple(3);

Kotlin

fun Int.triple(): Int {
  return this * 3
}

var result = 3.triple()

Java:通过static实现类方法

Kotlin:通过扩展函数实现类方法

enum

Java

public enum Direction {
        NORTH(1),
        SOUTH(2),
        WEST(3),
        EAST(4);

        int direction;

        Direction(int direction) {
            this.direction = direction;
        }

        public int getDirection() {
            return direction;
        }
    }

Kotlin

enum class Direction constructor(direction: Int) {
    NORTH(1),
    SOUTH(2),
    WEST(3),
    EAST(4);

    var direction: Int = 0
        private set

    init {
        this.direction = direction
    }
}

总结

一开始以为From Java to Kotlin 要讲两天的,因为我是先大致浏览了一遍官方文档,然后做的学习计划,结果发现经过前面的学习,对Kotlin的语法掌握了的情况下,其实很多Java和kotlin之间的区别都已经很熟悉了,强烈推荐大家去看看 From Java To Kotlin,就当是一个复习/总结,加深对Kotlin语法的熟悉。

明天开始正式进入Kotlin in Android 的学习,这个才是我们Kotlin学习之旅的重点。

Day 8 - Learn Kotlin Trip, Completed.


猜你喜欢

转载自blog.csdn.net/blue_zy/article/details/83065067