Java에서 & & &의 차이점은 무엇입니까?
는 항상 했다.&&
는 양쪽 됩니다.true
및 , 。&
연산자는 두 가지 정수 유형에 대해 비트 단위 연산을 수행하는 데 사용됩니다.
된 은 근근 recently recently recently recently recently recently recently recently recently recently recently recently recently recently recently&
는, 의 부울 가 「부울 피연산자」인지 .true
유일한 차이점은 LHS 피연산자가 false인 경우에도 RHS 피연산자를 체크한다는 것입니다.
&
운영자가 내부적으로 과부하 상태입니까?른른른른른른른른?
<--는의 오퍼랜드와<--는, 양쪽의 오퍼랜드와<--는 합니다.
때문에 첫 번째
(x != 0) & (1/x > 1)
를 의미합니다.(x != 0)
(1/x > 1)
그런 다음 &.를 수행합니다. 문제는 x=0의 경우 예외가 발생한다는 것입니다.
(x != 0) && (1/x > 1)
를 의미합니다.(x != 0)
에만 '평가'를 합니다.(1/x > 1)
, (x!=0)이 (x!=0)이 거짓이라고 모든 된다고 해서 (1/x > 1)
.
편집:
exprA | exprB
를 의미합니다.exprA
exprB
나서 하다|
.
exprA || exprB
를 의미합니다.exprA
이 '''일 경우에만''입니다.false
exprB
를 ||
.
양쪽 오퍼랜드를 평가함으로써 게으른 평가자가 되지 않을 뿐만 아니라 비트 연산자의 주요 특징은 다음과 같이 오퍼랜드의 각 바이트를 비교한다고 생각합니다.
int a = 4;
int b = 7;
System.out.println(a & b); // prints 4
//meaning in an 32 bit system
// 00000000 00000000 00000000 00000100
// 00000000 00000000 00000000 00000111
// ===================================
// 00000000 00000000 00000000 00000100
boolean a, b;
Operation Meaning Note
--------- ------- ----
a && b logical AND short-circuiting
a || b logical OR short-circuiting
a & b boolean logical AND not short-circuiting
a | b boolean logical OR not short-circuiting
a ^ b boolean logical exclusive OR
!a logical NOT
short-circuiting (x != 0) && (1/x > 1) SAFE
not short-circuiting (x != 0) & (1/x > 1) NOT SAFE
인수의 종류에 따라 다릅니다.
정수 인수의 경우 단일 앰퍼샌드("&")는 "비트 단위 AND" 연산자입니다.이중 앰퍼샌드("&")는 2개의 부울 인수를 제외하고 정의되지 않습니다.
부울 인수의 경우 단일 앰퍼샌드는 (무조건) "논리 AND" 연산자를 구성하고 이중 앰퍼샌드("&")는 "조건 논리 AND" 연산자를 구성합니다.즉, 단일 앰퍼샌드는 항상 두 인수를 평가하지만 이중 앰퍼샌드는 첫 번째 인수가 참일 경우에만 두 번째 인수를 평가합니다.
다른 모든 인수 유형 및 조합의 경우 컴파일 시간 오류가 발생합니다.
& &은 단락 연산자이고 &은 AND 연산자입니다.
이거 먹어봐.
String s = null;
boolean b = false & s.isEmpty(); // NullPointerException
boolean sb = false && s.isEmpty(); // sb is false
JLS(15.22.2)에 규정되어 있습니다.
&, ^ 또는 | 연산자의 양쪽 오퍼랜드가 boolean 또는 boolean일 경우 비트 연산자 식의 유형은 boolean이 됩니다.어느 경우든 오퍼랜드는 필요에 따라 언박스 변환(§5.1.8)됩니다.
&의 경우 두 오퍼랜드 값이 모두 true이면 결과값이 true이고 그렇지 않으면 false입니다.
^의 경우 피연산자 값이 다르면 결과 값이 true이고 다르면 결과가 false입니다.
|의 경우 두 오퍼랜드 값이 모두 false이면 결과 값이 false이고 그렇지 않으면 결과가 true입니다.
는 '꼼수'다&
는 정수 비트 연산자 및 부울 논리 연산자입니다.따라서 연산자 오버로드의 예라고 하는 것은 타당합니다.
제 대답은 좀 더 이해하기 쉬울 것 같습니다.
가지 &
★★★★★★★★★★★★★★★★★」&&
.
논리 AND로 사용하는 경우
&
★★★★★★★★★★★★★★★★★」&&
에 닿을 수 AND
의 the , 、 the &
★★★★★★★★★★★★★★★★★」&&
왼쪽 및 오른쪽 식 결과는 모두 참이며, 전체 연산 결과는 참일 수 있습니다.
때&
★★★★★★★★★★★★★★★★★」&&
AND
, 가 있습니다
를 사용하는 &&
AND
왼쪽 식의 결과가 false일 경우 오른쪽 식은 실행되지 않습니다.
예를 들어 보겠습니다.
String str = null;
if(str!=null && !str.equals("")){ // the right expression will not execute
}
「 」를 하고 있는 &
:
String str = null;
if(str!=null & !str.equals("")){ // the right expression will execute, and throw the NullPointerException
}
또 다른 예는 다음과 같습니다.
int x = 0;
int y = 2;
if(x==0 & ++y>2){
System.out.print(“y=”+y); // print is: y=3
}
int x = 0;
int y = 2;
if(x==0 && ++y>2){
System.out.print(“y=”+y); // print is: y=2
}
&은 비트 연산자로 사용할 수 있습니다.
&
Bitwise로 할 수 .AND
환입니다 operator operator operator.&&
하다.
비트 AND &" 연산자는 오퍼랜드의 두 비트가 모두 1인 경우에만 1을 생성합니다.그러나 두 비트가 모두 0이거나 두 비트가 다를 경우 이 연산자는 0을 생성합니다.좀 더 정확하게 말하면 AND &" 연산자는 2개의 비트 중 하나가 1이면 1을 반환하고 0이면 0을 반환합니다.
Wiki 페이지에서:
http://www.roseindia.net/java/master-java/java-bitwise-and.shtml
'&' : - 는 논리 AND 연산자로 해당 인수의 논리적 관계에 따라 true 또는 false의 부울 값을 생성합니다.
예: - Condition1 & Condition2
Condition1이 false일 경우 (Condition1 & Condition2)은 항상 false가 됩니다.따라서 이 논리연산자는 다른 조건을 평가하지 않기 때문에 Short Circuit Operator라고도 불립니다.Condition1이 false일 경우 Conditon2를 평가할 필요가 없습니다.
조건 1이 true이면 조건 2가 평가되고, true이면 전체 결과가 true가 되며, 그렇지 않으면 false가 됩니다.
'&' : -는 Bitwise AND 연산자입니다.두 입력 비트가 모두 1인 경우 출력에 1이 생성됩니다.그렇지 않으면 제로(0)가 생성됩니다.
예를 들어 다음과 같습니다.
int a=12;// 12의 이진 표현은 1100입니다.
int b=6; // 6의 이진 표현은 0110입니다.
int c=(a & b);// (12 & 6)의 이진 표현은 0100입니다.
c 값은 4 입니다.
참조에 대해서는, http://techno-terminal.blogspot.in/2015/11/difference-between-operator-and-operator.html 를 참조해 주세요.
&&
★★★★★★★★★★★★★★★★★」||
단락 연산자라고 불립니다. 「」의 ,||
첫가 - 로 되는 true
이치노★★★의 &&
첫가 - 로 되는 false
나머지는 전혀 평가를 받지 않습니다.
if (a || (++x > 0))
가 x로 되어 있으면 true
.
부울란에서는, 2개의 출력에 차이가 없습니다.& & & | | 및 | 를 교환할 수 있습니다.또한 식 결과는 변경되지 않습니다.
그 차이는 정보가 처리되는 배경 뒤에 있다.a= 0 및 b= 1에 대해 표현식 "(a!= 0) & ( b!= 0)"을 수정하면 다음과 같은 현상이 발생합니다.
left side: a != 0 --> false
right side: b 1= 0 --> true
left side and right side are both true? --> false
expression returns false
쓸때, '아,아,아,아,아,아,아,아,아,아,아,아.(a != 0) && ( b != 0)
=0 및 b 현상이 발생합니다.a = 0 및 b = 1 및 음 음 음 음 음 음 음 음 음 음 음 음 음 음 when when when when when when when when when
a != 0 -->false
expression returns false
특히 부울식이나 복잡한 인수를 많이 수행할 경우 스텝, 처리, 코딩이 줄어듭니다.
& 및 |가 단락되어 있을 뿐만 아니라 두 형식을 혼합할 때 연산자 우선 순위도 고려하십시오.result1과 result2의 값이 다르다는 것은 모든 사람에게 즉시 알 수 없다고 생각합니다.
boolean a = true;
boolean b = false;
boolean c = false;
boolean result1 = a || b && c; //is true; evaluated as a || (b && c)
boolean result2 = a | b && c; //is false; evaluated as (a | b) && c
&은 비트 연산자 +로 두 조건을 모두 평가해야 하는 경우가 있기 때문에 두 조건을 모두 확인하는 데 사용됩니다.그러나 & 논리연산자는 첫 번째 조건이 충족되면 두 번째 조건으로 이동합니다.
답변은 ""입니다.great
, 「 」라고 하는 것 아아아아아아아아아아아아아아아아아.no
answer 더 more 。is needed
하지만 전 단지 이 일에 대해 지적하고 싶은 게 있어요&&
라는 dependent condition
연산자 & & 를 을 「&&」라고 .dependent condition
:의존조건의평가가의미해지려면다른조건이참이될필요가있습니다.
이 경우 & & 연산자 뒤에 의존조건을 배치하여 오류를 방지해야 합니다.
를 들면, 「」의 을 생각해 주세요.(i != 0) && (10 / i == 2)
조건.(10 / i == 2)
appear after
&&
연산자를 사용하여 0으로 나눗셈할 가능성을 방지합니다.
예(myObject != null) && (myObject.getValue() == somevaluse)
하나 더 있어요.&&
★★★★★★★★★★★★★★★★★」||
두 번째 인수가 실행 또는 평가되기 때문에 단락 평가라고 불립니다.only if
first
가 되다not suffice
로로 합니다.determine
value
expression
참고 자료: Java™ How To Program (얼리 오브젝트), 제10판
연산자에 는 AND OR Java의 를 받고 .Short-Circuit evaluation
★★★★★★★★★★★★★★★★★」full evaluation
.
&& ||
Short-Circuit 평가를 사용하면 왼쪽 값에서 전체 결과를 예측할 수 있는 경우 AND 및 OR 식의 오른쪽을 평가할 수 없습니다.
int numberOne = 1;
int numberTwo = 2;
boolean result = false;
// left-side is false so the the overall result CAN be predicted without evaluating the right side.
// numberOne will be 1, numberTwo will be 2, result will be false
result = (numberOne > numberTwo) && (++numberOne == numberTwo);
System.out.println(numberOne); // prints 1
System.out.println(numberTwo); // prints 2
System.out.println(result); // prints false
// left-side is true so the the overall result CAN NOT be predicted without evaluating the right side.
// numberOne will be 2, numberTwo will be 2, result will be true
result = (numberTwo > numberOne) && (++numberOne == numberTwo);
System.out.println(numberOne); // prints 2
System.out.println(numberTwo); // prints 2
System.out.println(result); // prints true
& | ^
Evaluation
결과를 예측할 수 있는 경우도 있지만, 우측을 평가할 필요가 있습니다.
int numberOne = 1;
int numberTwo = 2;
boolean result = false;
// left-side is false so the the overall result will be false BUT the right side MUST be evaluated too.
// numberOne will be 2, numberTwo will be 2, result will be false
result = (numberOne > numberTwo) & (++numberOne == numberTwo);
System.out.println(numberOne); // prints 2
System.out.println(numberTwo); // prints 2
System.out.println(result); // prints false
주의:
- XORXOR)의 는, 해 주세요.
^
양쪽이 항상 전체적인 결과를 판단해야 하기 때문에 단락은 없습니다. - 서킷 할 수 있는 다른 에는, 「쇼트 서킷 평가」가 .
minimal evaluation
★★★★★★★★★★★★★★★★★」McCarthy evaluation
. - 부울 로직과 액션을 같은 식에 혼재시키는 것은 권장되지 않습니다.
&
Bitwise AND는 Bitwise AND를 사용합니다.이것은 매우 학술적이고 암호학에 사용할 수 있습니다.1인 가 1이 1이 경우, 0이 ( 코드를체크해 )는 1로, 1로, 1로, 0으로 되어 있습니다.
AND Bitwise 예제:
byte a = 5; // 00000101
byte b = 3; // 00000011
byte c = (byte) (a & b); // 00000001 (c is 1)
비교의 거의 모든 요점은 모든 답변에 잘 설명되어 있습니다.한 가지 예를 들어 보겠습니다.사용하는 연산자에 따라 출력이 어떻게 변화하는지 보여줍니다.다음 예시를 검토해 주십시오.
int a = 10;
if(++a==10 & ++a==12) {
++a;
}
System.out.println(a); //12
위 코드에서는 bitwise & operator를 사용하고 있습니다.따라서 개별 결과에 관계없이 양쪽의 주장(좌우)을 평가합니다.
a
if condition
그러나 조건이 true가 되지 않기 때문에 if-loop 내부에는 들어가지 않고 3번째 증가도 발생하지 않습니다.12살이라고 합니다.
그런 다음 후에++a==10
인수를 하지 않습니다.false는 .그래서 11이 될 가능성이 있는 최종값입니다.
int a = 10;
if(++a==10 && ++a==12) {
++a;
}
System.out.println(a); //11
이를 통해 bitwise & operator의 성능은 short circuit & operator에 비해 상대적으로 낮다고 할 수 있다.as bitwise 연산자는 첫 번째 인수 결과에 관계없이 두 인수를 모두 평가합니다.한편 & 연산자는 첫 번째 인수의 결과가 거짓일 경우 두 번째 인수의 평가를 중지합니다.
이 두 가지 차이점 중 하나는 Bitwise & operator가 Boolean 타입과 적분 타입에 적용된다는 것입니다.단, short & operator는 boolean 타입에만 적용됩니다.
우리는 쓸 수 있다
System.out.println(4 & 5); // 4
하지만 우리가 이렇게 쓰려고 한다면,
System.out.println(4 && 5);
그러면 다음과 같은 오류가 나타납니다.
이진 연산자 '&'의 피연산자 유형이 잘못되었습니다.
언급URL : https://stackoverflow.com/questions/5564410/what-is-the-difference-between-and-in-java
'programing' 카테고리의 다른 글
Nuxt.js의 서버 측과 Vuex 스토어 동기화 (0) | 2022.05.31 |
---|---|
vue 구성 요소에서 setInterval을 사용하는 방법 (0) | 2022.05.31 |
npm 설치 미달 의존 관계 (0) | 2022.05.31 |
#define 디렉티브를 통해 LLVM과 해당 버전을 감지하는 방법은 무엇입니까? (0) | 2022.05.31 |
Vuejs에서 vuex Store로 데이터를 전달하는 방법 (0) | 2022.05.31 |