Kotlin for Java Developers

Other topics

Declaring Variables

In Kotlin, variable declarations look a bit different than Java's:

val i : Int = 42
  • They start with either val or var, making the declaration final ("value") or variable.

  • The type is noted after the name, separated by a :

  • Thanks to Kotlin's type inference the explicit type declaration can be obmitted if there is an assignment with a type the compiler is able to unambigously detect

JavaKotlin
int i = 42;var i = 42 (or var i : Int = 42)
final int i = 42;val i = 42

Quick Facts

  • Kotlin does not need ; to end statements
  • Kotlin is null-safe
  • Kotlin is 100% Java interoperable
  • Kotlin has no primitives (but optimizes their object counterparts for the JVM, if possible)
  • Kotlin classes have properties, not fields
  • Kotlin offers data classes with auto-generated equals/hashCode methods and field accessors
  • Kotlin only has runtime Exceptions, no checked Exceptions
  • Kotlin has no new keyword. Creating objects is done just by calling the constructor like any other method.
  • Kotlin supports (limited) operator overloading. For example, accessing a value of a map can be written like: val a = someMap["key"]
  • Kotlin can not only be compiled to byte code for the JVM, but also into Java Script, enabling you to write both backend and frontend code in Kotlin
  • Kotlin is fully compatible with Java 6, which is especially interesting in regards for support of (not so) old Android devices
  • Kotlin is an officially supported language for Android development
  • Kotlin's collections have built-in disctinction between mutable and immutable collections.
  • Kotlin supports Coroutines (experimental)

Equality & Identity

Kotlin uses == for equality (that is, calls equals internally) and === for referential identity.

JavaKotlin
a.equals(b);a == b
a == b;a === b
a != b;a !== b

See: https://kotlinlang.org/docs/reference/equality.html

IF, TRY and others are expressions, not statements

In Kotlin, if, try and others are expressions (so they do return a value) rather than (void) statements.

So, for example, Kotlin does not have Java's ternary Elvis Operator, but you can write something like this:

val i = if (someBoolean) 33 else 42

Even more unfamiliar, but equally expressive, is the try expression:

val i = try {
    Integer.parseInt(someString)
}
catch (ex : Exception)
{
    42
}

Contributors

Topic Id: 10099

Example Ids: 30990,30991,30992,31005

This site is not affiliated with any of the contributors.