Зачем нужно ключевое слово assert?
assert – не то же самое, что методы вроде assertTrue() из тестовых библиотек. Это зарезервированное ключевое слово, унарный оператор.
Этот оператор ничего не возвращает, а принимает проверяемое утверждение типа boolean. Если значение оказывается false, проверка утверждения считается проваленной и выбрасывается AssertionError. Это похоже на сокращенную запись пары if и throw, с фиксированным типом исключения.
В Java до версии 4 слово assert не было ключевым. Поэтому для обратной совместимости механизм проверки утверждений выключен по умолчанию – логика программы никогда не должна полагаться на assert!
Включается флагом -ea или -enableassertions команды java. Можно указывать конкретные классы и пакеты в которых включить. Есть противоположный флаг -da (-disableassertions), эти флаги можно использовать в комбинации.
Assertion-ы используются в основном для дополнительной проверки инвариантов состояния объекта и для подстраховки в коде, который не должен никогда вызываться. Выброшенный AssertionError обычно означает ошибку программиста.
Дополнительно у оператора assert есть синтаксис передачи параметра detailMessage в конструктор AssertionError:
@javatasks #java
assert – не то же самое, что методы вроде assertTrue() из тестовых библиотек. Это зарезервированное ключевое слово, унарный оператор.
Этот оператор ничего не возвращает, а принимает проверяемое утверждение типа boolean. Если значение оказывается false, проверка утверждения считается проваленной и выбрасывается AssertionError. Это похоже на сокращенную запись пары if и throw, с фиксированным типом исключения.
В Java до версии 4 слово assert не было ключевым. Поэтому для обратной совместимости механизм проверки утверждений выключен по умолчанию – логика программы никогда не должна полагаться на assert!
Включается флагом -ea или -enableassertions команды java. Можно указывать конкретные классы и пакеты в которых включить. Есть противоположный флаг -da (-disableassertions), эти флаги можно использовать в комбинации.
Assertion-ы используются в основном для дополнительной проверки инвариантов состояния объекта и для подстраховки в коде, который не должен никогда вызываться. Выброшенный AssertionError обычно означает ошибку программиста.
Дополнительно у оператора assert есть синтаксис передачи параметра detailMessage в конструктор AssertionError:
assert 2*2==5 : "two times two is not five!";@javatasks #java
👍7🔥7❤4
  Что такое метки и как их использовать?
Наверняка вам приходилось писать неуклюжий код выхода из циклов нескольких уровней вложенности:
В Java существует полезный синтаксис, который упрощает код в таких ситуациях – метки (label).
Метка используется как пункт назначения для операторов break и continue. Помечать можно любой блок – цикл for, while, даже простой блок и операторы switch и if. Метки делают возможным использование оператора break вне цикла, хотя пользы в этом обычно немного.
Обязательное условие компилятора – метка должна использоваться только внутри помеченного блока. Перейти в соседний цикл не выйдет.
Наверняка вам приходилось писать неуклюжий код выхода из циклов нескольких уровней вложенности:
boolean flag = false;
for (...) {
for (...) {
if (...) { x = true; break; }
}
if (flag == true) break;
}
В Java существует полезный синтаксис, который упрощает код в таких ситуациях – метки (label).
Метка используется как пункт назначения для операторов break и continue. Помечать можно любой блок – цикл for, while, даже простой блок и операторы switch и if. Метки делают возможным использование оператора break вне цикла, хотя пользы в этом обычно немного.
Обязательное условие компилятора – метка должна использоваться только внутри помеченного блока. Перейти в соседний цикл не выйдет.
👍13🤔3
  Что такое Keyword?
