1.1.50. fejezet, Kotlin

Kapcsolódó hivatkozások

A Kotlin egy JVM alapú, erősen típusos nyelv, amit Android fejlesztések közben ismertem meg. Telepítési leírás itt.

Fordítás és futtatás:

kotlinc hello.kt -include-runtime -d hello.jar
java -jar hello.jar

Adattípusok

Nullable típus

var nullableVar: Int? = null
var x: List<String?> = listOf(null, null, null)
var y: List<String>? = null
var z: List<String?>? = null
z = listOf(null, null, null)
 
var nullableString: String? = null
nullableString = nullableString?.lowercase() // step over this line
 
var result = nullableString?.lowercase()
println(result) // null
 
fun foo(car Car) {
    var extras : MutableList<String> = car.defaultExtras ?: mutableListOf()
}
 
fun bar(car Car) {
    var manufacturer : String = car.manufacturer ?: throw IllegalArgumentException("Manufacturer can't bee null")
}
 
// I know that it can be nullable, but I know it isn't it
try {
     val upper = nullableString!!.uppercase()
     println(upper)
 } catch(e:NullPointerException) {
     println("Null value!")
 }

Tömb típus

    var riversArray = arrayOf("Nile", "Amazon", "Yangtze")
    riversArray += "Mississippi"
    println(riversArray.joinToString()) // Nile, Amazon, Yangtze, Mississippi
 
    val simpleArray = intArrayOf(1, 2, 3)
    println(simpleArray.joinToString()) // 1, 2, 3
 
    val multipliedArray = Array<Int>(3, {it * 2})
    println(multipliedArray.joinToString()) // 0, 2, 4
 
    println(multipliedArray[2]) // 4
 
    val mixedArray = arrayOf(1,"something")
    println(java.util.Arrays.toString(mixedArray)) // 1, something
 
    var shuffledArray = intArrayOf(1, 2, 3, 4, 5)
    shuffledArray.shuffle()
    println(shuffledArray.joinToString()) //3, 2, 5, 4, 1
 
    shuffledArray.sort()
    println(shuffledArray.joinToString()) //1, 2, 3, 4, 5
 
    java.util.Collections.binarySearch(shuffledArray, 3) // 2
 
    val swappedArray: IntArray = intArrayOf(1,2,3,4,5)
    val swappedList : MutableList<Int> = swappedArray.toMutableList()
    java.util.Collections.swap(swappedList, 1,3)
    println(swappedList.toString()) // 1, 4, 3, 2, 5

Csak olvasható állandó deklarálása

    val count: Int = 2

Változók deklarálása

    var count: Int = 2
    count = count + 5
    count++

Funkció deklarása

fun main() {
    val msg: String = "Hello world"
    println(msg)
}

Raw string

    val multipleLines = """String
        |newLine here
        |end of String""".trimMargin()
    println(multipleLines)
//String
//newLine here
//end of String

String template

fun main() {
    val numberOfPhotos = 100
    val photosDeleted = 10
    println("$numberOfPhotos photos")
    println("$photosDeleted photos deleted")
    println("${numberOfPhotos - photosDeleted} photos left")
}

Logikai operátorok

  • || – disjunction (logical OR)
  • && – conjunction (logical AND)
  • ! – negation (logical NOT)

Aritmetikai operátorok

  • + (addition)
  • - (substraction)
  • * (multiplication)
  • / (division)
  • % (remainder)

Bitenkénti operátorok

  • shl(bits) – signed shift left
  • shr(bits) – signed shift right
  • ushr(bits) – unsigned shift right
  • and(bits) – bitwise AND
  • or(bits) – bitwise OR
  • xor(bits) – bitwise XOR
  • inv() – bitwise inversion
val x = (1 shl 2) and 0x000FF000

Számok összehasonlítása

  • Equality checks: a == b and a != b
  • Comparison operators: a < b, a > b, a <= b, a >= b
  • Range instantiation and range checks: a..b, x in a..b, x !in a..b

Típus ellenőrzés

if (obj is String) {
    print(obj.length)
}
 
if (obj !is String) {
    print("something other")
}

Okos típusváltás

fun demo(x: Any) {
    if (x is String) {
        print(x.length) // x is automatically cast to String
    }
}

Csomagok és import

package hu.valami.nev
 
import hu.valami.nev.osztaly

Részletek itt.