Что значит знак в java
Перейти к содержимому

Что значит знак в java

  • автор:

Что значит :: знак в java? [дубликат]

Часто вижу :: при определении нового экземпляра, в стримах, иногда в лямда выражениях. Что он значит? Что значит List :: stream ? P.S. И как он называется?

Отслеживать
Anton Sorokin
задан 16 авг 2018 в 3:38
Anton Sorokin Anton Sorokin
6,998 6 6 золотых знаков 37 37 серебряных знаков 65 65 бронзовых знаков
В народе он называется «квадроточие».
16 авг 2018 в 6:59

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Оператор «ссылка на метод» (Method Reference). По сути — сокращенная запись для ссылки на метод из функционального интерфейса при использовании лямбды.

List::stream 

является ссылкой на метод stream() из интерфейса List

List> list = Arrays.asList( Arrays.asList(1,2,3), Arrays.asList(4,5,6) ); list.steam() .flatMap(List::stream) .forEach(System.out::println); 

приведенный отрывок кода означает: 1. Мы инициализируем поток, в котором будет список чисел ( Stream> ) 2. с помощью flatMap мы объединяем список чисел в поток чисел ( Stream ) 3. с помощью forEach и ссылки на метод println для каждого элемента из потока вызывается вывод на экран

Если владеете английским, хорошее объяснение с примерами приведено в этом ответе

Что значит ? значит на Java

Чему программисты на Java должны научиться в 2021 году

Java предоставляет широкий спектр операторов, таких как оператор присваивания «=» , оператор приращения « ++ », оператор декремента «–» и так далее. Возможно, вы слышали обо всех этих операторах, но слышали ли вы когда-нибудь о троичном «?» оператор? Что ж, это не что иное, как альтернативный вариант оператора if-else, который также известен как условный оператор. Более того, использование вложенного тернарного оператора «?» предоставляет функциональные возможности операторов switch.

В этой статье мы собираемся исследовать различные аспекты оператора «?»:

  • Что означает «?» в Java
  • Синтаксис
  • Как «?» работает на Java
  • Как использовать вложенный «?» на Java

Что значит «?» в Java

«?» в java — это не что иное, как оператор, который работает так же, как выполняются операторы if-else, и поэтому он более известен как условный или тернарный оператор в java. «?» в java помогают нам писать простой, лаконичный и понятный код.

Синтаксис

Тернарный или условный оператор состоит из двух символов: один из них — «?» а другой — «:» , и вместе эти два символа образуют выражение:

(condition/expression) ? first-expression : second-expression

Из приведенного выше фрагмента видно, что всего имеется три экземпляра, т. е. конкретное условие и два выражения.

Как работает «?» на Java

Как «?» оператор работает аналогично операторам if-else, поэтому сначала он проверяет условие.

  • Если true, то будет выполнено первое выражение.
  • Если false, то будет выполнено второе выражение.

Давайте рассмотрим приведенные ниже примеры для глубокого понимания того, как «?» оператор работает в java или как он заменяет оператор if-else.

Пример

Фрагмент ниже проверит условие, используя оператор if-else, чтобы узнать, является ли предоставленное число четным или нечетным:

publicclassTernaryOperatorExample < publicstaticvoidmain(String[] args) < int number = 35; if (number % 2 == 0) < System.out.println("Вы ввели четное число"); >else < System.out.println("Вы ввели нечетное число"); >> >

Данное число будет разделено на 2, если в остатке 0, то будет показано четное число, в противном случае — нечетное число.

Вывод подтверждает правильность оператора if-else.

Пример

Теперь давайте выполним приведенный выше пример с помощью оператора «?»:

publicclassTernaryOperatorExample < publicstaticvoidmain(String[] args) < int number = 35; String res = (number % 2 == 0) ? "Четное число" :"Нечетное число"; System.out.println(res); >>

Использование оператора ? делает наш код кратким и легким для понимания. Приведенный выше фрагмент кода подтверждает работу оператора «?».

