zoukankan      html  css  js  c++  java
  • Java转Kotlin

    Java 转 Kotlin

    打印日志

    • Java
    System.out.println("sss");
    
    • kotlin
    println("sss")
    

    常量与变量

    • Java
    String name = "sss";
    final String name = "sss";
    
    • Kotlin
    var name = "sss"
    val name = "sss"
    

    null说明

    • Java
    String otherName;
    otherName = null;
    
    • Kotlin
    var otherName :String?
    otherName = null
    

    空判断

    • Java
    if(text != null){
      int length = text.length();
    }
    
    • Kotlin
    text?.let{
      val length = text.length
    }
    //or simply
    val length = text?.length
    

    字符串拼接

    • Java
    String firstName = "aaa";
    String lastName = "bbb";
    String message = "My Name is: " + firstName + lastName;
    
    • Kotlin
    val firstName = "aaa"
    val lastName = "bbb"
    val message = "My name is: $firstName $lastName"
    

    换行

    • Java
    String text = "First Line
    " + 
                  "Second Line
    " + 
                  "Third Line";
    
    • Kotlin
    val text = """
              |First Line
              |Second Line
              |Third Line
              """.trimMargin()
    

    三元表达式

    • Java
    String text = x > 5 ? "x > 5" : "x <= 5";
    
    • Kotlin
    val text = if(x > 5)
               "x > 5"
               else "x <= 5"
    

    操作符

    • 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;
    final int unsignedRightShift = a >>> 2;
    
    • Kotlin
    val andResult = a and b
    val orResult = a or b
    val xorResult = a xor b
    val rightShift = a shr b
    val leftShift = a shl b
    val unsignedRightShift = a ushr 2
    

    类型判断和转换(声明式)

    • Java
    if(object instanceof Car){
      Car car = (Car)object;
    }
    
    • Kotlin
    if(object is Car){
      var car = object as Car
    }
    

    类型判断和转换(隐式)

    • Java
    if(object instanceof Car){
      Car car = (Car)object;
    }
    
    • Kotlin
    if(object is Car){
      var car = object
    }
    

    多重条件

    • Java
    if(score >= 0 && score <= 300){}
    
    • Kotlin
    if(score in 0..300){}
    

    更灵活的case语句

    • Java
    int score = // some score
    String grade;
    switch(score){
      case 10:
      case 9:
        grade = "Excellent";
        break;
      case 8:
      case 7:
      case 6:
        grade = "Good";
        break;
      case 5:
      case 4:
        grade = "Ok";
        break;
      case 3:
      case 2:
      case 1:
        grade = "Fail";
        break;
      default:
        grade = "Fail";
    }
    
    • Kotlin
    var score = // some score
    var grade = when(score){
      9,10 -> "Excellent"
      in 6..8 -> "Good"
      4,5 -> "OK"
      in 1..3 -> "Fail"
    }
    

    for 循环

    • Java
    for(int i = 1; i <= 10; i++){}
    for(int i = 1; i < 10; i++){}
    for(int i = 10; i >= 0; i--){}
    for(int i = 10; i <= 10; i += 2){}
    for(int i = 10; i >= 10; i-= 2){}
    for(String item : collection){}
    for(Map.Entry<String, String> entry : map.entrySet()){}
    
    • Kotlin
    for(i in 1..10){}
    for(i in 1 until 10){}
    for(i in 10 downTo 0){}
    for(i in 1..10 step 2){}
    for(i in 10 downTo 0 step 2){}
    for(item in collection){}
    for((key, value) in map){}
    

    更方便的集合操作

    • Java
    final List<Integer> listOfNumber = Arrays.asList(1,2,3,4);
    
    final Map<Integer, String> keyValue = new HashMap<Integer, String>();
    map.put(1, "aaa");
    map.put(2, "bbb");
    map.put(3, "ccc");
    
    // Java 9
    final List<Integer> listOfNumber = List.of(1,2,3,4);
    
    final Map<Integer, String> keyValue = Map.of(1, "aaa"
                                                 2, "bbb"
                                                 3, "ccc");
    
    • Kotlin
    val listOfNumber = listOf(1,2,3,4)
    val keyValue = mapOf(1 to "aaa"
                         2 to "bbb"
                         3 to "ccc")
    

    遍历

    • Java
    // Java 7 and below
    for(Car car : cars){
      System.out.println(car.speed);
    }
    
    for(Car car : cars){
      if(car.speed > 100){
        System.out.println(car.speed);
      }
    }
    
    // Java 8+
    cars.forEach(car -> System.out.println(car.speed));
    
    cars.stream().filter(car -> car.speed > 100).forEach(car -> System.out.println(car.speed));
    
    • Kotlin
    cars.forEach{
      println(it.speed)
    }
    
    cars.filterP{it.speed > 100}
           .forEach{println(it.speed)}
    

    方法定义

    • Java
    void doSomething(){
      //logic here
    }
    
    void doSomething(int...numbers){
      //logic here
    }
    
    • Kotlin
    fun doSomething(){
      //logic here
    }
    
    fun doSomething(vararg numbers: Int){
      //logic here
    }
    

    带返回值的方法

    • Java
    int getScore(){
      //logic here
      return score;
    }
    
    • Kotlin
    fun getScore(): Int{
      // logic here
      return score
    }
    
    // as a single-expression function
    
    fun getScore(): Int = score;
    

    无结束符号

    • Java
    int getScore(int value){
      //logic here
      return 2 * value;
    }
    
    • Kotlin
    fun getScore(value: Int): Int{
      // logic here
      return 2 * value;
    }
    
    fun getScore(value: Int): Int = 2 * value
    

    constructor构造器

    • 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
      }
    }
    

    Get Set构造器

    • Java
    public String name;
    private int age;
    
    public Developer(String name, int age){
      this.name = name;
      this.age = age;
    }
    
    public String getName(){
      return name;
    }
    
    public void setName(String name){
      this.name = name;
    }
    
    public int getAge(){
      return age;
    }
    
    public void setAge(int age){
      this.age = age;
    }
    
    @Override
    public boolean equals(Object o){
      if(this == o) return true;
      if(o== null || getClass() != o.getClass()) return false;
      
      Developer developer = (Developer)o;
      
      if(age != developer.age) return false;
      return name != null ? name.equals(developer.name) : developer.name == null;
    }
    
    @Override
    public int hashCode(){
      int result = name != null ? name.hashCode() : 0;
      result = 31 * result + age;
      return result;
    }
    
    @Override
    public String toString(){
      return "Developer{" +
              "name='" + name + '" +
              ", age = " + age +
              '}';
      }
    }
    
    • Kotlin
    data class Developer(val name: String, val age: Int)
    

    原型扩展

    • 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
    }
    
    val result = 3.triple()
    
    • 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(val direction: Int){
      NORTH(1),
      SOUTH(2),
      WEST(3),
      EAST(4);
    }
    

    原文链接:https://github.com/MindorksOpenSource/from-java-to-kotlin/blob/master/README-ZH.md

  • 相关阅读:
    大爽Python入门教程 3-6 答案
    大爽Python入门教程 2-5 *拓展实践,对比与思考
    大爽Python入门教程 3-1 布尔值: True, False
    大爽Python入门教程 3-2 条件判断: if...elif..else
    企业微信获取code
    python inspect模块
    数据仓库之数据质量建设(深度好文)
    seleniumwire
    Jacoco增量代码覆盖率
    git对已经提交过的文件添加到.gitignore
  • 原文地址:https://www.cnblogs.com/hyeri/p/14945206.html
Copyright © 2011-2022 走看看