연산자와 연산식

Cloudman·2022년 11월 12일

프로그래머스 자바

목록 보기
4/11

❓연산자와 연산식

연산이란 데이터를 처리하여 결과를 산출한다는 의미이다.
자바에서는 다양한 연산자를 제공한다.

위처럼 다양한 연산자를 지원하는것을 알 수 있다.

연산식은 연산자와 연산식을 이용하한 연산의 과정을 말한다.


연산자는 연산에 사용되는 표시나 기호를 말한다.

부호 연산자 : +, -
산술 연산자 : +, -, *, /, %
증감 연산자 : ++, --

int i1 = -5;
int i2 = +i1;
int i3 = -i1;

System.out.println(i1);	// 결과 : -5
System.out.println(i2);	// 결과 : -5

변수 앞에 + 부호 연산자부호 비트를 유지시켜주는 역할이다.

System.out.println(i3);

결과 : 5

-음수는 양수로, 양수는 음수로 바꿔주는 역할을 한다.



int i4 = ++i3;  // i3 = i3 + 1 이라는 의미이다.

System.out.println(i4);	// 결과 : 6
System.out.println(i3);	// 결과 : 6

int i5 = i3++;  // i3 = i3 + 1;
System.out.println(i5); // 결과 : 6

++ 가 뒤에 붙어 있으면 i3 에 있던 6 이 먼저 i5에 들어가고
이후에 i3 에다가 1 을 더한다.

System.out.println(i3);

결과 : 7

위 결과로 인해서 1 이 늘어나서 결과가 7 이 된것을 볼 수 있다.




📒 산술 연산자

int i = 5;
int j = 2;

System.out.println(i + j);  // 결과 : 7
System.out.println(i - j);  // 결과 : 3
System.out.println(i * j);  // 결과 : 10
System.out.println(i / j);  // 결과 : 2

정수끼리의 연산은 정수값으로만 리턴되기 때문에 2.5 가 아닌 2 라는 결과가 나온다.

피연산자 ij 둘중 하나가 실수이면 원하는 값인 2.5 를 얻을 수 있다.

System.out.println(i / (double) j);

이처럼 강제 형변환을 해주어도 2.5 가 나온다.

System.out.println(i % j);
결과 : 1

% 는 나눈값에서 남은 값을 리턴해준다.




📒 비교 연산자

아래의 이미지 처럼 같다, 다르다 같은 이러한 것들에 쓰이는 연산자 이다.
그래서 결과는 항상 boolean 이 된다.

비교 연산자의 종류별 예시

System.out.println(i == j); // 결과 : true
System.out.println(i != j); // 결과 : false
System.out.println(i < j);  // 결과 : false
System.out.println(i <= j); // 결과 : true
System.out.println(i > j);  // 결과 : false
System.out.println(i >= j); // 결과 : true




📒 대입 연산자

변수에 값을 대입할때 사용하는 이항 연산자이다.
피연산자들의 결합 방향은 오른쪽에서 왼쪽이 된다.


📌 단순 대입 연산자

오른쪽에 있는 피연산자의 값을 왼쪽 피연산자의 변수에 저장
int i = 10;
int j = 10;

오른쪽의 값을 왼쪽 i 에 저장한다는 의미


📌 복합 대입 연산자

아래의 예시로 설명

i += 10;    // i = i + 10 이라는 의미이다.
System.out.println(i);  // 결과 : 20

System.out.println(i -= 5);     // 결과 : 15
System.out.println(i);      // 결과 : 15




📒 논리 연산자

A, B피연산자
나머지 4가지가 논리 연산자가 된다.


&& : 논리곱 연산자 라고 한다.
피연산자가 모두 true 일 경우에만 연산 결과가 true 이다.

|| : 논리합 연산자 라고 한다.
피연산자 중 하나만 true 이면 결과가 true 이다.

! : NOT 이라고 하며 논리부정 연산을 한다.
피연산자의 논리값을 바꾼다. truefalse로, falsetrue 로 바꾼다.

^ : 베타적 논리합 이라고 한다.
피연산자가 서로 다른 값일 경우만 연산 결과가 true 이다.


boolean b1 = true;
boolean b2 = false;
boolean b3 = true;

System.out.println(b1 && b2);   // 결과 : false
System.out.println(b1 && b3);   // 결과 : true
System.out.println(b1 || b2);   // 결과 : true
System.out.println(b1 || b3);   // 결과 : true
System.out.println(b2 || b2);   // 결과 : false

int score = 88;

if (score <= 100 && score >= 70) {
    System.out.println("A 이상");
} else {
    System.out.println("A 이하");
}

결과는 : A 이상

위처럼 특정한 상황에서 논리 연산자를 사용하면 유용하다.

논리곱 덕분에 70 점 이상 100 점 이하의 상황을 구현할 수 있다.

System.out.println(b1 ^ b3);    // false
System.out.println(b1 ^ b2);    // true

베타적 논리합에 의해 서로 값이 같은 첫번째는 false 를 리턴하고 서로 값이 다른 두번째는 true 를 리턴하는 것을 볼 수 있다.

System.out.println(!b1);
결과 : false

논리 부정에 의해 원래 값인 true 가 아닌 false 를 리턴한다.




📒 삼항 연산자

자바에서 삼항 연산자는 하나밖에 없다.
삼항 연산자는 if 문과 비슷하기 때문에 if 문으로 대체해도 무방하다.

int b1 = (5 < 4) ? 50 : 40;
54 보다 크다는 것이 맞으면 50 이라는 값을, 다르다면 40 이라는 값을 b1 에 넣는다는 의미이다.

조건식 ? 피연산자1 : 피연산자2 <--- 이러한 모습이 된다.

피연산자의 자리에는 주로 값이 오지만 경우에 따라 연산식이 올 수도 있다.

System.out.println(b1);     // 결과 : 40
int b2 = 0;
if (5 < 4) {
    b2 = 50;
} else {
    b2 = 40;
}
System.out.println(b2);     // 결과 : 40

위의 삼항 연산자를 if 문으로 만들면 이러한 모습이 된다.
상황에 따라서는 삼항 연산자로 처리하는 것이 더 깔끔할 수 있으나
본인이 불편하다면 if 문으로 대체해도 무방하다.

profile
코린이

0개의 댓글