JavaStart
910 subscribers
910 photos
28 videos
620 links
Учи Java вместе с нами!
Наша платформа с курсом - https://javastart.tech
Ютуб с обучающими видео - https://www.youtube.com/@javastart_tech
Download Telegram
Модификатор доступа static в Java. Часть 3.

Причины использовать статические поля.

1) Когда значение поля должно быть общим для всех объектов класса, в котором оно определено;

2) Когда значение поля не зависит от наличия объектов класса, в котором оно определено;

3) Когда значение поля может быть изменено из любого объекта класса, в котором оно определено.

Ключевые моменты статических полей.

1) Статические переменные могут быть созданы только, как переменные класса. Они не могут быть локальными переменными (IDEA выдаст ошибку Modifier 'static' not allowed here или java: illegal start of expression). Картинка 1.

2) К статическим полям класса можно получить доступ без создания объекта, используя имя класса (ссылка на объект не нужна). Картинка 2.

3) Несмотря на то, что получить доступ к статическим полям можно с помощью ссылки на объект (например, car1.numberOfCars), мы должны воздерживаться от её применения, поскольку в этом случае становится не совсем понятно, является ли эта переменная переменной экземпляра или же переменной класса. Вместо этого всегда необходимо ссылаться на статические переменные, используя имя класса (например, Car.numberOfCars). Картинка 3.

4) Статические поля не сериализуются. При десериализации такие поля будут иметь значения по умолчанию, заданные JVM при создании объекта.

👉 JavaStart. Подписаться
👍92🔥211
Всем привет! Это снова Леонид :)

Хочу рассказать вам, как я сменил свою первую работу в IT.

Изначально я пришел в T-systems стажером, но через два месяца меня перевели в junior разработчики. Я активно выполнял задачи, всегда изучал что-то новое и стремился к росту.

Спустя еще примерно пол года я решил поговорить со своим менеджером о повышении на следующий уровень. Это даже не переход с junior на middle, а просто небольшая ступень между junior и junior +.

Мы обговорили цели и задачи, которые я должен выполнить. Прошло некоторое время, я работал над поставленными задачами, все шло хорошо, но менеджеры предложили еще немного подождать и дали новые задачи.

Тут я решил посмотреть, что сейчас рынок может мне предложить, обновил резюме и пошел на собеседования. За тот период у меня было около 30 собеседований в разные компании и в итоге выбрал оффер от компании Nexign.

В T-systems я стремился к повышению на 30 процентов, что может показаться много, но для junior разработчика это вполне нормально. Nexign сделал предложение на +250 процентов и должность middle. Это был первый серьезный скачок в карьере.

Это был интересный опыт. Главное всегда поддерживать себя в форме и быть готовым к собеседованиям, если на текущем месте работы все идет не так как хотелось бы.

В рамках курса JavaStart мы хорошо готовим ребят к собеседованиям, проводя собеседования, близкие к реальным и с обязательной обратной связью.

Пишите в комментариях как у вас дела :)

👉 JavaStart. Подписаться
👍124🔥4👏1
Модификатор доступа static в Java. Часть 4.

Статические методы (методы классов).

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

В противном случае при компиляции будет выведена ошибка (Картинка 1).

Пример статического метода:

На Картинке 2 представлен утилитный метод sumOfInts, принимающий на вход последовательность целых чисел и возвращающий сумму этих чисел.

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

В JDK служебные классы активно используются: Collections, Math, Arrays; StringUtils из Apache или CollectionUtils из Spring framework. Все методы этих классов являются статическими.

👉 JavaStart. Подписаться
👍8322🔥2
😁102💯21
Модификатор доступа static в Java. Часть 5.

Статические методы в интерфейсах.

В версии Java 8 появилась возможность определения статических методов в интерфейсах.

Их поведение напоминает поведение методов по умолчанию (default methods), но есть существенные отличия – они не могут быть переопределены методами в реализующих интерфейс классах.

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

Пример кода с использованием статического метода в интерфейсе можно увидеть на Картинке 1.

Обратите внимание, что для использования статических методов интерфейса не нужно использовать ключевое слово «implements». Достаточно (и это необходимо) использовать имя интерфейса вместе с именем статического метода. В других случаях, статические методы интерфейса видны только методам этого интерфейса.

👉 JavaStart. Подписаться
👍121🎉1🤓1
Модификатор доступа static в Java. Часть 6.

Какие же причины использовать статические методы? Вопрос из собеседования на Junior java разработчика.

– Для доступа / управления статическими переменными и другими статическими методами, которые не зависят от объектов;

– Для служебных, вспомогательных классов и интерфейсов, поскольку не требуют создания объектов и соответственно, обеспечивают большую производительность (не создаются лишние объекты в памяти);

– Когда методу требуется доступ лишь к статическим полям класса.

👉 JavaStart. Подписаться
👍63🔥21
😁911💯1
Важность дисциплины в обучении, настойчивости и самоорганизации.

Случай из жизни.

В одной компании наш выпускник - стажер по Java-разработке присоединился к команде, работающей над разработкой системы управления заказами для интернет-магазина. У него базовый опыт в программировании на Java, но он был решительным и готовым учиться новому.

Стажеру была предоставлена задача создать новый модуль в системе, отвечающий за управление запасами товаров. Это требовало изучения бизнес-логики и существующей архитектуры системы, а также использования различных Java-фреймворков и библиотек.

