Struchkov Mark
83f1e16f77
All checks were successful
continuous-integration/drone/push Build is passing
49 lines
3.5 KiB
Markdown
49 lines
3.5 KiB
Markdown
---
|
||
aliases:
|
||
tags:
|
||
- maturity/🌱
|
||
date: 2024-10-19
|
||
---
|
||
Важно понимать, как происходит передача данных в методы. При передаче [[Примитивный тип|примитивных типов]] в метод, копируется **значение** переменной. Это значит, что ==любые изменения, которые вы делаете с переменной внутри метода, не влияют на оригинальную переменную.==
|
||
|
||
Однако, при передаче [[Ссылочный тип|ссылочных типов]] копируется значение ссылки на объект, а не сам объект. Это значит, что ==если изменить содержимое объекта через эту ссылку, изменения отразятся и на оригинальном объекте==.
|
||
|
||
Это часто становится причиной ошибок у новичков, поэтому представьте, что [[Примитивный тип|примитивные типы]] — это как копирование листа бумаги: вы даете кому-то копию, и он может писать на ней, но оригинал останется нетронутым. А [[Ссылочный тип|ссылочные типы]] — это как передача адреса на дом: если кто-то приедет по адресу и изменит что-то в доме, оригинальный дом изменится, даже если у каждого будет только этот “адрес”.
|
||
|
||
```java
|
||
public class Example {
|
||
public static void main(String[] args) {
|
||
int primitive = 5;
|
||
modifyPrimitive(primitive);
|
||
System.out.println("После изменения примитива: " + primitive); // Выведет 5
|
||
|
||
int[] reference = {1, 2, 3};
|
||
modifyReference(reference);
|
||
System.out.println("После изменения ссылочного типа: " + reference[0]); // Выведет 100
|
||
}
|
||
|
||
public static void modifyPrimitive(int number) {
|
||
number = 10; // Изменение копии примитива, оригинал не затронут
|
||
}
|
||
|
||
public static void modifyReference(int[] array) {
|
||
array[0] = 100; // Изменение объекта по ссылке, оригинальный массив изменится
|
||
}
|
||
}
|
||
```
|
||
- В примере с примитивным типом (int), значение переменной primitive не изменяется, потому что в метод передаётся копия значения.
|
||
- В примере с массивом (ссылочный тип), изменяется оригинальный объект, так как в метод передается ссылка на массив, и мы изменяем содержимое этого объекта через ссылку.
|
||
***
|
||
## Мета информация
|
||
**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]]
|
||
**Родитель**::
|
||
**Источник**::
|
||
**Создана**:: [[2024-10-19]]
|
||
**Автор**::
|
||
### Дополнительные материалы
|
||
-
|
||
|
||
### Дочерние заметки
|
||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||
|