Зарезервированные слова в Java – это специальные последовательности символов, которые воспринимаются компилятором особым образом. Такие слова нельзя использовать как названия классов, переменных, и для других идентификаторов. Все зарезервированне слова можно разбить на три больших группы. Все они перечислены в таблице ниже.
1. 4 зарезервированных слова не являются ключевыми словами: это литералы true, false, null, и специальный идентификатор выводимого типа var.
2. 51 ключевое слово (keywords). В таблице мы сгруппировали их по смыслу.
3. 10 ограниченных ключевых слов (restricted keywords). Они считаются ключевыми словами только в контексте файла объявления модуля module-info. В обычных .java-файлах это разрешенные идентификаторы.
@javatasks #java
Зарезервированные слова в Java – это специальные последовательности символов, которые воспринимаются компилятором особым образом. Такие слова нельзя использовать как названия классов, переменных, и для других идентификаторов. Все зарезервированне слова можно разбить на три больших группы. Все они перечислены в таблице ниже.
1. 4 зарезервированных слова не являются ключевыми словами: это литералы true, false, null, и специальный идентификатор выводимого типа var.
2. 51 ключевое слово (keywords). В таблице мы сгруппировали их по смыслу.
3. 10 ограниченных ключевых слов (restricted keywords). Они считаются ключевыми словами только в контексте файла объявления модуля module-info. В обычных .java-файлах это разрешенные идентификаторы.
@javatasks #java
👍13
  Что произойдет при попытке вставить в TreeSet объект, если его класс не pеализует интерфейс Comparable и не передан компаратор?
  Anonymous Quiz
    18%
    Будет выброшено исключение ClassCastException только при попытке сортировки
      
    11%
    Элемент будет добавлен в конец коллекции
      
    46%
    Будет выброшено исключение ClassCastException
      
    17%
    Элемент будет вставлен, но без определенного порядка
      
    8%
    Будет выброшено исключение NullPointerException
      
    👍12🔥5
  Какой результат может вывести фрагмент кода?
  Anonymous Quiz
    5%
    0
      
    7%
    1
      
    45%
    2
      
    42%
    Невозможно предсказать
      
    🔥8👍5
  Что будет выведено на экран?
  Anonymous Quiz
    2%
    Исключение во время выполнения
      
    80%
    Child
      
    6%
    Ошибка компиляции
      
    12%
    Parent
      
    🔥9👍5❤3😁1
  👍14❤3🔥3🌚1
  Как найти любой элемент в списке, который начинается с буквы "b"?
  Anonymous Quiz
    13%
    list. filter(s -> s.startsWith("b")).findAny().ifPresent(System.out::println);
      
    5%
    list.stream().filter().findFirst().ifPresent(System.out::println);
      
    25%
    list.stream().findAny(s-> s.startsWith("b")).ifPresent(System.out::println);
      
    50%
    list.stream().filter(s -> s.startsWith("b")).findAny().ifPresent(System.out::println);
      
    7%
    list.stream().map(s-> s.startsWith("b")).findAny().ifPresent(System.out::println);
      
    👍14🔥3❤1🥰1👏1
  Как часто выполняется метод scheduledTask()?
  Anonymous Quiz
    3%
    Каждые 5 минут
      
    15%
    Каждые 5000 секунд
      
    13%
    При каждом запуске приложения
      
    68%
    Каждые 5 секунд
      
    1%
    Каждый час
      
    👍7🔥5❤2😐2
  Какой интерфейс коллекций гарантирует отсутствие дубликатов?
  Anonymous Quiz
    1%
    List
      
    2%
    Deque
      
    87%
    Set
      
    8%
    Мар
      
    2%
    Queue
      
    ❤11👍7🔥3
  Что выведет этот фрагмент кода?
  Anonymous Quiz
    9%
    Ничего не выведет
      
    1%
    4
      
    62%
    24
      
    4%
    10
      
    20%
    Произойдет ошибка
      
    3%
    12
      
    👍8🔥2
  Что будет выведено для запроса /api/hello?name=Spring
  Anonymous Quiz
    3%
    Hello, name
      
    16%
    Hello, World
      
    69%
    Hello, Spring
      
    11%
    400 Bad Request
      
    👍12🎉6🔥3🥱2
  Выберите верный формат, чтобы получить дату: 04-02-2025 12:15
  Anonymous Quiz
    13%
    dd-mm-yyyyhh:mm
      
    1%
    d-m-y h:m
      
    1%
    d-M-y HH:mm
      
    83%
    dd-MM-yyyу HH:mm
      
    1%
    d-M-yyyy H:mm
      
    👍10🥱5🔥3