1. 부울 연산
|
and 연산자 &
는 숫자뿐만 아니라 부울 표현식에도 적용할 수 있습니다.
&&
그러나 이미 알고 있듯이 및 연산자가 있습니다 ||
. 왜 우리는 |
대신에 ||
, 그리고 &
대신에 &&
? 이것에 대한 요점이 있습니까? 있는 것 같습니다. 때때로.
및 논리 연산자 ||
는 &&
소위 게으른 원칙 에 따라 왼쪽에서 오른쪽으로 실행됩니다 .
(expression1) || (expression2) || (expression3)
가 expression1
와 같으면 true
평가할 필요가 없으며 결과는 상관 expression2
없습니다 .expression3
true
true
따라서 식을 평가할 때(왼쪽에서 오른쪽 으로 평가됨) 를 얻자마자 나머지 식의 평가는 건너뜁니다 . 그리고 메서드 호출을 포함 expression2
하면 이러한 메서드는 호출되지 않습니다 !expression3
논리 연산자 도 마찬가지입니다 &&
.
(expression1) && (expression2) && (expression3)
가 expression1
와 같으면 false
평가할 필요가 없으며 결과는 상관 expression2
없습니다 .expression3
false
이것은 다음과 같은 것을 작성할 수 있게 해주는 중요한 사실입니다.
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
다릅니다 .5
6
연산자가 변수 앞에 있고 변수가 일부 식의 일부인 경우 ++
먼저 증가하고 그 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;
운영자 에게는 --
모든 것이 정확히 동일합니다.
GO TO FULL VERSION