JAVA/자바의 정석

[자바의 정석 - 기초편] 3. (1) 연산자 (종류 / 우선 순위 / 결합 규칙 / 형변환 / 산술 변환)

서영22 2023. 11. 24. 19:56

" 모든 연산자는 연산 결과를 반환 " 

연산자 : 연산을 수행하는 기호

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

 

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

 

 

< 연산자의 우선 순위  >

 

산술 > 비교 > 논리 > 대입

단항(1) > 이항(2) > 삼항(3)

 

 

< 연산자의 결합 규칙 >

대입, 단항 연산자를 제외하면 모두 왼쪽 ➔ 오른쪽

 

 

 

 증감 연산자 

타입 설명 예시
전위형 값이 참조되기 전에 증가 j = ++j ;
후위형 값이 참조된 후에 증가 j = j++ ;

 

 

 

 부호 연산자 

- : 피연산자의 부호를 반대로 변경

+ : 아무런 일 X

int i = -10;                    // i에 -10 대입
i = - i;                            // i 부호 반대
System.out.Println(i)   // 10

 

 

 

 형변환 연산자 

(타입) 피연산자

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

double d = 85.4;
int score = (int) d;    // 85 (더블타입 d를 정수타입으로 변경)

 

변환 수식 결과
int  ➔  char (char)65 'A'
char  ➔  int (int)'A' 65
float  ➔  int (int)1.6f 1
int  ➔  float (float)10 10.0f

 

* 유니코드 문자

   '0' = 48    /    'A' = 65    /    'a' = 97

 

 

 

 자동 형변환 연산자 

float f = 1234;                // (float) 생략 / int 타입의 값을 float 타입의 변수에 저장
float f = (float) 1234;      // 자동 형변환 됨

int i = 3.14f;          // 큰값을 작은 값에 넣으면 에러 / 자동 형변환 진행 X
int i = (int) 3.14f;    // 수동 형변환 해야 함

 

Ex)
1. byte  ➔  int (4byte)

byte b = 10;   // 10은 int지만 -128~127의 리터럴 값이라 가능
int i = b;   // 생략 가능

2. int (4byte)  ➔  byte : 큰값   작은값 = 값손실 발생
int i2 = 300;
byte b2 = (byte) i2;   // 생략 불가능

 

 

 

 사칙 연산자 

10 (int)  /  4 (int)  ➔  2 (int)

10 (int)  /  4.0f (float)  ➔  10.0f (float)  /  4.0f (float)  ➔  2.5f (float)

 

 

 

 산술 연산자 

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

 

1. 두 연산자의 타입을 같게 일치시킴 (큰 타입으로)

     long  +  int  ➔  long  +  long  ➔  long

     float  +  int  ➔  float  +  float  ➔  float

     double  +  float  ➔  double  +  double  ➔  double

 

2.  int보다 작은 타입이면 int로 변환 (byte, char, short)

     byte  +  short  ➔  int  +  int  ➔  int

     char  +  short  ➔  int  +  int  ➔  int