Как использовать вложенный «?» на Java

Иногда мы сталкиваемся со сценарием, в котором нам нужно пройти через несколько условий, в таких случаях мы должны использовать несколько операторов «?» и, следовательно, известны как вложенные троичные «?». Рассмотрим приведенный ниже пример для глубокого понимания этой концепции.

Пример

В этом примере есть три числа и среди них мы должны найти большее число:

publicclassTernaryOperatorExample < publicstaticvoidmain(String[] args) < int num1 = 51, num2 = 45, num3 = 55; int res = (num1 >= num2) ? ((num1 >= num3) ? num1 : num3) : ((num2 >= num3) ? num2 : num3); System.out.println("Большее число - это: " + res); > >

В приведенном выше фрагменте кода мы применяем вложенный тернарный оператор, чтобы найти наибольшее число среди заданных чисел и сохранить результат в переменной «res».

Вышеприведенный фрагмент кода покажет, что «55» больше, чем «51» и «45» , что показывает, что вложенный оператор «?» работает эффективно.

Вывод

В Java «?» известен как тернарный/условный оператор, и он работает так же, как и операторы if-else. «?» в java включает три экземпляра, т.е. конкретное условие и два выражения. Если указанное условие истинно, то будет выполнено первое выражение, иначе будет выполнено второе выражение. В случае нескольких условий можно использовать вложенный тернарный оператор. Эта статья представляет собой подробное руководство об операторе «?», что он означает в java, и как использовать «?» символ в java.

Что значит знак в java

Я тоже откладывал в долгий ящик эту тему, но тут даже интересно было. Professor Hans Noodles как всегда на высоте

19 августа 2022

Очень полезная статья, избегал тему битов и всего такого. Как это часто бывает, просто не хотел вникать. Оказалось ничего сложного, спасибо большое автору ����

Rexalifet Уровень 23
17 августа 2022
Попал сюда находясь на первых уровнях. Ретируюсь во имя избежания перегрева мозга
reteruvsky Уровень 20
4 мая 2022

Для тех, кто НЕ ПОНЯЛ, или ЧАСТИЧНО ПОНЯЛ данную статью, советую прочесть книгу, которую нам рекомендовали на начальных уровнях, а именно Чарльз Петцольд «Тайный код информатики» Все изложенное в статье по сути является ничем иным, как принципом и логикой работы компьютера в целом. Двоичная система, логические вентили И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, Инвертирование. Все это изложено в данной книге. Она обязательна к прочтению КАЖДОМУ, кто хочет стать ПРОГРАММИСТОМ. Своего рода библия в мире компьютеров. Вы поймёте как в целом вообще работает компьютер, как он складывает числа, устройство процессора и памяти и тд. Книга очень увлекательная, хотя местами немного сложновата для понимания, но оно того стоит. Единственное, чего лично мне не понятно, зачем нам в Java побитовые операции, когда это по сути машинный код, а мы программируем на языке высокого уровня��

4 мая 2022
а для чего ?: служит и есть ли отдельно ? и отдельно :
hidden #2544557 Уровень 10 Expert
30 марта 2022

Я не понимаю, зачем побитовый сдвиг нужен? Где это применимо? Или это просто как вариант возведения в x*2 в n степень? Зачем такие сложности? И ещё вопрос, если кто-то объяснит как и зачем — буду ОЧЕНЬ благодарен! При изменении знака (1го бита) из 10 мы получаем -11 — мои знания математики вышли покурить. Мы же знак меняем, а не число? Я понимаю что ноль не бывает отрицательным и это мы перескакиваем, но почему именно такая реализация? Оператор XOR это вообще для меня пока запредельное что-то.

Операторы в Java: для чего нужны и какие бывают

Знакомимся с основными инструментами языка и учимся работать с ними на практике.

Иллюстрация: Оля Ежак для Skillbox Media

