Table of Contents
Why Use Kotlin and why switch to this language?
This programming language was developed by Jetbrains. (jet brains build Intellij IDE).if you are an android developer then know the android studio is built on top of IntelliJ IDEA. The first official version 1.0 release was in Feb 2016. Now release version is 1.3. In google I/o 2017 kotlin is now the official android language,kotlin language popularity grow and grow compared to other programming languages.
The question is this why do we use kotlin?
-In kotlin we simply pass function within the function and apart from variable we can also pass a function as a parameter
-Drastically reduce the amount of boilerplate code
-Safety features:Nullability: No more null pointer exception Immutable
-tool friendly( build from the command line in any Java IDE .)
-kotlin is more flexible java simply says kotlin is more powerful compare to java
-kotlin and java are interoperable:
They both can be used together in the same project and you can call into java language from kotlin and kotlin to java language.
1.Using variable :
var a:String ="Java"
val a=” “
Val is immutable and var is mutable in Kotlin. simply says var value is change and Val value can’t be changed.
2.Loop:
Syntax:
for (item in collection) {
// body of loop
}
Example: how to apply condition inside for loop
for(i in 1..5)-->ranges
for (i in 5..1)
for (i in 5 downTo 1)
for (i in 5 downTo 2)
for (i in 1..5 step 2)
for (i in 5 downTo 1 step 2)
3. The When Expression:
switch case is replaced in kotlin with when expression, see how it’s work
when (age) {
1 -> print("age is 1")
2 -> print("age is 2")
3, 4 -> print("age is 3 or 4")
in 5..10 -> print("age is 5, 6, 7, 8, 9, or 10")
else -> print("age is out of range")
}
4. Data Class:
how easy is this, no need to make a set and get method.
Example:
data class John(
val awards:Int,
val age:Int,
val email:String
)
val john = John(1, 20, "john@gmail.com")
5. inheritance and constructor:
In kotlin how inheritance works,
If used to inheritance then the class should be open by open keyword:
open class car{
}
Now use a constructor in this class
Remember: In primary constructor have to init block when you write something in the primary constructor you should use init and secondary constructor has own body.
Example:
Primary constructor
Using inheritance and secondary constructor
fun main(args: Array){
var m=A(4,4,"black")
}
open class car {
var noOfDoors:Int=0
var noOfTyres:Int=0
constructor(noOfDoors: Int,noOfTyres: Int){
this.noOfDoors=noOfDoors
this.noOfTyres=noOfTyres
}
}
class A : car {
var color: String=””
constructor(noOfDoors: Int,noOfTyres: Int,color: String):super(noOfDoors,noOfTyres){
this.color=color
print(“$color or $noOfDoors or $noOfTyres”)
}
}
class B : car(4,4) {
lateinit var color: String
fun speed() {
println(“highest speed is 200”)
}
}
6. Prevents stack Overflow Exception:
This solution in kotlin using (tailored) method
Tailored: In kotlin tailored function that simply executes recursion internally without effected the stack memory.
7.NullSafety:
. NullPointerExceptions, you know, it’s Billion Dollar Mistake.
. Kotlin protects you from nullable types
. If the type is right then the compiler will be auto-cast it for you
8.Extension functions:
. Add a new function to the class. add function to a class without declaring it. the added function behaves like a static.
. In simple words, you will create an extension of a class without entering in class
See in the example you will better get it:
fun main(args: Array) {
val a = A()
println("Pass status: " + a.Passed(50))
println("fail status: " + a.fail(33))
}
fun A.fail(marks: Int): Boolean {
return marks < 33 } class A { // OWN CLASS fun Passed(marks: Int): Boolean { return marks > 33
}
}