관찰 :
Java에는 논리 AND 연산자가 있습니다.
Java에는 논리 OR 연산자가 있습니다.
Java에는 논리 NOT 연산자가 있습니다.
문제:
sun에 따르면 Java에는 논리적 XOR 연산자가 없습니다 . 하나를 정의하고 싶습니다.
분석법 정의 :
방법으로 간단히 다음과 같이 정의됩니다.
public static boolean logicalXOR(boolean x, boolean y) {
return ( ( x || y ) && ! ( x && y ) );
}
메소드 호출 :
이 메소드는 다음과 같은 방식으로 호출됩니다.
boolean myVal = logicalXOR(x, y);
운영자 사용법 :
나는 오히려 다음과 같이 사용되는 연산자를 원할 것입니다.
boolean myVal = x ^^ y;
질문:
Java에서 새 연산자를 정의하는 방법에 대한 정보가 없습니다. 어디서부터 시작해야합니까?
답변
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);
}
}
}
산출:
거짓 ^ 거짓 = 거짓 거짓 ^ 참 = 참 참 ^ 거짓 = 참 참 ^ 참 = 거짓
답변
x! = y 아닙니까?
답변
Java에는 논리 AND 연산자가 있습니다.
Java에는 논리 OR 연산자가 있습니다.
잘못된.
자바는
- 두 개의 논리 AND 연산자 : 정상 AND는 & 및 단락 AND는 &&이며
- 두 개의 논리 OR 연산자 : 정상 OR은 | 단락 OR은 ||입니다.
단락 평가가 불가능하기 때문에 XOR은 ^로만 존재합니다.
답변
아마 당신은 사이의 차이를 오해 &
하고 &&
, |
및 ||
바로 가기 운영자의 목적 &&
및 ||
두 번째 피연산자가 평가 될 필요가 없습니다, 그래서 첫 번째 피연산자의 값이 결과를 결정 할 수 있다는 것입니다.
이는 두 번째 피연산자가 오류를 발생시키는 경우 특히 유용합니다. 예 :
if (set == null || set.isEmpty())
// or
if (list != null && list.size() > 0)
그러나 XOR 을 사용하면 결과를 얻기 위해 항상 두 번째 피연산자를 평가해야합니다 ^
.
답변
당신은 단지 쓸 수 있습니다 (a!=b)
이것은와 같은 방식으로 작동합니다 a ^ b
.
답변
연산자 오버로딩은 의도적으로 언어에서 제외 된 부분이기 때문입니다. 그들은 문자열 연결로 약간 “속임수”를했지만 그 이상의 기능은 존재하지 않습니다.
(면책 조항 : Java의 마지막 2 주요 릴리스와 함께 작업하지 않았으므로 지금 있다면 매우 놀랄 것입니다)
답변
Java에서 유일하게 연산자 오버로드는 + on Strings입니다 ( JLS 15.18.1 문자열 연결 연산자 + ).
공동체는 수년간 3으로 나뉘어졌으며 1/3은 원하지 않고 1/3은 원하지 않으며 1/3은 신경 쓰지 않습니다.
유니 코드를 사용하여 기호 인 메소드 이름을 작성할 수 있습니다. 따라서 사용하려는 기호가 있으면 myVal = x. $ (y); 여기서 $는 기호이고 x는 프리미티브가 아닙니다.하지만 일부 편집기에서는 피할 수 없으며 프리미티브에서 수행 할 수 없으므로 제한적입니다.
