Avatar ·

Was ist der Unterschied zwischen const und val in Kotlin? Eine ausführliche Erklärung für Anfänger

Hallo zusammen! Ich habe vor kurzem angefangen, Kotlin zu lernen, und bin auf Verwirrung gestoßen. Im Code anderer Entwickler sehe ich zwei ähnliche Schlüsselwörter: `const` und `val`. Auf den ersten Blick tun sie dasselbe – sie deklarieren eine unveränderliche Variable. Aber ich habe das Gefühl, dass es einen Unterschied zwischen ihnen gibt, sonst würden doch nicht beide existieren? Hier ist ein Beispiel, das mich verwirrt: ```kotlin val pi = 3.14159 const val PI = 3.14159 ``` Ich verstehe, dass beide Varianten es mir nicht erlauben, den Wert nach der Initialisierung zu ändern. Aber warum schreibe ich in einem Fall `const val` und im anderen einfach nur `val`? Der Compiler meckert, wenn ich versuche, `const` innerhalb einer Funktion zu verwenden. Warum ist das so? Außerdem habe ich bemerkt, dass `const` nur mit primitiven Typen und Strings verwendet werden kann. Aber `val` funktioniert mit beliebigen Objekten. Wozu braucht man dann überhaupt `const`, wenn `val` dasselbe macht? Erklärt mir bitte auf einfache Weise, worin sie sich unterscheiden und in welchen Situationen man was verwendet. Besonders interessiert mich, wie sich das auf die Leistung auswirkt.