В чем заключается передача по значению

«В чем заключается передача по значению» — вопрос из категории ООП, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java (и Kotlin) передача по значению означает, что при передаче аргумента в метод копируется его значение, а не сам объект. Для примитивных типов (int, float и т.д.) копируется само значение. Для объектов копируется ссылка на объект, но не сам объект.

Пример:

fun modifyPrimitive(value: Int) {
    value = 10 // Ошибка: val cannot be reassigned
}

fun modifyObject(list: MutableList<Int>) {
    list.add(42) // Изменит оригинальный список
    list = mutableListOf(1, 2, 3) // Не повлияет на оригинал
}

val num = 5
modifyPrimitive(num) // num останется 5

val myList = mutableListOf<Int>()
modifyObject(myList) // myList теперь содержит 42