본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( 연산자와 피연산자 / 연산자의 종류 / 연산자 우선순위 / 연산자 결합법칙)

by ✲ 2020. 6. 17.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

 

연산자 : 연산을 수행하는 기호 (+, -, *, /) 

피연산자 : 연산자의 연산 수행 대상 

*모든 연산자는 연산결과를 반환한다. 

 

연산자의 종류 

산술 연산자 + - * / << >> 사칙 연산과 나머지 연산(%)
비교 연산자 > < >= <= == != 크고 작음과 같고 다름을 비교 
논리 연산자 && || !  그리고(AND)와 또는(OR) 으로 조건을 연결
대입 연산자 = 우변의 값을 좌변에 저장
기타 (type) ? :  instance of  형변환 연산자, 삼항 연산자, instanceof 연산자 

 

연산자의 우선 순위와 연산자의 결합 법칙은 아래 3가지만 기억! 

- 산술 > 비교 > 논리 > 대입, 대입은 제일 마지막에 수행

- 단항(1) > 이항(2) > 삼항(3), 단항 연산자의 우선순위가 이항 연산자보다 높다 

- 단항 연산자와 대입연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽! 

 

증감 연산자

증가 연산자 ++   피연산자의 값을 +1 증가

감소 연산자 --    피연산자의 값을 -1 감소 

 

전위형 : 값이 참조되기 전에 증가시킴 j = ++i; 

휘위형 : 값이 참조된 후에 증가시킴 j = i++; 

* 증감연산자가 독립적으로 사용된 경우, 전위형과 후위형의 차이 X 

전위형 

j = ++i ; 

++i ; //증가 후에 

j = i ; //참조하여 대입 

후위형 

j = i++; 

j = i ;  //참조하여 대입 후에 

i++;   // 증가

 

형변환 연산자 

형변환

- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것 

(타입) 피연산자 

double d = 85.4;    //double은 8byte 

int score = (int)d ;  // int는 4byte 

> int score = (int)85.4 ; 

> int scroe = 85; 

 

자동형변환 

float f = 1234;      // float는 실수 1234는 정수로 타입 불일치, 하지만 float 타입이 크기 때문에 작은 타입의 값을 큰 타입의 변수에 넣어서 상관 X 

float f = (float) 1234;  // 자동형변환 > 컴파일러가 자동으로 형변환 

int i = 3.14f ; // 에러  int < float  값손실 발생으로 컴파일러가 자동 형변환 X 

> int i = (int)3.14f // 수동 형변환 

> int i = 3; 

 

형변환 예제 (리터럴 , 변수 차이)

byte b = 100;                  //OK byte타입 (-128 ~ 127) 

byte b = (byte)100;           //OK byte타입으로 자동 형변환하여 대입 / 100은 리터럴 

int i = 100;

byte b = i;                       // 에러 int타입을 byte 타입에 대입 / i는 변수 

byte b = (byte) i ;              // OK byte타입으로 형변환하여 대입 

 

산술 변환

연산 전에 피연산자의 타입을 일치시키는 것 

- 두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치)

- 피연산자의 타입이 int 보다 작은 타입이면 int로 변환 

 

반올림 Math.round() 

실수를 소수점 첫째자리에서 반올림한 정수를 반환 

long result = Math.round(4.52);          //result = 5 ;

 

나머지 연산자 % 

오른쪽 피연산자로 나누고 남은 나머지를 반환

 

비교 연산자 

두 피연산자를 비교해서 true(참) 또는 false(거짓)을 반환 

비교 연산자 연산 결과
> 좌변값이 크면, true 아니면 false
< 좌변값이 작으면, true 아니면 false 
>= 좌변값이 크거나 같으면, true 아니면 false 
<= 좌변값이 작거나 같으면, true 아니면 false 
== 두 값이 같으면, true 아니면 false 
!=  두 값이 다르면, true 아니면 false 

 

문자열의 비교 

문자열 비교에는 == 대신 equals()를 사용! 

String str1 = "abc"; 

String str2=  "abc";

System.out.println(str1==str2);        //true 

System.out.println(str1.equals(str2));  //true 

 

String str1 = new String("abc");

String str2 = new String("abc");

System.out.println(str1==str2) ;         //false

Systeou.out.println(str1.equals(str2));  //true

 

논리 연산자 

조건식을 연결할 때 사용하는 연산자 

- || (or결합) : 피연산자 중 어느 한쪽이 true이면 true 결과로 얻는다 

- && (AND결합) : 피연산자 양쪽 모두 true이어야 true 결과로 얻는다

 

논리 부정 연산자 ( ! )  

true를 false 로, false 를 true로 변경 

 

조건 연산자 

조건식의 결과에 따라 연산결과를 달리한다. 

조건식 ? 식1 : 식2 

조건식이 참이면 식1 , 거짓이면 식2 

result = (x>y) ? x : y           // 괄호생략가능

 

대입 연산자

오른쪽 피연산자를 왼쪽 피연산자에 저장 후 저장된 값을 반환

 

복합 대입 연산자

대입 연산자와 다른 연산자를 하나로 축약 

i +=3 ;          // i = i+3; 

i -= 3;           // i = i-3; 

i += 10 + j    // i = i+(10+j) 

반응형

댓글