Подумайте, что вы здесь делаете.
$Servers += $row.Item("servertypeA") + $row.Item("servertypeB")
говорит «объединить $row.Item("servertypeA")
и $row.Item("servertypeB")
и добавить результат в $servers
». Это именно то, что вы видите.
Вы хотите добавить каждый столбец в массив, а не объединять два столбца.
$Servers += $row.Item("servertypeA")
$Servers += $row.Item("servertypeB")
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
Единственный оператор, перегружающийся в Java, + на Строках (JLS 15.18.1 Операторов объединения строк +).
Сообщество было разделено на 3 в течение многих лет, 1/3 не хочет, оно, 1/3 хочет это, и 1/3 не заботится.
Можно использовать unicode для создания имен методов, которые являются символами... поэтому, если у Вас есть символ, Вы хотите использовать Вас, мог бы сделать myVal = x. $ (y); где $ является символом, и x не является примитивом..., но это будет изворотливым в некоторых редакторах и ограничивает, так как Вы не можете сделать этого на примитиве.
Поэтому перегрузка оператора - что-то, что они конкретно упустили из языка сознательно. Они "обманули" немного с конкатенацией строк, но кроме того, такая функциональность не существует.
(правовая оговорка: Я не работал с последними 2 главными версиями Java, поэтому если это будет в теперь, то я буду очень удивлен),
Возможно, Вы неправильно поняли различие между &
и &&
, |
и ||
Цель операторов ярлыка &&
и ||
это, значение первого операнда может определить результат и таким образом, второй операнд не должен быть оценен.
Это особенно полезно, если второй операнд был бы результаты по ошибке. например.
if (set == null || set.isEmpty())
// or
if (list != null && list.size() > 0)
Однако с XOR, всегда необходимо оценивать второй операнд для получения результата, таким образом, единственная значимая операция ^
.
Java имеет логическую операцию И.
Java имеет логическую операцию ИЛИ.
Неправильно.
Java имеет
XOR существует только как ^, потому что оценка короткого замыкания не возможна.