美文网首页Kotlin从入门到放弃AndroidKotlin
Kotlin 带你飞 • 语法篇 • 基础

Kotlin 带你飞 • 语法篇 • 基础

作者: _frendy | 来源:发表于2017-06-16 11:56 被阅读275次



    本文采用与 Java 语法作对比的方式罗列并介绍** Kotlin 的语法基础**。这样会不会更容易理解和上手?希望能对看到这篇文章的您有所帮助吧。

    相关文章:

    Kotlin 带你飞

    Kotlin 带你飞 • 实战篇

    相关 Github 源码

    版权声明:本文为 frendy 原创文章,可以随意转载,但请务必在明确位置注明出处。


    Print

    Java

    System.out.print("Hello, World!");
    System.out.println("Hello, World!");
    

    Kotlin

    print("Hello, World!")
    println("Hello, World!")
    

    Variables I

    Java

    final int x;
    final int y = 1;
    

    Kotlin

    val x: Int
    val y = 1
    

    Variables II

    Java

    int w;
    int z = 2;
    z = 3;
    w = 1;
    

    Kotlin

    var w: Int
    var z = 2
    z = 3
    w = 1
    

    Null I

    Java

    final String name = null;
    
    String lastName;
    lastName = null
    

    Kotlin

    val name: String? = null
    
    var lastName: String?
    lastName = null
    
    var firstName: String
    firstName = null // Compilation error!!
    

    Null II

    Java

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

    Kotlin

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

    Strings I

    Java

    String name = "John";
    String lastName = "Smith";
    String text = "My name is: " + name + " " + lastName;
    String otherText = "My name is: " + name.substring(2);
    

    Kotlin

    val name = "John"
    val lastName = "Smith"
    val text = "My name is: $name $lastName"
    val otherText = "My name is: ${name.substring(2)}"
    

    Strings II

    Java

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

    Kotlin

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

    Ternary Operator

    Java

    String text = x > 5 ? "x > 5" : "x <= 5";
    

    Kotlin

    val text = if (x > 5) "x > 5" else "x <= 5"
    

    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
    

    Is As In

    Java

    if(x instanceof Integer) { }
    final String text = (String) other;
    if(x >= 0 && x <= 10 ) { }
    

    Kotlin

    if (x is Int) { } 
    val text = other as String
    if (x in 0..10) { }
    

    Smart Cast

    Java

    if(a instanceof String) { 
      final String result = ((String) a).substring(1);
    }
    

    Kotlin

    if (a is String) { 
      val result = a.substring(1)
    }
    

    Switch / When

    Java

    final int x = // value;
    final String xResult;
    switch (x) { 
      case 0: 
      case 11:
         xResult = "0 or 11"; 
        break; 
      case 1: 
      case 2: 
        //... 
      case 10: 
        xResult = "from 1 to 10"; 
        break; 
      default: 
        if(x < 12 && x > 14) { 
          xResult = "not from 12 to 14"; 
          break; 
        } 
        if(isOdd(x)) { 
          xResult = "is odd"; 
          break; 
        } 
        xResult = "otherwise";
      }
    
    final int y = // value;
    final String yResult;
    if(isNegative(y)) { 
      yResult = "is Negative";
    } else if(isZero(y)) { 
      yResult = "is Zero";
    } else if(isOdd(y)) { 
      yResult = "is Odd";
    } else { 
      yResult = "otherwise";
    }
    

    Kotlin

    val x = // value
    val xResult = when (x) { 
      0, 11 -> "0 or 11" 
      in 1..10 -> "from 1 to 10" 
      !in 12..14 -> "not from 12 to 14" 
      else -> if (isOdd(x)) { "is odd" } else { "otherwise" }
    }
    
    val y = // value
    val yResult = when { 
      isNegative(y) -> "is Negative" 
      isZero(y) -> "is Zero" 
      isOdd(y) -> "is odd" 
      else -> "otherwise"
    }
    

    For

    Java

    for (int i = 1; i < 11 ; i++) { }
    
    for (int i = 1; i < 11 ; i+=2) { }
    
    for (String item : collection) { }
    
    for (Map.Entry<String, String> entry:map.entrySet()) { }
    

    Kotlin

    for (i in 1..10) { }
    
    for (i in 1..10 step 2) { }
    
    for (item in collection) { }
    for ((index, item) in collection.withIndex()) { }
    
    for ((key, value) in map) { }
    

    Collections I

    Java

    final List<Integer> numbers = Arrays.asList(1, 2, 3);
    
    final Map<Integer, String> map = new HashMap<Integer, String>();
    map.put(1, "One");
    map.put(2, "Two");
    map.put(3, "Three");
    
    // Java 9
    final List<Integer> numbers = List.of(1, 2, 3);
    final Map<Integer, String> map = Map.of(
        1, "One", 
        2, "Two", 
        3, "Three");
    

    Kotlin

    val numbers = listOf(1, 2, 3)
    
    val map = mapOf(
        1 to "One", 
        2 to "Two", 
        3 to "Three")
    

    Collections II

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

    Collections III

    Java

    final Map<String, List<Integer>> groups = new HashMap<>();
    for (int number : numbers) { 
      if((number & 1) == 0) { 
        if(!groups.containsKey("even")) { 
          groups.put("even", new ArrayList<>()); 
        } 
        groups.get("even").add(number); 
        continue; 
      } 
      if(!groups.containsKey("odd")) { 
        groups.put("odd", new ArrayList<>()); 
      } 
      groups.get("odd").add(number);
    }
    

    Kotlin

    val groups = numbers.groupBy { 
      if (it and 1 == 0) "even" else "odd" 
    }
    

    Collections IV

    Java

    final List<Integer> evens = new ArrayList<>();
    final List<Integer> odds = new ArrayList<>();
    for (int number : numbers) { 
      if ((number & 1) == 0) { 
        evens.add(number); 
      } else { 
        odds.add(number); 
      }
    }
    

    Kotlin

    val (evens, odds) = numbers.partition { it and 1 == 0 }
    

    Collections V

    Java

    final List<User> users = getUsers();
    Collections.sort(users, new Comparator<User>(){ 
      public int compare(User user, User otherUser){ 
        return user.lastname.compareTo(otherUser.lastname); 
      }
    });
    // or
    users.sort(Comparator.comparing(user -> user.lastname));
    

    Kotlin

    val users = getUsers()
    users.sortedBy { it.lastname }
    

    愿大家都能飞得更高、飞得更开心...嗯,开心很重要...

    qrcode_card.png

    相关文章

      网友评论

      • 606fd5f5448c:欢迎加入kotlin简书群:379146202
        606fd5f5448c:@_frendy 暂时还没有哈
        _frendy:@编程狼子 请问有微信群吗
      • 楊帥:kotlin没有三项运算么?
        楊帥:@_frendy 受教,谢谢
        楊帥: @_frendy 嗯嗯,学习啦😃
        _frendy:例如 val z = if (condition) x else y,可以把结果赋值给一个变量,其实跟三元运算类似结构,已经不需要三元运算啦

      本文标题:Kotlin 带你飞 • 语法篇 • 基础

      本文链接:https://www.haomeiwen.com/subject/afvpqxtx.html