Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2016, 13:13   #1
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию ЯП Java. Вопрос по синтаксису.

Код:
String str1 = "string";
String str2 = "string";
System.out.println(str1==str2 ? "the same" : "not the same");
 
String str1 = "string";
String str2 = "str";
String str3 = "ing";
System.out.println(str1==(str2+str3) ? "the same" : "not the same");
Почему в одном случае the same, в другом not the same мне понятно.
Вопрос что означает символы "?" и ":". Что это такое и как это действует?

Последний раз редактировалось Вадим Мошев; 01.02.2016 в 13:35.
nevender вне форума Ответить с цитированием
Старый 31.01.2016, 13:26   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

?: это тернарный оператор https://ru.wikipedia.org/wiki/%D0%A2...86%D0%B8%D1%8F

А сравнивать надо через .equals если интересуют значения, а не ссылки. В первом == работает из-за интернирования строк.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 31.01.2016, 13:53   #3
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию

Спасибо, как всегда разъясняешь.)
nevender вне форума Ответить с цитированием
Старый 31.01.2016, 13:54   #4
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию

Код:
public class Break {

  public static void main(String[] args) {
    boolean t = true;
    first:
    {
      second:
      {
        third:
        {
          System.out.println("Перед оператором break.");
          if (t) {
            break second; // выход из блока second
          }
          System.out.println("Данный оператор никогда не выполнится");
        }
        System.out.println("Данный оператор никогда не выполнится ");
      }
      System.out.println("Данный оператор размещен после блока second.");
    }
  }
}
Что такое first:
second:
third:
???
nevender вне форума Ответить с цитированием
Старый 31.01.2016, 13:59   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Метки для break
https://docs.oracle.com/javase/tutor...ts/branch.html
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.02.2016, 13:34   #6
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
?: это тернарный оператор
Всегда удивляет, почему его называют тернарным?
Лишь потому, что он один в языке?
А если появится еще один тернарный оператор, то как их отличать? )))
Croessmah вне форума Ответить с цитированием
Старый 01.02.2016, 13:38   #7
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
Всегда удивляет, почему его называют тернарным?
Лишь потому, что он один в языке?
А если появится еще один тернарный оператор, то как их отличать? )))
Тернарным оператор называют потому, что он ведёт работу с ТРЕМЯ операндами - условие, значение_если_истина, значение_если_ложь.

Бинарный оператор работает с двумя операндами (например, оператор "+")

Унарный оператор принимает лишь один операнд. Например, операция логического отрицания - это унарный оператор.

Цитата:
А если появится еще один тернарный оператор, то как их отличать? )))
Ничего страшного. Есть кучи бинарных операторов (+, -, *, *) - их же различают между собой.

Последний раз редактировалось Вадим Мошев; 01.02.2016 в 13:41.
Вадим Мошев вне форума Ответить с цитированием
Старый 01.02.2016, 13:45   #8
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Тернарным оператор называют потому, что он ведёт работу с ТРЕМЯ операндами
Я в курсе, что это такое, как работает и зачем нужно.
Я спрашиваю почему когда спрашивают, что это, отвечают, - "тернарный оператор".
Ведь когда спрашивают про другие операторы,
никто не ограничивается тем,
что это бинарный оператор или унарный.
Цитата:
Есть кучи бинарных операторов (+, -, *, *) - их же различают между собой.
но не дают же им имя бинарного

Кстати, многие удивляются, когда узнают,
что это условный оператор (conditional operator),
потому как им сказали, что он называется тернарным.
И это относится не только к Java

Последний раз редактировалось Вадим Мошев; 01.02.2016 в 13:55.
Croessmah вне форума Ответить с цитированием
Старый 01.02.2016, 13:53   #9
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

А ещё этот оператор называют арифметическим условным оператором. так что, если появится ещё несколько тернарных, то путаницы не будет. Ведь каждому же оператору даётся название.
Вадим Мошев вне форума Ответить с цитированием
Старый 01.02.2016, 13:54   #10
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Ведь каждому же оператору даётся название.
И конкретно этот описан в 15.25 и называется "Conditional Operator"
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по синтаксису MsgBox в VB Mr_ViK Помощь студентам 5 26.08.2011 23:06
Вопрос по синтаксису Неофит Общие вопросы C/C++ 2 17.01.2011 20:04
Вопрос по Javascript синтаксису... DrStrangeLove JavaScript, Ajax 3 01.01.2011 20:16
Вопрос по синтаксису Brucebelg Microsoft Office Excel 3 28.05.2010 18:07
Вопрос по синтаксису SQL Rifler SQL, базы данных 0 01.01.2010 16:52