Welcome to Wesley & Harry's Traveling & Programming

IT Program/Java Basic

java 논리 부정 연산자(!) & 논리 연산자 종류{AND(&&),OR(|),XOR(^),NOT(!)} & 원하는 문자 한번에 바꾸는 법(Replace/Find)

Wesley & Harry 2022. 3. 1. 15:19
반응형

저번 게시글에 이어 초반에 자주 써볼수 있는 논리 부정 연산자와 논리 연산자에 대해 알아보도록 하겠습니다.

 

논리 부정 연산자란 말 그대로 true, false에 대한 값을 부정한다는 뜻으로

!true 이면 false값 출력

!false 이면 true값 출력으로 볼수 있습니다.

반대를 뜻한다고 생각하면 편하겠습니다. 논리 부정 연산자는 조건문과 제어문에서 자주 사용됩니다.

 

코드를 통해 확인해보겠습니다.

boolean wesley = true;
System.out.println(wesley);
wesley = !wesley;
System.out.println(wesley);
wesley = !wesley;
System.out.println(wesley);

코드의 의미를 살펴봅니다.

1. boolean타입(true,false)으로 wesley를 설정해 준 후 true를 저장해줍니다.

2. wesley의 값을 출력합니다

3. wesley의 값에 논리부정연산자(!)를 적용시킨후 wesley에 저장합니다.

4. wesley의 값을 출력합니다.

5. 6. 반복

저희는 단순하게 반대의 의미를 가지고 생각한다면 손쉽게 결과값을 예상할 수 있습니다.

첫번째 결과값은 true, 두번째 결과값은 !가 붙어있으니 false, 세번째 결과값은 !가 다시 붙어있으니 true일 것으로 예상할 수 있습니다.

이클립스를 통해 확인해봅니다.

예상대로 결과값이 출력되었습니다.


다음은 논리 연산자를 알아보도록 하겠습니다.

논리 연산자에는 여러가지 종류가 있습니다.

&&, ||, &, |, ^, !

처음보는 생소한 글자들일 것입니다.

| 같은 경우에는 백스페이스바 아래 \버튼을 쉬프트와 함께 눌러준 기호입니다.

논리연산자의 종류를 표로 정리해보겠습니다.

구분 연산식 결과 설명
AND(논리곱) TRUE &&
혹은
&
TRUE TRUE 모두 TRUE일때만 결과값 TRUE
TRUE FALSE FALSE
FALSE TRUE FALSE
FALSE FALSE FALSE
OR(논리합) TRUE ||
혹은
|
TRUE TRUE 둘중 하나라도 TRUE이면 TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
XOR
(베타적 논리합)
TRUE ^ TRUE FALSE 둘중 하나만 TRUE일 때 TRUE
TRUE FALSE TRUE
FALSE TRUE TRUE
FALSE FALSE FALSE
NOT(논리부정)   ! TRUE FALSE 피연산자 논리값 바꿈
FALSE TRUE

논리 연산자를 사용할 때 주의할 점이 있다.

&&와 &는 산출 결과는 같다. 하지만 과정이 다르다. &&는 앞의 피연산자가 FALSE일 경우 뒤의 피연산자를 읽지 않고

바로 FALSE의 결과를 낸다. 좀더 효율적이라는 이야기이다.

||와 |또한 같다. 앞의 피연산자가 TRUE라면 뒤의 피연산자를 평가하지 않고 바로 TRUE라는 산출을 낸다.

저는 개발자로써 효율적이란 말을 참 좋아한다.

효율적인 코드를 사용함으로써 좀더 성장함을 느낄 수 있기 때문이다.

 

아직 조건문을 배워보진 않았지만 조건문을 사용해서 논리 연산자의 적용 예시를 코드를 통해 알아보도록 한다.

int wesley = 20;
if(wesley>20&&wesley<40) { // false && true
	System.out.println(wesley + "는 wesley>20, welsey<40 모두 true일 경우 출력");
} else {
	System.out.println(wesley + "는 wesley>20, welsey<40 하나라도 true가 아닐 경우 출력");
}
		
if(wesley>=20&&wesley<40) { //true && true
	System.out.println(wesley + "는 wesley>=20, welsey<40 모두 true일 경우 출력");
} else {
	System.out.println(wesley + "는 wesley>=20, welsey<40 하나라도 true가 아닐경우 출력");
}

