Tartalomjegyzék
Kotlin nyelv
- Szerző: Sallai András
- Copyright © 2020, Sallai András
- Szerkesztve: 2020, 2023
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Helló világ
- prog.kt
fun main() { println("Helló Világ!") }
Fordítás:
kotlinc src/prog.kt -d bin
Futtatás:
java -cp bin ProgKt
JVM fordítás:
kotlinc prog.kt -include-runtime -d prog.jar
Kapunk egy prog.jar fájlt.
Futtatás:
java -jar prog.jar
A kotlin forráskódok kiterjesztése a következők egyike lehet:
- .kt
- .kts
- .ktm
Megjegyzés
Egysoros megjegyzés:
// egysoros megjegyzés
Többsoros megjegyzés:
/*
több
soros
megjegyzés
*/
Kivitel
fun main() { print("Szám: ") }
fun main() { println("Eredmény: ") }
Ha a println() számára megadok egy kifejezést, az kiértékelésre kerül.
- kiir.kt
fun main() { println(5/2) // 2 println(5/2.0) // 2.5 }
Osztás esetén egész osztás történik, ha csak egész számok esetén. Ha szeretnénk a példában található 2, valós számként értelmeztetni, egyszerűen írjuk utána .0 meghatározást.
- kiir.kt
fun main() { val a = 2; println(5 / a) // 2 println(5 / a.toDouble()) //2.5 }
Hibakimenet
A kotlin nem tartalmaz kiírató utasítást, amely az alapértelmezett kimenetre ír. De használhatjuk a Java szabványos utasítását:
System.err.println("Hiba")
Típusok
Egész típusok | |||
---|---|---|---|
Típus | Bitek | Min érték | Max érték |
Long | 64 | -9223372036854775808 | 9223372036854775807 |
Int | 32 | -2147483648 | 2147483647 |
Short | 16 | -32768 | 32767 |
Byte | 8 | -128 | 127 |
Valós típusok | ||
---|---|---|
Típus | Bitek | Leírás |
Double | 64 | 16-17 értékes szám (mint a float a Python nyelven) |
Float | 32 | 6-7 értékes szám |
Egyéb | ||
---|---|---|
Típus | Bitek | Leírás |
Char | 16 | UTF-16 kód |
Boolean | 8 | true vagy false |
Változók
A változókat használat előtt deklarálni kell, vagyis be kell jelenteni. Ezt a var kulcsszóval tehetjük meg.
var szam = 30 var uzenet = "helló"
Csak olvasható változó:
val number = 30 val uzenet = "helló"
A helyes terminológia szerint, ez csak változó, csak olvasható változó. A val kulcsszóval nem deklarálunk állandót, mivel annak értékét nem kell definiálni fordításkor.
Állandó:
const val szam = 2
Típus megahatározása:
var a = 35 var b: Byte = 35; var c: Int = 45; var d: Short = 55;
Ha nem adjuk meg a változó típusát, és belefér az Int típusba, akkor Int lesz.
De beállíthatjuk egy szám típusát:
var e = 65.toShort() var f = 75.toByte()
Formázott kimenet
Használható formátumkarakterek:
Néhány konverziós karakter | |
---|---|
%d | egész kiíratása |
%f | valós kiíratása |
%c | karakter kiíratása |
%s | karaktersorozat kiíratása |
- forma.kt
fun main() { val szam = 34.12345 println("Eredmény: %.2f".format(szam)) }
Matematikai függvények
Hatványozás:
println(Math.pow(2.0,3.0))
Pi értéke:
println(Math.PI)
Szinusz:
fun main() { var szog = 1.0 var rad = szog * Math.PI / 180 println(Math.sin(rad)) }
Bevitel
fun main() { print("Szám: ") val szam = readLine()!!.toInt() println("Szám: "+ szam * 2) }
Beolvasás másként:
import java.util.Scanner fun main() { print("Szám: ") val input = Scanner(System.`in`) val szam = input.nextInt() println("Eredmény: " + szam) }
Újra:
fun main() { print("Szám: ") val szam:Int = readLine()!!.toInt() println("Dupla: " + szam * 2) }
Szelekció
if
fun main() { val szam = 30 if(szam > 0) { println("A szám pozitív") } }
Ellenben:
fun main() { val szam = -30 if(szam > 0) { println("A szám pozitív") }else { println("A szám nulla vagy negatív") } }
Több ágú szelekció:
fun main() { val szam = -30 if(szam > 0) { println("A szám pozitív") }else if(szam < 0) { println("A szám negatív") }else { println("A szám nulla") } }
when
- szelekcio.kt
fun main() { print("Szám: ") var szam = readLine()!!.toInt() when(szam) { 1 -> println("egy") 2 -> println("kettő") 3 -> println("három") 4 -> println("négy") else -> { println("Nem 1..4 közötti szám") } } }
- szelekcio.kt
fun main() { print("Szám: ") var szam = readLine()!!.toInt() when(szam) { 1, 2 -> println("egy vagy kettő") else -> { println("Valami más") } } }
- szelekcio.kt
fun main() { print("Szám: ") var szam = readLine()!!.toInt() var szamok = (10..20).toList() when(szam) { in 1..10 -> println("1 és 10 között") in szamok -> println("10 és 20 között") else -> { println("Valami más") } } }
- szelekcio.kt
fun main() { print("Szám: ") var szam = readLine()!!.toInt() var szamok = (10..20).toList() when(szam) { in 1..10 -> println("1 és 10 között") in szamok -> println("10 és 20 között") !in 20..30 -> println("nem 20 és 30 közötti szám") else -> { println("Valami más") } } }
Ciklus
for
fun main() { for(i in 0..9) { println("Helló Világ!") } }
A 10 kizárása:
fun main() { for(i in 0 until 10) { println(i) } }
Léptetés 2-vel:
fun main() { for(i in 0 until 10 step 2) { println(i) } }
Csökkentés:
fun main() { for(i in 10 downTo 0 step 2) { println(i) } }
while
- ciklus.kt
fun main() { var szam = 0 while(szam<10) { println("Valami") szam++ } }
do..while
- ciklus.kt
fun main() { var szam = 0 do { println("Valami") szam++ }while(szam<10); }
Lista
fun main() { var szamok = (0..9).toList() println(szamok[2]) }
val nevek = listOf("Kati", "Mari", "Dani") for (nev in nevek) { println(nev) }
Karakterek
val ch = 'a' // karakter val uzenet = "alma" // karaktersorozat val elso = uzenet[0] // karakter
Konkatenálás
fun main() { val vnev = "Nagy" val knev = "János" val nev = "$vnev $knev" println(nev) }
Kifejezés kiértékelése
fun main() { val szuletesEv = 1985 val jelenEv = 2020 println("Életkor: ${jelenEv - szuletesEv}") }
Fájlkezelés
File("adat.txt").writeText("alma")
import java.io.File fun main() { File("adat.txt").writeText("alma\nkörte\nbarack") File("adat.txt").forEachLine { println(it) } }
Függvények
- eljaras.kt
fun main() { nevjegy() } fun nevjegy() { println("Nagy János") println("Szolnok") println("Kék utca 32.") }
- fuggveny.kt
fun dupla(szam: Int): Int { return szam * 2 }