Лев Сергеев

Лев Сергеев
Программист, музыкант. Знает Java, C# и Unity3D, но не собирается останавливаться на достигнутом.

Все мы со школы знакомы с математическими знаками + (плюс), (минус), = (равно) и так далее. В Java и других языках программирования эти символы называются операторами. Они нужны для того, чтобы сообщить компилятору, какое действие совершать с операндами — числами, строками, объектами и другими значениями по обе стороны оператора.

Например, на картинке выше оператор + говорит компилятору: «Сложи два числа». Но на практике чисел в выражении может быть разное количество — и одно, и два, и три. В этих случаях и операторы будут называться по-разному: унарные — что-то делают с одним операндом, бинарные — с двумя, и тернарные — с тремя.

В этой статье рассмотрим не только эти, но все основные виды операторов в Java:

  • Присваивания
  • Арифметические
  • Унарные
  • Сравнения
  • Логические
  • Тернарный
  • Оператор instanceof
  • Побитовые
  • Составные операторы присваивания

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

Оператор присваивания в Java

Оператор присваивания в Java — это знак = (равно). Его задача — переложить значение переменной справа в переменную слева:

Вот как это выглядит в коде (в комментариях — разбор синтаксиса):

Тернарный оператор в Java: можно, только осторожно

Что делает: сокращает условную конструкцию if-else до одной строчки.

Тернарный оператор (от латинского слова ternarius — «тройной») — это языковая конструкция, которая состоит из трёх операндов: логического условия и двух выражений. Если результат логического условия будет true, выполнится первое выражение, если false — второе. Записываются тернарные операторы так:

Фишка в том, что таким образом мы можем записать конструкцию if-else всего одной строчкой. Допустим, нам нужно проверить булеву переменную condition — если она возвращает true, то переменная a = 100, а если false, то a = 200. Посмотрите, как легко это можно сделать с помощью тернарного оператора:

Кажется, что эти if-else теперь вообще больше не нужны. Мол, ставь везде тернарные операторы, и дело с концом. Однако в больших программах со сложной логикой это может повредить читаемости кода. Это в нашем примере выражение простое — а представьте, если в каждое выражение положить ещё по одному оператору. Получится неопрятно. Другому разработчику, который будет читать наш код, разобраться будет сложно.

Поэтому тернарные операторы рекомендуют использовать в тех случаях, когда условие простое и легко проверяется. А во всех остальных случаях прибегать к привычным «ифам» и «элсам».

Подробно о том, как работать с тернарными операторами, мы рассказывали в статье: «Тип Boolean и операторы сравнения в Java».

Оператор instanceof в Java

Что делает: проверяет, принадлежит ли объект к какому-то классу или интерфейсу, и возвращает булево значение — то есть true или false.

Использование instanceof актуально, когда нужно проверить родителя объекта прямо во время выполнения программы. Например, если объекты приходят в ваш код из базы данных или другого потока выполнения и вам нужно убедиться, что к ним можно применять методы какого-то класса. Записывается instanceof так:

Побитовые операторы вычисления бывают следующими:

Символ Что означает
& Побитовое И (AND) — умножение
| Побитовое ИЛИ (OR) — сложение
^ Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) — вычитание
~ Побитовое НЕ (NOT) — отрицание

Чтобы посмотреть, как работают побитовые вычисления в Java, переведём несколько десятичных чисел в двоичную систему счисления:

Если разобраться в концепции старшего бита, можно без труда освоить три оставшихся побитовых оператора, которые называются операторами смещения битов:

Символ Что означает
Сдвиг битов влево
>> Сдвиг битов вправо
>>> Беззнаковый сдвиг битов вправо

Операторы сдвига смещают все биты в левую или правую сторону, но делают это по-разному:

  • >> не трогает старший бит, оставляя число с тем же знаком (отрицательным или положительным). Ячейки отрицательных чисел при >> заполняются единицами.
  • >>> и — затрагивают все биты. Освободившиеся ячейки справа заполняются нулями. Наполнение ячеек слева зависит от знака и оператора.