if(wesley<40&&wesley>30) { // true && false
	System.out.println(wesley + "는 wesley<40, wesley>30 모두 true일 경우 출력");
} else {
	System.out.println(wesley + "는 wesley<40, wesley>30 하나라도 true가 아닐경우 출력");
}

if(wesley>100&&wesley<10) { // false && false
	System.out.println(wesley + "는 wesley>100, welsey<10 모두 true일 경우 출력");
} else {
	System.out.println(wesley + "는 wesley>100, welsey<10 하나라도 true가 아닐 경우 출력");			
}

해당 코드를 통해 &&의 예시를 알아 볼 수 있다.

첫번째 if문은 wesley의 값이 20보다크고 40보다 작으면 if문 안의 System.out.println의 내용이 나온다.

아닐경우 else의 System.out.println의 내용이 나온다.

false && true

두번째 if문은 wesley의 값이 20보다 크거나 같고 40보다 작으면 if문 안의 System.out.println의 내용이 나온다.

아닐경우 else의 System.out.println의 내용이 나온다. 여기에서 (>=)은 같거나 큰을 뜻한다.

true && true

세번째 if문은 wesley의 값이 40보다 작거나 30보다 크면 if문 안의 System.out.println의 내용이 나온다.

아닐경우 else의 System.out.println의 내용이 나온다.

true&&false

네번째 if문은 wesley의 값이 100보다 크거나 10보다 작을 경우 if문 안의 System.out.println의 내용이 나온다.

아닐경우 else의 System.out.println의 내용이 나온다.

if else문은 말 그대로 만약 ~~ 라면 if문 블록의 내용을 실행하고

아닐경우 else의 블록 부분을 실행하는 제어문이다. 이 내용은 추후에 알아보도록 한다.

위 코드의 내용을 eclipse에서 결과를 내어보도록하자.

&&의 테스트 함과 동시에 결과를 통해 논리곱에 대해 이해할 수 있다.

해당 코드를 통해 || OR의 값또한 도출해보도록 한다.

이쯤에서 좋은 기능을 하나 소개하도록 한다

replace라는 기능이다.

맨앞라인에 마우스를 둔 후

해당 코드에서 Ctrl + F 를 눌러보자

Find/Replace라는 대화상자가 뜨게된다.

해당 기능을통해 &&라고 적혀있는 부분을

||로 바꿔보도록 하겠다.

Find부분에 &&을 작성하고

Replace with에 ||을 작성해보도록 하자

그다음 Replace All을 눌러보자

그럼 &&부분이 ||로 바뀐 것을 확인할 수 있다.

바꾼뒤 출력하는 부분의 설명을 아래와 같이 바꿔주자

int wesley = 20;
if(wesley>20||wesley<40) { // false || true
	System.out.println(wesley + "는 wesley>20, welsey<40 하나라도 true일 경우 출력");
} else {
	System.out.println(wesley + "는 wesley>20, welsey<40 하나라도 true가 없을 경우 출력");
}

if(wesley>=20||wesley<40) { //true || true
	System.out.println(wesley + "는 wesley>=20, welsey<40 하나라도 true일 경우 출력");
} else {
	System.out.println(wesley + "는 wesley>=20, welsey<40 하나라도 true가 없을 경우 출력");
}

if(wesley<40||wesley>30) { // true || false
	System.out.println(wesley + "는 wesley<40, wesley>30 하나라도 true일 경우 출력");
} else {
	System.out.println(wesley + "는 wesley<40, wesley>30 하나라도 true가 없을 경우 출력");
}
		
if(wesley>100||wesley<10) { // false || false
	System.out.println(wesley + "는 wesley>100, welsey<10 하나라도 true일 경우 출력");
} else {
	System.out.println(wesley + "는 wesley>100, welsey<10 하나라도 true가 없을 경우 출력");			
}

위의 표와 같이 결과값이 맞게 도출되는 것을 알 수 있다.

XOR과 NOT 또한 해당 코드와 REPLACE를 통해 자신이 직접 코드를 작성하여 연습해보도록 하자.

REPLACE/ FIND 단축키 Ctrl + F

반응형