Стажер активно приступил к изучению и решению задачи. Он проводил исследования, изучал документацию и обращался за помощью к опытным разработчикам в команде. Он использовал Spring Framework для управления зависимостями и разработки веб-приложений, а также JPA для работы с базой данных.

По мере выполнения работы стажер показывал свои результаты и прогресс своему наставнику и другим членам команды. Они были впечатлены его активностью, самообучением и умением решать сложные задачи. Стажер также принимал обратную связь и вносил необходимые исправления в свой код.

В конечном итоге, наш выпускник успешно завершил свою задачу и интегрировал новый модуль в систему. Конечно, не без помощи наставника. Его код был проверен и прошел код-ревью, и его функциональность была успешно протестирована. Команда была приятно удивлена результатами работы стажера и его способностью самостоятельно развиваться и применять новые навыки.

Результата удалось добиться сочетая хард и софт скиллы. Очень важно прокачивать софт скиллы как для собеседования так и для работы. Многие работодатели обращают на это внимания при найме сотрудников и нередко это является одним из главных критериев.

Как думаете, что важнее в этом кейсе, хард или софт скиллы? Пишите свои мысли в комментари 👇

👉 JavaStart. Подписаться
🔥10👍51🤓1👨‍💻1
Модификатор доступа static в Java. Часть 7.

Ключевые моменты.

Очень нужная информация как для понимания, так и для успешного ответа на собеседовании на вопросы про ключевое слово static.

1) Статические методы в Java вызываются во время компиляции, а не во время исполнения;

2) Поскольку переопределение метода является частью полиморфизма во время выполнения (Runtime Polymorphism), статические методы не могут быть переопределены. Это справедливо также для статических методов интерфейса;

3) Абстрактные методы не могут быть статическими;

4) Статические методы не могут использовать ключевые слова this или super;

5) Методы экземпляра класса также могут непосредственно обращаться к статическим переменным и статическим методам;

6) Статические методы могут обращаться ко всем статическим переменным и другим статическим методам;

7) Статические методы не могут напрямую обращаться к переменным экземпляра и методам экземпляра. Для этого им нужна ссылка на объект;

8) Статические поля и методы не являются потокобезопасными. Т.к. каждый экземпляр класса имеет одну и ту же копию статической переменной, такая переменная нуждается в защите от одновременного обращения к ней нескольких потоков. Для этого статическая переменная должна быть синхронизирована;

9) Статические методы связываются во время компиляции, в отличие от не статических методов, которые связываются во время исполнения.

👉 JavaStart. Подписаться
👍63🤓21
Какой метод Stream API используется для преобразования элементов стрима в другие значения?
Anonymous Quiz
12%
collect()
25%
reduce()
5%
filter()
48%
map()
3%
get()
8%
Узнать ответ
5👍51🎉1
Вопрос из собеседований.

Каким будет результат сравнения в следующем коде на Картинке?

Вопрос на понимание работы пула строк в Java и на понимание сравнения строк.

Разберем детально:

1) Переменная s1 ссылается на строку в пуле уникальных строк в памяти, переменная s2 ссылается на ту же саму строку в пуле уникальных строк, что и переменная s1, первое сравнение будет true, так как s1 и s2 ссылаются на один и тот же объект.

2) Переменная s3 ссылается на новый объект, который не находится в пуле уникальных строк, так как он создан через new, следовательно второе сравнение будет false, так как сравниваем переменные которые ссылаются на на два разных объекта.

3) Третье сравнение будет true, так как мы сравниваем строки посимвольно на эквивалентность через .equals(), а содержимое данных строк одинаково.

👉 JavaStart. Подписаться
👍1532👏1
На нашем Ютуб канале вышло новое обучающее видео по Интерфейсам в Java.

Друзья, тем, кто лучше воспринимает информацию по видео, приятного просмотра!

Переходите по ссылке и смотрите скорее!

И конечно же подписывайтесь на наш канал JavaStart, чтобы не пропустить следующие обучающие видеоуроки по нашей любимой Java👩‍💻

https://www.youtube.com/watch?v=OGhfHmMFdAc

👉 JavaStart. Подписаться
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102😁1🤓1👨‍💻1
Модификатор доступа static в Java. Часть 8.

Излюбленная тема почти всех интервьюеров - Статический блок инициализации.

Статический блок используется для инициализации статических переменных. Хотя статические переменные могут быть инициализированы непосредственно во время объявления, бывают ситуации, когда нам требуется выполнить многострочную обработку.

В таких случаях пригодятся статические блоки.
Либо, если статические переменные во время инициализации требуют дополнительной логики, состоящей из нескольких операторов, то также можно использовать статический блок.

Пример статического блока.

Предположим, мы хотим инициализировать объект, представляющий собой список с некоторыми предопределенными значениями.
Это легко сделать с помощью статических блоков (Картинка 1).

В этом примере невозможно инициализировать объект List всеми начальными значениями вместе с объявлением, поэтому используется статический блок.

Код на Картинке 2 демонстрирует особенность статических блоков — они выполняются раньше конструкторов и при создании нескольких объектов класса, статический блок выполняется только один раз.

👉 JavaStart. Подписаться
👍62👨‍💻21🤓1
😁124👨‍💻1