DEV Community

loading...
Cover image for if-then, a statement in Java; but an expression in Kotlin

if-then, a statement in Java; but an expression in Kotlin

tedhagos profile image Ted Hagos Originally published at workingdev.net on ・1 min read

The if construct in Kotlin works almost the same as in Java.

val theQuestion = "Doctor who?"
val answer = "Theta Sigma"
val correctAnswer = ""

if (answer == correctAnswer) {
 println("You are correct")
}

Another example, this time, let's use the else if and else clause.

val d = Date()
val c = Calendar.getInstance()
val day = c.get(Calendar.DAY_OF_WEEK)

if (day == 1) {
 println("Today is Sunday")
}
else if (day == 2) {
 println("Today is Monday")
}
else if ( day == 3) {
 println("Today is Tuesday")
}
else {
  println("Unknown")
}

So far, it looks a lot like how you would you do it in Java. Doesn't it? What's different in Kotlin is, the if construct isn't a statement, it's an expression. Which means, you can assign the result of the if expression to a variable. Like this

val theQuestion = "Doctor who"
val answer = "Theta Sigma"
val correctAnswer = ""

var message = if (answer == correctAnswer) {
 "You are correct"
}
else{
 "Try again"
}

If you have only one statement (each) on the if and else block, you can even shorten the code, like this

var message = if (answer == correctAnswer) "You are correct" else "Try again"

Discussion

pic
Editor guide
Collapse
sergivb01 profile image
sergi

You can actually do this in Java.

String message = (answer == correctAnswer) ? "You are correct" : "Try again";
Collapse
tedhagos profile image
Ted Hagos Author

Yes you can, but that's the ternary operator (Kotlin has that as well, they call it the "Elvis" operator). The article was just pointing out the slight differences between Kotlin and Java; one of them being some statements in Java are treated as expressions in Kotlin.