Learn Pain Less

HomeOur TeamContact
Kotlin
Basic Syntax of Kotlin Programming Language
Pawneshwer Gupta
Pawneshwer Gupta
June 30, 2017
1 min
Basic Syntax of Kotlin Programming Language

Basic Syntax of Kotlin Programming Language

Package definition and imports

Package specification should be at the top of the source file:

package my.demo
import kotlin.text.*
// ...

It is not required to match directories and packages: source files can be placed arbitrarily in the file system.

Program entry point

An entry point of a Kotlin application is the main function.

fun main() {
println("Hello world!")
}

Functions

Function having two Int parameters with Int return type:

fun sum(a: Int, b: Int): Int {
return a + b
}

Function with an expression body and inferred return type:

fun sum(a: Int, b: Int) = a + b

Function returning no meaningful value:

fun printSum(a: Int, b: Int): Unit {
println("sum of $a and $b is ${a + b}")
}

Unit return type can be omitted:

fun printSum(a: Int, b: Int) {
println("sum of $a and $b is ${a + b}")
}

Variables

Read-only local variables are defined using the keyword val. They can be assigned a value only once.

val a: Int = 1 // immediate assignment
val b = 2 // `Int` type is inferred
val c: Int // Type required when no initializer is provided
c = 3 // deferred assignment

Variables that can be reassigned use the var keyword:

var x = 5 // `Int` type is inferred
x += 1

Top-level variables:

val PI = 3.14
var x = 0
fun incrementX() {
x += 1
}

Comments

Just like most modern languages, Kotlin supports single-line (or end-of-line) and multi-line (block) comments.

// This is an end-of-line comment
/* This is a block comment
on multiple lines. */

Block comments in Kotlin can be nested.

/* The comment starts here
/* contains a nested comment */
and ends here. */

String templates

var a = 1
// simple name in template:
val s1 = "a is $a"
a = 2
// arbitrary expression in template:
val s2 = "${s1.replace("is", "was")}, but now is $a"

Conditional expressions

fun maxOf(a: Int, b: Int): Int {
if (a > b) {
return a
} else {
return b
}
}

In Kotlin, if can also be used as an expression:

fun maxOf(a: Int, b: Int) = if (a > b) a else b

Nullable values and null checks

A reference must be explicitly marked as nullable when null value is possible.

Return null if str does not hold an integer:

fun parseInt(str: String): Int? {
// ...
}

Use a function returning nullable value:

fun printProduct(arg1: String, arg2: String) {
val x = parseInt(arg1)
val y = parseInt(arg2)
// Using `x * y` yields error because they may hold nulls.
if (x != null && y != null) {
// x and y are automatically cast to non-nullable after null check
println(x * y)
}
else {
println("'$arg1' or '$arg2' is not a number")
}
}

or

// ...
if (x == null) {
println("Wrong number format in arg1: '$arg1'")
return
}
if (y == null) {
println("Wrong number format in arg2: '$arg2'")
return
}
// x and y are automatically cast to non-nullable after null check
println(x * y)

Type checks and automatic casts

The is operator checks if an expression is an instance of a type. If an immutable local variable or property is checked for a specific type, there’s no need to cast it explicitly:

fun getStringLength(obj: Any): Int? {
if (obj is String) {
// `obj` is automatically cast to `String` in this branch
return obj.length
}
// `obj` is still of type `Any` outside of the type-checked branch
return null
}

or

fun getStringLength(obj: Any): Int? {
if (obj !is String) return null
// `obj` is automatically cast to `String` in this branch
return obj.length
}

or even

fun getStringLength(obj: Any): Int? {
// `obj` is automatically cast to `String` on the right-hand side of `&&`
if (obj is String && obj.length > 0) {
return obj.length
}
return null
}

for loop

val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}

or

val items = listOf("apple", "banana", "kiwifruit")
for (index in items.indices) {
println("item at $index is ${items[index]}")
}

while loop

val items = listOf("apple", "banana", "kiwifruit")
var index = 0
while (index < items.size) {
println("item at $index is ${items[index]}")
index++
}

when expression

fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}

Ranges

Check if a number is within a range using in operator:

val x = 10
val y = 9
if (x in 1..y+1) {
println("fits in range")
}

Check if a number is out of range:

val list = listOf("a", "b", "c")
if (-1 !in 0..list.lastIndex) {
println("-1 is out of range")
}
if (list.size !in list.indices) {
println("list size is out of valid list indices range, too")
}

Iterating over a range:

for (x in 1..5) {
print(x)
}

or over a progression:

for (x in 1..10 step 2) {
print(x)
}
println()
for (x in 9 downTo 0 step 3) {
print(x)
}

Collections

Iterating over a collection:

for (item in items) {
println(item)
}

Checking if a collection contains an object using in operator:

when {
"orange" in items -> println("juicy")
"apple" in items -> println("apple is fine too")
}

Using lambda expressions to filter and map collections:

val fruits = listOf("banana", "avocado", "apple", "kiwifruit")
fruits
.filter { it.startsWith("a") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { println(it) }

Creating basic classes and their instances

val rectangle = Rectangle(5.0, 2.0)
val triangle = Triangle(3.0, 4.0, 5.0)

Source : Kotlin Lang

Subscribe to our newsletter!

We'll send you the best of our blog just once a month. We promise.

Tags

startCLIIDE

Share


Pawneshwer Gupta

Pawneshwer Gupta

Software Developer

Pawneshwer Gupta works as a software engineer who is enthusiastic in creating efficient and innovative software solutions.

Expertise

Python
Flutter
Laravel
NodeJS

Social Media

Related Posts

Getting start with Kotlin
Getting start with Kotlin
June 30, 2017
1 min
Working with Files, Folders java
Java
Working with Files, Folders java
March 25, 2015
1 min
Learn Pain Less  © 2024, All Rights Reserved.
Crafted with by Prolong Services

Quick Links

Advertise with usAbout UsContact Us

Social Media