Today, one of my friends came to ask Xiao Hui, saying that he used JAVA as a thief. He wanted to learn Kotlin again.

How can I put it? In fact, I have always felt that the language aspect is familiar, since JAVA has been stolen, I must learn other languages must be more effective with less effort.

However, if there is a good assistant, it will certainly be easier to learn, today xiao Grey and you write a comparison show Java and Kotlin two languages in the grammar of different places of the article, can quickly help Java partners master Kotlin writing skills! So without further ado, I’ll go ahead and show you the difference in the most practical code.

Print log

  • Java
System.out.print("I gray");
System.out.println("I gray");
Copy the code
  • Kotlin
print("I gray")
println("I gray")
Copy the code

Constants and variables

  • Java
String name = "I gray";
final String name = "I gray";
Copy the code
  • Kotlin
var name = "I gray"
val name = "I gray"
Copy the code

A null statement

  • Java
String otherName;
otherName = null;
Copy the code
  • Kotlin
var otherName : String?
otherName = null
Copy the code

Empty judgment

  • Java
if(text ! =null) {
    int length = text.length();
}
Copy the code
  • Kotlin
text? .let {val length = text.length
}
/ / or
vallength = text? .lengthCopy the code

String splicing

  • Java
String firstName = "Small";
String lastName = "Grey";
String message = "Name:" + firstName + "" + lastName;
Copy the code
  • Kotlin
val firstName = "Small"
val lastName = "Grey"
val message = "Name:$firstName $lastName"
Copy the code

A newline

  • Java
String text = "A line of \ n" +
              "Two lines \ n" +
              "Three lines";
Copy the code
  • Kotlin
val text = "" "lines | 2 | 3 | line "" ".trimMargin()
Copy the code

Ternary expression

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

The operator

  • 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;
Copy the code
  • 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
val unsignedRightShift = a ushr 2
Copy the code

Type determination and conversion (declarative)

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

Type judgment and conversion (implicit)

  • Java
if (object instanceof Car) {
   Car car = (Car) object;
}
Copy the code
  • Kotlin
if (object is Car) {
   var car = object // Intelligent conversion
}
Copy the code

Multiple conditions

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

More flexible case statements

  • Java
int score = // Some scores;
String grade;
switch (score) {
    case 10:
    case 9:
        grade = "Good";
        break;
    case 8:
    case 7:
    case 6:
        grade = "Good";
        break;
    case 5:
    case 4:
        grade = "Good";
        break;
    case 3:
    case 2:
    case 1:
        grade = "Poor";
        break;
    default:
        grade = "Poor";
}
Copy the code
  • Kotlin
var score = // Some scores;
var grade = when (score) {
    9.10 -> "Good"
    in 6.8. -> "Good"
    4.5 -> ""
    in 1.3. -> "Poor"
    else -> "Poor"
}
Copy the code

The for loop

  • 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 = 1; i <= 10 ; i+=2) {}for (int i = 10; i >= 0 ; i-=2) {}for (String item : collection) { }

for (Map.Entry<String, String> entry: map.entrySet()) { }
Copy the code
  • 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) { }
Copy the code

More convenient collection operation

  • Java
final List<Integer> listOfNumber = Arrays.asList(1.2.3.4);

final Map<Integer, String> keyValue = new HashMap<Integer, String>();
map.put(1."i");
map.put(2."Small");
map.put(3."Grey");

// Java 9
final List<Integer> listOfNumber = List.of(1.2.3.4);

final Map<Integer, String> keyValue = Map.of(1."i".2."Small".3."Grey");
Copy the code
  • Kotlin
val listOfNumber = listOf(1.2.3.4)
val keyValue = mapOf(1 to "i".2 to "Small".3 to "Grey")
Copy the code

traverse

  • Java
Java 7 and below
for (Car car : cars) {
  System.out.println(car.speed);
}

// Java 8+
cars.forEach(car -> System.out.println(car.speed));

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

cars.filter { it.speed > 100 }
      .forEach { println(it.speed)}
Copy the code

Method definition

  • Java
void doSomething(a) {
   / / logic...
}

void doSomething(int. numbers) {
   / / logic...
}
Copy the code
  • Kotlin
fun doSomething(a) {
   / / logic...
}

fun doSomething(vararg numbers: Int) {
   / / logic...
}
Copy the code

A method with a return value

  • Java
int getScore(a) {
   / / logic...
   return score;
}
Copy the code
  • Kotlin
fun getScore(a): Int {
   / / logic...
   return score
}

// as a single expression function

fun getScore(a): Int = score
Copy the code

Termineless symbol

  • Java
int getScore(int value) {
   / / logic...
    return 2 * value;
}
Copy the code
  • Kotlin
fun getScore(value: Int): Int {
   / / logic...
   return 2 * value
}

// as a single expression function

fun getScore(value: Int): Int = 2 * value
Copy the code

The constructor constructor

  • Java
public class Utils {

    private Utils(a) { 
      // This class cannot be instantiated publicly
    }
    
    public static int getScore(int value) {
        return 2* value; }}Copy the code
  • 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
    }

}
Copy the code

Get Set constructor

  • Java
public class Developer {

    private String name;
    private int age;

    public Developer(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName(a) {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge(a) {
        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;
        returnname ! =null ? name.equals(developer.name) : developer.name == null;

    }

    @Override
    public int hashCode(a) {
        intresult = name ! =null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }

    @Override
    public String toString(a) {
        return "Developer{" +
                "name='" + name + '\' ' +
                ", age=" + age +
                '} '; }}Copy the code
  • Kotlin
data class Developer(val name: String, val age: Int)

Copy the code

Prototype extension

  • Java
public class Utils {

    private Utils(a) { 
      // This class cannot be instantiated publicly
    }
    
    public static int triple(int value) {
        return 3* value; }}int result = Utils.triple(3);

Copy the code
  • Kotlin
fun Int.triple(a): Int {
  return this * 3
}

var result = 3.triple()
Copy the code
  • Java
public enum Direction {
        NORTH(1),
        SOUTH(2),
        WEST(3),
        EAST(4);

        int direction;

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

        public int getDirection(a) {
            returndirection; }}Copy the code
  • Kotlin
enum class Direction(val direction: Int) {
    NORTH(1),
    SOUTH(2),
    WEST(3),
    EAST(4);
}
Copy the code