TIL/myself

TIL(Today I Learned) 20220418 자바 연산자과 연산식

토희 2022. 4. 18. 15:20
728x90

https://youtu.be/MrFP_vCK5QU

- 프로그램에서 데이터를 처리하여 결과를 산출하는것을 연산(operation)이라고 한다.

연산자: 연산에서 사용되는 표시나 기호

피연산자: 연산자와 함께 연산되는 데이터

연산식: 연산자와 피연산자 사용하여 연산 과정 기술한것 

 

자바에서 제공되는 연산자: 산출되는 값의 타입이 연산자별로 다름

이항: 2개, 단항: 1개

 

연산식은 반드시 하나의 값 산출

변수에 연산식의 값을 저장

다른 연산식의 피연산자 위치에 연산식 대입 가능

 

복합적으로 구성된 연산식의 연산: 우선순위에 따라 수행

단항 -> 이항 -> 삼항

산술 -> 비교 -> 논리 -> 대입

우선순위가 같은 연산자는 왼쪽에서 오른쪽 방향으로 수행    예외) 대입 연산자는 오른쪽에서 왼쪽으로

 

https://youtu.be/1YK3FZ7x8yA

피연산자 수에 따라 나뉨

단항 연산자: 부호, 증감 연산자  ++x;

이항 연산자: 산술, 비교, 논리 연산자   x + y;

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

 

부호 연산자: boolean 타입과 char 타입을 제외한 기본 타입에 사용

부호연산의 결과는 int

byte b = 100;

byte result = -b;  (X) 컴파일 에러 발생, int이하 정수 산술연산(부호연산)은 int타입으로 연산

int result = -b;  (O)

 

증감 연산자: boolean 타입 외 모든 기본 타입 피연산자에 사용 가능, ++, --

변수 앞뒤 어디에든 올수 있음

다른 연산자와 함께 사용될 경우 증감 연산자 위치에 따라 결과 달라질 수 있음

int x = 1;

int y = 2;

int result1 = ++x + 10;   ->  x값 : 2, result1 값: 12

int  result2 = y++ + 10;  -> y값: 2, result2값: 11

why? y++는 result2값에 먼저 y값이 대입되고, 그 다음에 10을 해줌 따라서 ++ 영향을 안 받음

 

다른 블로그 예제 보기

https://studymake.tistory.com/417

 

자바(JAVA)의 증감 연산자

 증감 연산자 ++와 --는 한 개의 피연산자를 갖는 단항 연산자로서 피연산자를 1씩 증가 혹은 감소시키는 것이다. (증감연산자는 C/C++에서의 용법과 동일하다.) 반복문에서 많이 사용되며 피연산

studymake.tistory.com

 

논리, 부정연산자

! 피연산자가 true이면 false를, false이면 true 값을 산출

 

산술 연산자

피연산자 타입이 동일하지 않은경우 아래 규칙에 따라 일치시켜 연산 수행

- 피연산자가 byte, short, char 타입일 경우 모두 int타입으로 벼환

- 피연산자가 모두 정수 타입이고 long타입으로 포함될 경우 모두 long 타입으로 변환

- 피연산자가 실수 타입이 있을 경우 혀용 범위 큰 실수 타입으로 변환(double)

 

문자열 결한 연산자: 피연산자 중 한쪽이 문자열인 경우

 

https://youtu.be/UOHH2quwVLM

이항 연산자

비교 연산자: 피연산자의 대소 비교하여 true/ false 산출, 조건문이나 반복문에서 실행 흐름제어

동등 비교 연산자: 모든 타입에 사용가능( ==, != )

크기 비교 연산자: boolean 외 모든 기본타입에 사용 가능( > , >= , <, <=)

 

논리 연산자: boolean타입만 사용 가능

AND && 또는 &

OR // 또는 /

XCR ^

NOT !

대입 연산자

오른쪽 피연산자의 값을 왼쪽 피연산자인 변수에 저장 =

단순 대입, 복합대입 연산자

x + = 2;   ->  x = x + 2;

x * = 3;   ->  x = x * 3;

 

삼항 연산자

- 3개의 피연산자를 필요로 하는 연산자

- ? 앞의 조건식에 따라 콜론(:) 앞뒤의 피연산자 선택

int score = 95;

char grade = (score > 90) ? 'A' : 'B' ;

 

if문으로 변경하면

int score = 95;

char grade;

if(score > 90){

grade = 'A';

} else {

grade = 'B';

}

 

728x90