본문 바로가기

프로그래밍/자바(java)

[자바/java] 연산자 (논리 연산자, 산술 연산자, 삼항연산자)

프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산 이라고 합니다.

 

x + y;

x - y;

x * y;

x == y

 

이런식으로 더하기나 빼기 곱하기나 나누기를 하는 것과 x와 y를 비교하는 것도 연산이라고 합니다.

 

연산식에서 + , - 등을 연산자 라고 말한고, x, y , z 을 피연산자 라고 합니다.

 

단항 연산자 : +xx;

이항 연산자 : x + y;

삼항 연산자 : (sum > 90) ? "A" : "B";

 

피연산자 하나로 사용하여 연산을 하면 단항 연산자,

저희가 일반적으로 알고 있는 더하기 빼기 형식은 이항 연산자,

앞에 조건문이 있고, 참일때(A), 거짓일 때(B)로 나타내는 형태를 삼항 연산자 라고 합니다.

 

연산의 방향과 우선순위

 

 

다양한 연산자가 있는데 하나의 연산식에 연산자가 많으면 어떻게 진행이 될까요?

 

100 * 2 / 3 % 5

 

예로 위의 식으로 되어있으면 100 * 2 가 먼저 실행 되고

 

200 / 3 을 하고 66.66666667 이 나오고 % 5 순서로 진행이 됩니다.

(왼쪽에서 오른쪽방향으로 순서대로 진행)

 

a = b = c = 5

 

하지만, 이런 경우는 c 라는 변수에 5가 들어가고

b라는 변수에 c 값(5) 가 들어가는 순서로 진행이 됩니다.

(오른쪽에서 왼쪽순으로 진행이 됩니다.)

 

 

표로 정리해 보면 이렇게 되겠습니다.

 

한가지 예를 더 보겠습니다.

 

result는 var1 + var2 * var3 으로 되어있는데 우선순위로 인해 var2 * var3 가 먼저 연산되고

 

result2는 ( var1 + var2) * var3 는 우선순위가 가로에 씌어진것 (var1 + var2) 부터 하게 되어 값이 다르게 나옵니다.

 

연산자 하나 하나씩 알아 보도록 하겠습니다.

 

부호 연산자

 

증감 연산자는 수학에서 양수, 음수라는 생각하시면 됩니다.

 

결과 값으로 보면 ++을 변수앞에 썼을 때랑 뒤에 썼을 때 다르게 나옵니다.

하지만 나중에 결과 값을 다시 보니 결과값은 똑같습니다.

 

변수앞에 쓰면 바로 값을 증가 시키고 변수 뒤에 ++ 를 쓰면 실행 후 나중에 더하기가 된다.

 

논리 부정 연산자

논리 부정 연산자는 true를 false로 flase를 true로 변형 해 준다.

 

example에 처음 값은 true 였지만 !을 붙여 변환 시킬 수 있습니다.

비트 반전 연산자

비트 반전 연산자는 비트값인 0, 1 로 되어있는 값을 0은 1로 1은 0으로 바꿀 수 있는 연산자입니다.

 

예제를 보면 값을 2진수로 바꾼 수 비트를 확인하면 1010이 10으로 나타내는데

~를 쓰면 0을 1로 0으로 바꿔 쓸 수 있습니다.

 

산술 연산자

우리가 알고 있는 사칙연산인 더하기(+), 빼기(-), 곱하기(*), 나누기(/) 나머지 구하는 (%)를 포함하여 5개가 여기에 포함된다.

 

이 처럼 나오게 된다.

 

 

문자열 연결 연산자

 

데이터 타입이 안맞는 경우 에러가 나는 경우가 흔한 경우지만,

String에서는 안나는 경우가 있는데 더하는 경우 String타입으로 자동 변환 되어 밑에 처럼 된다.

 

String과 double 타입을 더해도 에러 없이 결과가 나오게 되고

앞에서 공부 한것 처럼 3 + 7 이 10이 나올것같지만 37이 나오는 이유는 3이나 7 이 숫자가 아니면 문자로 인식을하여 뒤에 붙는 형식으로 인식하기 때문이다.

 

 

비교 연산자

 

비교 연산자는 > (왼쪽이 더 큰가?) , < (오른쪽 값이 더 큰가?) , => (왼쪽 값이 더 크거나 같나?) , <= (오른쪽값이 더 크거나 같나?) , != (오른쪽 값과 왼쪽값이 다른가? ) , == (오른쪽값과 왼쪽값이 같은가?) 가 있다.

연산자가 말한 말과 값이 맞으면 true, 다르면 false 로 나온다.

 

 

논리 연산자

 

논리 연산자는 논리곱(&&), 논리합(||), 베타적 논리합(^), 논리 부정(!) 연산을 수행합니다.

 

 

첫번째 예제는 두 조건 문 모두 거짓이다. && 은 두 조건이다 참일때 출력이 되는데 둘다 거짓이므로 출력이 되지 않는다.

두번째 예제는 두 조건중 앞 조건이 참이다. || 은 두 조건중 하나라도 참일 경우 참으로 나와 두번쨰 값은 출력이 된다.

 

 

삼항 연산자

 

삼한연산자는 세개 연산이 들여한데 (조건1) ? 참일때 : 거짓일떄 를 표시합니다.

 

예제를 보면,

90 이상일 때 잘함이 출력 되고 아닐떄 못함이 출력 되는것을 볼 수 있습니다.

물론 참일때쓰곳이랑 못하는 곳에 조건문을 또 적어 삼항 연산자를 작성할수있습니다.

 

삼항연산자 안에 삼항연산자