[JAVA 개념정리]

운영자

  • 연산자: 작업을 수행하는 기호
  • 피연산자: 연산자가 수행하는 작업의 대상
  • 연산자는 결과를 반환하지 않으면 연산자가 아닙니다.

연산자 유형

[JAVA 개념정리] 1

int k = 0, j = 3;

// 전위형
k = ++j;  // k = 4
j; // j = 4 

k = 0, j = 3; // 초기화

// 후위형
k = j++;  // k = 3
j;  // j = 4

문자 연산자

  • - : 피연산자의 역부호
  • + : 변화없음(실사용X)

    캐스트 연산자

조판: 변수 또는 상수 유형을 다른 유형으로 변환

[JAVA 개념정리] 2

자동 유형 변환

  • 타입은 기존 값을 최대한 보존할 수 있는 타입으로 자동 변환됩니다.
    (컴파일러는 이 작업을 자동으로 수행합니다.
    )
  • 표현 범위가 좁은 타입 → 넓은 타입 : 넓은 범위로 변환
  • 표현의 범위가 좁은 유형 ← 넓은 유형: 가치 손실이 있어 자동 유형 변환이 불가능하다.
    강제 유형 변환 필요
float f = 1234; // (OK) int 타입의 값을 float 타입 변수에 저장

int i = 3.14f; // (Error) float 타입 값이 더 크기 때문에 값 손실이 생겨서 error
int i = (int)3.14f; // (OK) 수동으로 형변환 시켜야 한다.

네 개의 산술 연산자

더하기(+), 빼기(-), 곱하기

int a = 10, b = 4;

System.out.println(a / 4); // 2 출력. 소수점 이하 버림
System.out.println(a / (float)b);  // 2.5 출력

분할 (/)

산술 변환

  1. 연산 전 피연산자 유형 일치
  2. 두 피연산자의 유형이 동일하도록 일치시킵니다(더 큰 유형 일치).
char ch = '2';

// 문자 '2' 는 숫자로 50, '0' 은 48
// 따라서 int 타입으로 자동으로 변하기 때문에 50 - 48 = 2
System.out.println(ch - '0');

int a = 1_000_000; // 1백만
int b = 2_000_000; // 2백만

// long l = a * b; // -1454759936. 계산할 때 이미 오버플로우 발생하므로 형변환 필요

long l = (long)a * b;
// long * int -> long * long => 1_000_000L * 2_000_000 -> 1_000_000L * 2_000_000L
System.out.println("l = " + l);

피연산자의 유형이 int보다 작으면 int로 변환됩니다.

  • 수학

  • round() 수학적 방법이 있는 수업

  • ceil() : 소수점 첫째 자리까지 반올림한 정수를 반환합니다.
  • floor() : 증가된 값을 double로 반환
  • abs() : 반올림된 값을 double로 반환

// 소수점 3째 자리에서 반올림한 값 구하기
double pi = 3.141592;
double shortPi = Math.round(pi * 1000) / 1000.0;

: 절대값. int 및 double 기본 유형을 모두 사용할 수 있습니다.

  • 나머지 연산자 %

  • 왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 반환

  • 나누는 피연산자(오른쪽)는 0이 아닌 정수만 허용합니다.

    문자 무시

  • 비교 연산자

  • 연산 결과는 참 또는 거짓입니다.

    • 비교 연산자: < , >≤, ≥
    • 두 피연산자 값의 크기 비교
    • 기본형 중 boolean을 제외한 모든 데이터형에 사용 가능
  • 참조 유형을 사용할 수 없습니다.

    • 등가 연산자: ==, ≠
    • 두 피연산자의 값이 같은지 아닌지 비교

모든 데이터 타입(기본형 – 값 비교, 참조형 – 주소 비교) 사용 가능

  • == 문자열 비교 equals() 대신에

    • equals 사용
    • == : 두 피연산자의 값 자체 비교

      : 두 피연산자의 주소 값 비교

  • && 논리 연산자

  • || : 그리고. 모든 논리식이 참이면 참을 반환합니다.

  • !
    : 또는. 논리식이 참이면 참을 반환합니다.

: 아니다.
논리식의 결과가 true이면 false를 반환합니다.

  • & 비트 연산자

  • | : (비트 AND 연산) 해당 비트가 모두 1이면 1을 반환

  • ^ : (비트 OR 연산) 해당 비트 중 하나라도 1이면 1을 반환

  • ~ : (비트 XOR 연산) 해당 비트가 다르면 1을 반환

  • << : (비트 NOT 연산, 1의 보수) 비트를 1이면 0으로, 0이면 1로 반전

  • >> : (좌이동 연산) 모든 비트를 지정된 숫자만큼 좌이동

  • >>> : (오른쪽 시프트 연산) 부호를 유지하면서 모든 비트를 지정된 숫자만큼 오른쪽으로 시프트

  • : 모든 비트를 지정된 비트 수만큼 오른쪽으로 이동, 모든 새 비트는 0

    연산은 비트 단위로 수행되므로 정수형과 변환 가능한 데이터형만 처리할 수 있습니다.

  • 조건 연산자 조건식 ? 반환값1 : 반환값2

  • 삼항 연산자

조건식이 참이면 값 1을 반환하고, 거짓이면 값 2를 반환합니다.

  • = 작업 관리자

: 오른쪽 피연산자를 왼쪽 피연산자에 할당

  • 복합 할당 연산자
  • 연산자(op)와 할당 연산자(op=)의 조합

예) += , -= , /= , *= , %= , <<= , &= , ^= , |= (참조)