从Java到Kotlin——基础语法

Posted Android-kongqw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Java到Kotlin——基础语法相关的知识,希望对你有一定的参考价值。

Print输出

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

Java

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

常量

val x: Int
val y = 1

Java

final int x;
final int y = 1;

变量

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

Java

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

可空变量

val name: String? = null

var lastName: String?
lastName = null

var firstName: String
firstName = null // Compilation error!!

Java

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

空值检查

val length = text?.length

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

Java

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

String

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

Java

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

三元运算符

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

Java

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

位运算

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

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;

is/as/in

if (x is Int)  

val text = other as String

if (x in 0..10)  

Java

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

when

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"

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";

for

for (i in 1 until 11)  

for (i in 1..10 step 2) 

for (item in collection) 
for ((index, item) in collection.withIndex()) 

for ((key, value) in map) 

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

集合

val numbers = listOf(1, 2, 3)

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

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");

forEach

numbers.forEach 
    println(it)

Java

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

filter

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

Java

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

groupBy

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

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


// or

Map<String, List<Integer>> groups = items.stream().collect(
  Collectors.groupingBy(item -> (item & 1) == 0 ? "even" : "odd")
);

partition

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

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

sortedBy

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

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

以上是关于从Java到Kotlin——基础语法的主要内容,如果未能解决你的问题,请参考以下文章

kotlin语言的基础语法

kotlin 学习心得

Kotlin基础语法学习笔记

Kotlin开发基础从0开始

转向Kotlin——基础知识

kotlin基础语法