Переменные в Kotlin, отличия от Java: "var" против "val"?

Я пытаюсь выучить Kotlin. Что такое val, var а также internal в котлине по сравнению с явой?

В Java:

 RadioGroup radioGroup;
 RadioButton button;
 Button submit;

После преобразования это показывает:

 internal var radioGroup: RadioGroup
 internal var button: RadioButton
 internal var submit: Button

2 ответа

Решение

val а также var это два ключевых слова, которые вы можете использовать для объявления переменных (и свойств). Разница в том, что с помощью val дает вам переменную только для чтения, которая аналогична использованию final Ключевое слово в Java.

var x = 10    // int x = 10;
val y = 25    // final int y = 25;

С помощью val когда вы можете, это соглашение в Котлине, и вы должны только сделать что-то var если вы знаете, что вы будете где-то менять его значение.

См. Официальную документацию по определению локальных переменных и объявлению свойств.


internal это модификатор видимости, который не существует в Java Он помечает члена класса, который будет виден только внутри модуля, в котором он находится. Это похоже на вид по умолчанию package видимость дает вам в Java (именно поэтому конвертер будет использовать его при преобразовании членов с package видимость). Однако это не совсем то же самое. Кроме того, обратите внимание, что это не видимость по умолчанию в Kotlin, классы и их члены в Kotlin public по умолчанию.

В документации есть больше о модификаторах видимости.

val: неизменяемая переменная данных

var: переменная переменная данных

Когда вы конвертировали свой Java-код в Kotlin:

  1. Конвертер обнаружил, что вы не инициализировали переменные, поэтому он сделал их var(изменяемый), как вы будете инициализировать их позже.

  2. Вероятно, ваши переменные не используются, поэтому конвертер сделал их внутренними, предполагая, что вы не будете использовать их вне пакета.

Для получения дополнительной информации о var а также var читать это, и для internal прочитайте это.

В котлине мы можем объявить переменную двух типов: val а также var.val не может быть переназначен, он работает как конечная переменная.

val x = 2
x=3 // cannot be reassigned

С другой стороны, var можно переназначить, он изменяемый

var x = 2
x=3 // can be reassigned

val использовать для объявления конечной переменной. Характеристикипеременных val

  1. Должен быть инициализирован
  2. значение нельзя изменить или переназначить

var - это общая переменная

  1. Мы можем инициализировать позже, используя модификатор lateinit

    [lateinit также используйте для глобальной переменной, мы не можем использовать ее для локальной переменной]

  2. значение можно изменить или переназначить, но не в глобальной области

val в kotlin похоже на ключевое слово final в java

Другие вопросы по тегам