Звучит сложно, на деле — тоже сложно. Но попробуем разобраться на примере — разложим какое-то десятичное число на биты и посмотрим, как работает смещение битов.

В Java есть метод toBinaryString(), который показывает, как выглядят десятичные числа в двоичной системе. Но двоичные числа — это ещё не биты. Например, число 2 занимает 32 бита, но если обработать его методом toBinaryString(), на экране появятся только два из них: 1 и 0. Оставшиеся 30 нулей просто «обрезаются». Это происходит по той же причине, по которой мы, например, не пишем десятичное число 9 как 009.

Плюс составных операторов в том, что они записываются короче и неявно приводят переменные к одному типу, если эти типы различаются. Например, в сокращённом варианте можно сложить дроби и числа без приведения, и нам за это ничего не будет. А в полной записи будет ошибка:

int x = 1; double y = 3.1415d; x = x + y; // Эта строка не скомпилируется x += y; // А здесь всё хорошо // Оператор += в развёрнутом виде x = (int)(x + y);

Приоритеты операторов Java

У каждого оператора Java есть свой приоритет. Чем он выше, тем раньше оператор выполнится в выражении. Бинарные и тернарный операторы (кроме присваивания) выполняются слева направо, а остальные (унарные и присваивания) — справа налево.

Приоритет
(снизу вверх)
Группа Операторы
13 Постфиксные x++ x––
12 Унарные ++x ––x +x –x ~x !x
11 Мультипликативные * / %
10 Аддитивные +
9 Сдвига битов >> >>>
8 Сравнения > >= instanceof
7 Равенства == !=
6 Побитовое И &
5 Побитовое исключающее ИЛИ ^
4 Побитовое ИЛИ |
3 Логическое И &&
2 Логическое ИЛИ ||
1 Тернарный ? :
0 Присваивания = += -= *= /= %=
&= ^= |=
<>>= >>>=

Резюме: что нужно запомнить

Мы рассмотрели все основные операторы в Java и их работу на примерах. Попробуем кратко резюмировать, что нужно вынести из этой статьи:

  • Оператор — это языковая конструкция, которая выполняет действие над операндом.
  • Операнд— это число, переменная, объект и так далее, с которыми оператор совершает какие-то действия (например, арифметическое и логическое).
  • Операторы бывают унарные, бинарные и тернарные — это зависит от того, сколько операндов они обрабатывают.
  • Арифметические операторы нужны для простых математических действий: сложения, вычитания, умножения, деления и деления с остатком.
  • Унарные операторы работают только с одним операндом. Это унарные минус и плюс, инкремент, декремент, логическое и побитовое отрицание.
  • Операторы сравнения сопоставляют значения двух операторов и возвращают ответ — true или false.
  • Логические операторы заточены уже не на числа, а на целые выражения — и на их основе создают сложные условия, например, для работы в циклах.
  • Тернарный оператор умеет работать сразу с тремя операндами: условием и двумя выражениями. То есть им вполне можно заменить ветвления типа if-else.
  • Операторinstanceof определяет принадлежность объекта к классу.
  • Побитовые операторы нужны для проведения операций с битами — если упростить, то с нулями и единицами в двоичной системе счисления.
  • Составные операторы неявно приводят типы данных, если они разные.
  • У каждого оператора есть свой приоритет.

Для более глубокого понимания темы можно почитать другие наши статьи: «Тип Boolean и операторы сравнения в Java» и «Логические операторы в Java». А если хотите совсем хорошо разобраться, почитайте официальную документацию Java — это вообще лучший способ освоить язык со всеми его тонкостями.

Читайте также:

  • Тип Boolean и операторы сравнения в Java
  • Тест. Какой язык создадите вы — Java или Python?
  • Чем различается фронтенд- и бэкенд-разработка

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *