Создание “логического эксклюзивного или” оператора в Java

Подумайте, что вы здесь делаете.

$Servers += $row.Item("servertypeA") + $row.Item("servertypeB") говорит «объединить $row.Item("servertypeA") и $row.Item("servertypeB") и добавить результат в $servers». Это именно то, что вы видите.

Вы хотите добавить каждый столбец в массив, а не объединять два столбца.

$Servers += $row.Item("servertypeA") 
$Servers += $row.Item("servertypeB")
265
задан starblue 8 April 2009 в 00:34
поделиться

6 ответов

Java действительно имеет логический оператор XOR, это - ^ (как в a ^ b).

Кроме этого, Вы не можете определить новые операторы в Java.

Править: Вот пример:

public static void main(String[] args) {
    boolean[] all = { false, true };
    for (boolean a : all) {
        for (boolean b: all) {
            boolean c = a ^ b;
            System.out.println(a + " ^ " + b + " = " + c);
        }
    }
}

Вывод:

false ^ false = false
false ^ true = true
true ^ false = true
true ^ true = false
674
ответ дан Community 23 November 2019 в 02:26
поделиться

Единственный оператор, перегружающийся в Java, + на Строках (JLS 15.18.1 Операторов объединения строк +).

Сообщество было разделено на 3 в течение многих лет, 1/3 не хочет, оно, 1/3 хочет это, и 1/3 не заботится.

Можно использовать unicode для создания имен методов, которые являются символами... поэтому, если у Вас есть символ, Вы хотите использовать Вас, мог бы сделать myVal = x. $ (y); где $ является символом, и x не является примитивом..., но это будет изворотливым в некоторых редакторах и ограничивает, так как Вы не можете сделать этого на примитиве.

7
ответ дан TofuBeer 23 November 2019 в 02:26
поделиться

Поэтому перегрузка оператора - что-то, что они конкретно упустили из языка сознательно. Они "обманули" немного с конкатенацией строк, но кроме того, такая функциональность не существует.

(правовая оговорка: Я не работал с последними 2 главными версиями Java, поэтому если это будет в теперь, то я буду очень удивлен),

9
ответ дан Kevin Anderson 23 November 2019 в 02:26
поделиться

Возможно, Вы неправильно поняли различие между & и &&, | и || Цель операторов ярлыка && и || это, значение первого операнда может определить результат и таким образом, второй операнд не должен быть оценен.

Это особенно полезно, если второй операнд был бы результаты по ошибке. например.

if (set == null || set.isEmpty())
// or
if (list != null && list.size() > 0)

Однако с XOR, всегда необходимо оценивать второй операнд для получения результата, таким образом, единственная значимая операция ^.

31
ответ дан Peter Lawrey 23 November 2019 в 02:26
поделиться

Java имеет логическую операцию И.
Java имеет логическую операцию ИЛИ.

Неправильно.

Java имеет

  • две логических операции И: нормальный И и и короткое замыкание И &&, и
  • две логических операции ИЛИ: нормальный ИЛИ | и короткое замыкание ИЛИ ||.

XOR существует только как ^, потому что оценка короткого замыкания не возможна.

72
ответ дан Michael Myers 23 November 2019 в 02:26
поделиться

Не это x! = y?

298
ответ дан Maurice Perry 23 November 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: