Для чего используется оператор WHERE в SQL?
Anonymous Quiz
7%
Для сортировки результатов
4%
Для группировки записей по значению столбца
86%
Для фильтрации строк на основе заданного условия
0%
Для изменения структуры таблицы
3%
Посмотреть ответ
Модификатор доступа static в Java. Часть 2.
Вопрос про модификатор доступа static является действительно излюбленным на собеседованиях, поэтому продолжаем разбираться!
Статические поля (переменные класса).
В языке Java, если поле объявляется статическим (путем добавления модификатора static), то в независимости от количества созданных объектов класса — всегда будет существовать только один экземпляр статического поля. Значение такого поля будет единым и общим для всех объектов класса, содержащих это поле (Картинка 1).
С точки зрения используемой памяти, статические переменные размещаются в специальном пуле в памяти JVM, называемом Metaspace (до Java 8 он назывался Permanent Generation или PermGen, который был полностью удален и заменен на Metaspace).
Пример статического поля (Картинка 2).
Предположим, у нас есть класс Car с несколькими атрибутами (полями). Каждый экземпляр данного класса будет иметь свою, отличающуюся от других копию этих переменных экземпляра. Значения таких полей можно менять в объектах независимо друг от друга.
А теперь предположим, что нам требуется переменная-счетчик для хранения количества созданных объектов Car, которая являлась бы общей для всех его экземпляров. При этом необходимо, чтобы каждый из них имел к ней доступ и мог изменять.
Тут-то нам и пригодится статическая переменная (numberOfCars).
Теперь для каждого объекта этого класса будет увеличиваться один и тот же экземпляр переменной numberOfCars. Давайте это проверим, посмотрим на Картинку 3.
✅ JavaStart. Подписаться
Вопрос про модификатор доступа static является действительно излюбленным на собеседованиях, поэтому продолжаем разбираться!
Статические поля (переменные класса).
В языке Java, если поле объявляется статическим (путем добавления модификатора static), то в независимости от количества созданных объектов класса — всегда будет существовать только один экземпляр статического поля. Значение такого поля будет единым и общим для всех объектов класса, содержащих это поле (Картинка 1).
С точки зрения используемой памяти, статические переменные размещаются в специальном пуле в памяти JVM, называемом Metaspace (до Java 8 он назывался Permanent Generation или PermGen, который был полностью удален и заменен на Metaspace).
Пример статического поля (Картинка 2).
Предположим, у нас есть класс Car с несколькими атрибутами (полями). Каждый экземпляр данного класса будет иметь свою, отличающуюся от других копию этих переменных экземпляра. Значения таких полей можно менять в объектах независимо друг от друга.
А теперь предположим, что нам требуется переменная-счетчик для хранения количества созданных объектов Car, которая являлась бы общей для всех его экземпляров. При этом необходимо, чтобы каждый из них имел к ней доступ и мог изменять.
Тут-то нам и пригодится статическая переменная (numberOfCars).
Теперь для каждого объекта этого класса будет увеличиваться один и тот же экземпляр переменной numberOfCars. Давайте это проверим, посмотрим на Картинку 3.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
За что отвечает Daily Scrum (ежедневный скрам-митинг)?
Anonymous Quiz
1%
За выбор и назначение проектного менеджера
0%
За обсуждение финансовых результатов проекта
92%
За краткую синхронизацию команды, выявление препятствий и планирование на ближайшие 24 часа
2%
За тестирование продукта перед релизом
5%
Посмотреть ответ
Модификатор доступа 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. Подписаться
Причины использовать статические поля.
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 при создании объекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает команда git checkout <branch>?
Anonymous Quiz
3%
Создаёт новый репозиторий
8%
Откатывает все изменения к начальному состоянию
82%
Переключается на другую ветку
2%
Удаляет все ветки, кроме текущей
5%
Посмотреть ответ
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой тип исключений в Java нужно обязательно либо обработать в блоке try-catch, либо объявить в сигнатуре метода?
Anonymous Quiz
31%
RuntimeException
60%
IOException
5%
Error
3%
ArithmeticException
2%
Посмотреть ответ
Модификатор доступа static в Java. Часть 4.
Статические методы (методы классов).
Подобно статическим полям, статические методы также принадлежат классу, а не объекту, поэтому их можно вызывать без создания экземпляра класса, в котором они находятся. При этом следует помнить, что из статического метода можно получить доступ только к статическим переменным или к другим статическим методам.
В противном случае при компиляции будет выведена ошибка (Картинка 1).
Пример статического метода:
На Картинке 2 представлен утилитный метод sumOfInts, принимающий на вход последовательность целых чисел и возвращающий сумму этих чисел.
Статические методы обычно используются для выполнения операции, не зависящей от создания экземпляра. При этом, они широко используются для создания служебных (утилитных) или вспомогательных классов, поскольку их можно вызывать без создания нового объекта этих классов.
В JDK служебные классы активно используются: Collections, Math, Arrays; StringUtils из Apache или CollectionUtils из Spring framework. Все методы этих классов являются статическими.
✅ JavaStart. Подписаться
Статические методы (методы классов).
Подобно статическим полям, статические методы также принадлежат классу, а не объекту, поэтому их можно вызывать без создания экземпляра класса, в котором они находятся. При этом следует помнить, что из статического метода можно получить доступ только к статическим переменным или к другим статическим методам.
В противном случае при компиляции будет выведена ошибка (Картинка 1).
Пример статического метода:
На Картинке 2 представлен утилитный метод sumOfInts, принимающий на вход последовательность целых чисел и возвращающий сумму этих чисел.
Статические методы обычно используются для выполнения операции, не зависящей от создания экземпляра. При этом, они широко используются для создания служебных (утилитных) или вспомогательных классов, поскольку их можно вызывать без создания нового объекта этих классов.
В JDK служебные классы активно используются: Collections, Math, Arrays; StringUtils из Apache или CollectionUtils из Spring framework. Все методы этих классов являются статическими.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Каково назначение ключевого слова transient в Java?
Anonymous Quiz
3%
Используется для методов, которые нельзя переопределять
2%
Служит для объявления константы
36%
Указывает, что переменная может изменяться из разных потоков
47%
Указывает, что поле не должно сериализовываться
11%
Посмотреть ответ
Модификатор доступа static в Java. Часть 5.
Статические методы в интерфейсах.
В версии Java 8 появилась возможность определения статических методов в интерфейсах.
Их поведение напоминает поведение методов по умолчанию (default methods), но есть существенные отличия – они не могут быть переопределены методами в реализующих интерфейс классах.
Такая особенность позволяет избежать нежелательных результатов, которые возможны в случае некорректной реализации метода в классе.
Пример кода с использованием статического метода в интерфейсе можно увидеть на Картинке 1.
Обратите внимание, что для использования статических методов интерфейса не нужно использовать ключевое слово «implements». Достаточно (и это необходимо) использовать имя интерфейса вместе с именем статического метода. В других случаях, статические методы интерфейса видны только методам этого интерфейса.
✅ JavaStart. Подписаться
Статические методы в интерфейсах.
В версии Java 8 появилась возможность определения статических методов в интерфейсах.
Их поведение напоминает поведение методов по умолчанию (default methods), но есть существенные отличия – они не могут быть переопределены методами в реализующих интерфейс классах.
Такая особенность позволяет избежать нежелательных результатов, которые возможны в случае некорректной реализации метода в классе.
Пример кода с использованием статического метода в интерфейсе можно увидеть на Картинке 1.
Обратите внимание, что для использования статических методов интерфейса не нужно использовать ключевое слово «implements». Достаточно (и это необходимо) использовать имя интерфейса вместе с именем статического метода. В других случаях, статические методы интерфейса видны только методам этого интерфейса.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Модификатор доступа static в Java. Часть 6.
Какие же причины использовать статические методы? Вопрос из собеседования на Junior java разработчика.
– Для доступа / управления статическими переменными и другими статическими методами, которые не зависят от объектов;
– Для служебных, вспомогательных классов и интерфейсов, поскольку не требуют создания объектов и соответственно, обеспечивают большую производительность (не создаются лишние объекты в памяти);
– Когда методу требуется доступ лишь к статическим полям класса.
✅ JavaStart. Подписаться
Какие же причины использовать статические методы? Вопрос из собеседования на Junior java разработчика.
– Для доступа / управления статическими переменными и другими статическими методами, которые не зависят от объектов;
– Для служебных, вспомогательных классов и интерфейсов, поскольку не требуют создания объектов и соответственно, обеспечивают большую производительность (не создаются лишние объекты в памяти);
– Когда методу требуется доступ лишь к статическим полям класса.
Please open Telegram to view this post
VIEW IN TELEGRAM