1. 부울 연산

|and 연산자 &는 숫자뿐만 아니라 부울 표현식에도 적용할 수 있습니다.

&&그러나 이미 알고 있듯이 및 연산자가 있습니다 ||. 왜 우리는 |대신에 ||, 그리고 &대신에 &&? 이것에 대한 요점이 있습니까? 있는 것 같습니다. 때때로.

및 논리 연산자 ||&&소위 게으른 원칙 에 따라 왼쪽에서 오른쪽으로 실행됩니다 .

(expression1) || (expression2) || (expression3)

expression1 와 같으면 true평가할 필요가 없으며 결과는 상관 expression2 없습니다 .expression3true

true따라서 식을 평가할 때(왼쪽에서 오른쪽 으로 평가됨) 를 얻자마자 나머지 식의 평가는 건너뜁니다 . 그리고 메서드 호출을 포함 expression2 하면 이러한 메서드는 호출되지 않습니다 !expression3

논리 연산자 도 마찬가지입니다 &&.

(expression1) && (expression2) && (expression3)

expression1와 같으면 false평가할 필요가 없으며 결과는 상관 expression2없습니다 .expression3false

이것은 다음과 같은 것을 작성할 수 있게 해주는 중요한 사실입니다.

String s = null;
if (s != null && s.length() > 0) {

위의 예제는 s.length() 번째 부분 s! = null이 .true

s와 같으면 연산자 null의 왼쪽 부분은 &&이고 false전체 부울 표현식의 결과는 이므로 false오른쪽 부분( s.length() > 0)은 평가되지 않습니다.

할 말:

|연산자 또는 &연산자를 사용하는 경우 지연 평가가 없습니다 . 각 하위 표현식은 항상 평가됩니다.



2. 자바에서의 연산 우선순위

고등학교 수학 수업에서 기억할 수 있듯이 곱하기 연산자는 더하기 연산자보다 우선 순위가 높습니다. 괄호는 더 높은 우선 순위를 갖습니다. 괄호 안의 표현식이 먼저 평가되고 곱셈과 나눗셈, 덧셈과 뺄셈이 그 다음으로 평가됩니다.

Java의 연산자에도 우선 순위가 있습니다. 차이점은 a) 약간 더 많다는 것입니다. b) 일부 연산자의 경우 피연산자는 왼쪽에서 오른쪽으로 평가되고 다른 연산자의 경우 오른쪽에서 왼쪽으로 평가됩니다.

다음은 모든 Java 연산자가 포함된 표입니다.

범주 운영자 연관
접미사 () [] . 왼쪽에서 오른쪽으로
단항 ++ -- ! ~ 오른쪽에서 왼쪽으로
곱셈 * / % 왼쪽에서 오른쪽으로
첨가물 + - 왼쪽에서 오른쪽으로
이동 >> >>> << 왼쪽에서 오른쪽으로
관계형 > >= < <= 왼쪽에서 오른쪽으로
평등 == != 왼쪽에서 오른쪽으로
비트별AND & 왼쪽에서 오른쪽으로
Exclusive OR(XOR) ^ 왼쪽에서 오른쪽으로
비트별OR | 왼쪽에서 오른쪽으로
논리적AND && 왼쪽에서 오른쪽으로
논리적OR || 왼쪽에서 오른쪽으로
가정 어구 ?: 오른쪽에서 왼쪽으로
과제 = += -= *= /= %= >>= <<= &= ^= |= 오른쪽에서 왼쪽으로
반점 , 왼쪽에서 오른쪽으로

맨 윗줄에는 우선 순위가 가장 높은 연산자가 포함됩니다. 괄호는 ()우선 순위를 명시적으로 설정하는 데 사용됩니다. 대괄호는 []배열 변수의 특정 인덱스에 있는 요소에 액세스하는 데 사용됩니다. 점 연산자( .)는 개체 또는 클래스에 대한 참조를 사용하여 필드 및 메서드에 액세스하는 데 사용됩니다.

테이블에서 연산자가 낮을수록 우선 순위가 낮아집니다.

표현식에 여러 연산자를 사용하는 경우 게으르지 말고 괄호를 추가하세요.

Java에서는 와 같은 것을 작성할 수 if (a & 1<< b > ~c)있지만 그렇게 해서는 안 됩니다. 컴파일러뿐만 아니라 다른 프로그래머를 위한 코드도 작성하고 있습니다. 코드는 가독성이 높을수록 좋습니다.



3. 접두사 및 접미사 증가

아시다시피 Java에는 증가 연산자( ++)와 감소 연산자( --)가 있습니다. 각각 변수의 값을 1.

아마도 당신이 모르는 것은 이러한 연산자에는 두 가지 유형이 있다는 것입니다: 접두사(연산자는 변수 앞에 위치)와 접미사(연산자는 변수 뒤에 위치). 그리고 두 종류의 연산자는 약간 다르게 작동합니다.

Java에서는 다음과 같은 식을 작성할 수 있습니다.

int a = 5;
int b = a++;

연산자가 변수 뒤에 나타나고 변수가 일부 표현식의 일부인 경우 ++(위의 예에서와 같이) 표현식은 변수의 현재 값을 사용하고 이후에만 변수가 만큼 증가합니다 1.

즉, 다음과 같은 일이 발생합니다.

int a = 5;
int b = a;
a = a + 1;

즉, 언뜻 생각하는 것과는 b다릅니다 .56

연산자가 변수 앞에 있고 변수가 일부 식의 일부인 경우 ++먼저 증가하고 그 1후에만 해당 값이 식에서 사용됩니다.

int a = 5;
int b = ++a;

위의 예는 다음 예와 동일합니다.

int a = 5;
a = a + 1;
int b = a;

여기서 는 b와 같습니다 6.

다른 사람도 Java 프로그래머인지 여부를 확인하기 위해 Java 프로그래머가 사용하는 예도 있습니다.

int a = 5;
int b = ++a + ++a;

네 그것도 쓸 수 있습니다.

이 예제는 잘 컴파일되고 다음과 같이 바뀝니다.

int a = 5;

a = a + 1;
int v1 = a;

a = a + 1;
int v2 = a;

int b = v1 + v2;

운영자 에게는 --모든 것이 정확히 동일합니다.