🔍 Ответ на задачу про передачу примитивов в методы в Java
Давайте рассмотрим, что произойдёт при выполнении этого кода:
❓Чего ожидать от вывода?
🔎 В Java при передаче примитивных типов (таких как int) в методы используется передача по значению. Это означает, что в метод inc передаётся копия значения count, а не сама переменная. Таким образом, любые изменения над параметром count в методе inc не влияют на переменную count в методе main.
🌟 Вот шаги выполнения:
В main у нас переменная count равна 123.
Мы вызываем метод inc(count), передавая копию значения count.
В методе inc эта копия увеличивается на 1, но никак не затрагивает оригинальную переменную в main.
Поэтому System.out.println(count); выведет оригинальное значение: 123
🔗 Это пример важной концепции в Java — примитивы передаются по значению, и изменения не сохраняются вне метода. Помните об этом при проектировании ваших программ!
⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️
🔍 Ответ на задачу про неизменяемость объектов в Java
Здесь у нас код, который работает с неизменяемостью объектов в Java:
❓Что выведет этот код?
🤔 Давайте разберёмся. На первый взгляд могло бы показаться, что после вызова метода inc count увеличится. Но это не так.
🔸 Тип Integer — это неизменяемый объект в Java. Кроме того, при передаче в метод inc, создаётся копия ссылки, а не передача по ссылке, как в некоторых других языках.
🔸 Метод count++ использует count локально, создавая новый объект Integer, но не изменяет оригинальный объект count в main.
Таким образом, System.out.println(count); напечатает: 123
😯 Не забывайте об этих особенностях при работе с объектами! Если у вас есть мысли или вопросы, делитесь ими в комментариях! Подписывайтесь и ставьте лайк, чтобы не пропустить новые посты! 🤗
#Java #неизменяемость #Integer #java_interview_tasks
Давайте рассмотрим, что произойдёт при выполнении этого кода:
public static void main(String[] args) {
int count = 123;
inc(count);
System.out.println(count);
}
private static void inc(int count) {
count++;
}❓Чего ожидать от вывода?
🔎 В Java при передаче примитивных типов (таких как int) в методы используется передача по значению. Это означает, что в метод inc передаётся копия значения count, а не сама переменная. Таким образом, любые изменения над параметром count в методе inc не влияют на переменную count в методе main.
🌟 Вот шаги выполнения:
В main у нас переменная count равна 123.
Мы вызываем метод inc(count), передавая копию значения count.
В методе inc эта копия увеличивается на 1, но никак не затрагивает оригинальную переменную в main.
Поэтому System.out.println(count); выведет оригинальное значение: 123
🔗 Это пример важной концепции в Java — примитивы передаются по значению, и изменения не сохраняются вне метода. Помните об этом при проектировании ваших программ!
⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️⚡️
🔍 Ответ на задачу про неизменяемость объектов в Java
Здесь у нас код, который работает с неизменяемостью объектов в Java:
public static void main(String[] args) {
Integer count = 123;
inc(count);
System.out.println(count);
}
private static void inc(Integer count) {
count++;
}❓Что выведет этот код?
🤔 Давайте разберёмся. На первый взгляд могло бы показаться, что после вызова метода inc count увеличится. Но это не так.
🔸 Тип Integer — это неизменяемый объект в Java. Кроме того, при передаче в метод inc, создаётся копия ссылки, а не передача по ссылке, как в некоторых других языках.
🔸 Метод count++ использует count локально, создавая новый объект Integer, но не изменяет оригинальный объект count в main.
Таким образом, System.out.println(count); напечатает: 123
😯 Не забывайте об этих особенностях при работе с объектами! Если у вас есть мысли или вопросы, делитесь ими в комментариях! Подписывайтесь и ставьте лайк, чтобы не пропустить новые посты! 🤗
#Java #неизменяемость #Integer #java_interview_tasks
🔥11👍4😨2❤1🐳1
🔍 Ответ на задачу про Integer: Когда 100 == 100, а 1000 != 1000? 🧐
Многие начинающие (и не только) джависты спотыкаются на сравнении объектов-оберток через
Объяснение:
В Java существует Integer Cache. При автоупаковке (autoboxing) вызывается метод
Для экономии памяти JVM кеширует объекты Integer в диапазоне от -128 до 127.
Поэтому
Для числа 1000 кеша нет, создаются два разных объекта в куче — и
Вывод:
Никогда не сравнивайте объекты-обертки через
⚡️ Не перепутайте:
- Для сравнения значений объектов всегда используйте
- Помните, что верхнюю границу кеша можно изменить через флаг
Хочешь больше таких нюансов? Ставь 🔥 и делись с коллегами!
#java #integer #cache #jvm #autoboxing #interview #java_interview_tasks
Многие начинающие (и не только) джависты спотыкаются на сравнении объектов-оберток через
==.Объяснение:
В Java существует Integer Cache. При автоупаковке (autoboxing) вызывается метод
Integer.valueOf(int).Для экономии памяти JVM кеширует объекты Integer в диапазоне от -128 до 127.
Поэтому
a и b ссылаются на один и тот же объект в кеше — и == возвращает true.Для числа 1000 кеша нет, создаются два разных объекта в куче — и
== (сравнение ссылок) возвращает false.Вывод:
Никогда не сравнивайте объекты-обертки через
==, если только вы не хотите проверить идентичность ссылок.⚡️ Не перепутайте:
- Для сравнения значений объектов всегда используйте
.equals().- Помните, что верхнюю границу кеша можно изменить через флаг
-XX:AutoBoxCacheMax=<size>.Хочешь больше таких нюансов? Ставь 🔥 и делись с коллегами!
#java #integer #cache #jvm #autoboxing #interview #java_interview_tasks
🔥5👍3❤1