Avito.tech 27.01.2025Java

В чем разница передачи параметров по ссылке и значению?

В Java все аргументы метода передаются по значению, то есть копируется значение переменной (даже если она ссылочного типа). Однако у ссылочных переменных копируется лишь значение ссылки, а не объекта, на который она ссылается. Поэтому, если произойдет изменение состояния объекта, на который ссылается переданная ссылка, то эти изменения будут отражены на объекте, на который ссылается исходная переменная. Таким образом, то, что большинство людей называют "передачей по ссылке", на самом деле называется "передачей значения ссылки".

Пример

java

copy icon

Копировать

public class Test {
    public static void main(String[] args) {
        StringBuffer str = new StringBuffer("hello");
        change(str);
        System.out.println(str);
    }

    public static void change(StringBuffer newStr) {
        newStr.append(" world");
    }
}

В этом примере метод change() принимает ссылку на объект. StringBuffer и модифицирует его, добавляя к нему строку " world". В методе main() переменная str также ссылается на этот же самый объект StringBuffer , поэтому после вызова метода change() будет выведена строка "hello world".

avatar icon

Софи собрала все вопросы — тренируйся и получай офферы быстрее!Попробовать бесплатно

Дополнительный пример, который отражает js

js

copy icon

Копировать

"use strict";

document.addEventListener("DOMContentLoaded", function () {
  if (window.restaraunts && window.restaraunts.length > 0) {
    if (typeof ymaps === "undefined") {
      let script = document.createElement("script");
      script.src = "https://api-maps.yandex.ru/2.1/?lang=ru_RU";
      script.onload = initMap;
      document.head.appendChild(script);
    } else {
      ymaps.ready(initMap);
    }
  }
});
как отвечать на вопроспример собеседованияфреймворки на собеседованиитипичные вопросы juniorинтервью вопросы и ответы