Как передаются объекты в java

Аватар пользователя Konstantin
Konstantin
12 июня 2024

В языке Java всегда используется только вызов по значению. Это значит, что метод получает копии значений всех параметров. По этой причине метод не может модифицировать содержимое ни одного параметра, переданного ему.

Кей Хорстманн, Java Библиотека профессионала Том 1, глава 4.5 Параметры методов.

1 0
Аватар пользователя Иван Полежаев
Иван Полежаев
12 апреля 2023

В Java объекты передаются по ссылке, а не по значению. Это означает, что при передаче объекта в метод или при присваивании переменной ссылки на объект, фактически копируется только ссылка, а не сам объект.

Например, если у вас есть класс Person:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

И у вас есть метод, который принимает объект этого класса и изменяет его свойства:

public static void changePerson(Person person) {
    person.setName("John");
    person.setAge(30);
}

Вызов этого метода не создаст новый объект, а изменит свойства существующего объекта, так как объект передается по ссылке:

Person person = new Person("Jane", 25);
changePerson(person);

System.out.println(person.getName()); // => John
System.out.println(person.getAge()); // => 30

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

0 1

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

Тест-драйв

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.