[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-core-kakim-obrazom-peredayutsya-peremennye-v-metody-po-znacheniyu-ili-po-ssylke":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":18,"progress":19,"seo":20},55,"kakim-obrazom-peredayutsya-peremennye-v-metody-po-znacheniyu-ili-po-ssylke",2,"java-core","Java Core","☕","Каким образом передаются переменные в методы, по значению или по ссылке?","В Java параметры всегда передаются только по значению, что определяется как «скопировать значение и передать копию». С примитивами это будет копия содержимого. Со ссылками - тоже копия содержимого, т.е. копия ссылки. При этом внутренние члены ссылочных типов через такую копию изменить возможно, а вот саму ссылку, указывающую на экземпляр - нет.\n\nПример:\n```java\npublic class PassByValueExample {\n    public static void main(String[] args) {\n        \u002F\u002F 1. Примитивный тип — значение копируется, оригинал не изменяется\n        int x = 10;\n        changeValue(x);\n        System.out.println(x); \u002F\u002F 10 — значение не изменилось\n\n        \u002F\u002F 2. Ссылочный тип — копия ссылки указывает на тот же объект,\n        \u002F\u002F    поэтому изменение внутреннего состояния объекта видно снаружи\n        StringBuilder sb = new StringBuilder(\"Hello\");\n        appendText(sb);\n        System.out.println(sb); \u002F\u002F Hello World — содержимое объекта изменилось\n\n        \u002F\u002F 3. Переприсвоение ссылки внутри метода не влияет на оригинал\n        StringBuilder sb2 = new StringBuilder(\"Original\");\n        replaceReference(sb2);\n        System.out.println(sb2); \u002F\u002F Original — ссылка не изменилась\n    }\n\n    static void changeValue(int val) {\n        val = 99; \u002F\u002F изменяем локальную копию\n    }\n\n    static void appendText(StringBuilder builder) {\n        builder.append(\" World\"); \u002F\u002F изменяем объект через копию ссылки\n    }\n\n    static void replaceReference(StringBuilder builder) {\n        builder = new StringBuilder(\"New\"); \u002F\u002F переприсваиваем локальную копию ссылки\n    }\n}\n```","","junior",[15,16,17],"core","methods","pass-by-value",[],null,{"title":21,"description":22,"ogTitle":21,"ogDescription":23,"keywords":24,"schemaAnswer":32,"featuredSnippetReady":33},"Передача переменных в методы Java: по значению или по ссылке? — Gymterview","Как передаются переменные в методы Java — по значению или по ссылке. Разбор передачи примитивов и ссылочных типов с примерами кода.","В Java параметры всегда передаются по значению — копируется значение примитива или копия ссылки на объект.",[25,26,27,28,29,30,31],"передача по значению","pass by value","передача по ссылке","Java","параметры метода","примитивы","ссылки","В Java параметры всегда передаются только по значению. Для примитивов копируется значение, для ссылочных типов — копия ссылки. Через копию ссылки можно изменить внутреннее состояние объекта, но нельзя изменить саму оригинальную ссылку, указывающую на экземпляр.",true]