자바에서는 여러 종류의 연산을 수행하기 위한 다양한 연산자를 제공하고 있습니다.

  1. 산술 연산자(arithmetic operator)
  2. 대입 연산자(assignment operator)
  3. 증감 연산자(increment and decrement operators)
  4. 비교 연산자(comparison operator)
  5. 논리 연산자(logical operator)
  6. 비트 연산자(bitwise operator)
  7. 삼항 연산자(ternary operator)
  8. instanceof 연산자 (객체 타입 확인)
연산자 종류연산자피연산자 수산출값기능
산술+, -, *, /, %이항숫자사칙연산과 나머지
부호+, -단항숫자음수와 양수 표시
문자열+이항문자열두 문자열을 연결
대입=, +=, -=, *=, /=, %=이항다양우변의 값을 좌변에 대입
증감++, —단항숫자1만큼 증가/감소
비교==, ≠, <, >, ≥, ≤, instanceof이항boolean값의 비교
논리!, &,, &&,
조건(조건식)?A:B삼항다양조건식에 따라 A 또는 B 중 선택

이항 연산자

이항 연산자는 피연산자가 두 개인 연산자를 말합니다.

산술 연산자, 문자열 연결 연산자, 대입연산자, 비교 연산자, 논리 연산자, 비트 논리 연산사, 비트 이동 연산자 등이 있습니다.

산술 연산자

산술연산자는 사칙연산을 다루는 연산자로 가장 기본적이면서 가장 많이 사용되는 연산자 중 하나 입니다.

  • 명시적 형변환 : 데이터의 자료형을 다른 자료형으로 바꾸는 것
  • 묵시적 현변환 : 프로그램 실행 도중 자동으로 일어나는 형변환
public class operator {
    public static void main(String[] args) {
        int num1 = 10, num2 = 4;
        System.out.println("+ 연산자 : " + (num1 + num2));
        System.out.println("- 연산자 : " + (num1 - num2));
        System.out.println("* 연산자 : " + (num1 * num2));
        System.out.println("/ 연산자 : " + ((double)num1 / num2));
        System.out.println("% 연산자 : " + (num1 % num2));
    }
}

Nan과 Infinity 연산

/또는 % 연산자를 사용 할 때는 주의 할 점이 있습니다.

좌측 피연산자가 정수 타입인 경우 나누는 수인 우측 연산자는 0을 사용할 수 없습니다.

5 / 0.0 → Infinity (무한대)

5 % 0.0 → NaN (Not a Number)

try {
    System.out.println(5 / 0);
} catch(ArithmeticException e) {
    System.out.println("0 으로 나누면 안됨");
}

연산자 우선순위와 결합 방향

대입 연산자

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

  • 값을 대입하는 연산자 (= 같다는 의미가 아니고 대입한다는 의미에 유의 해야 함)
  • 대입연산자와 다른 연산자를 결합하여 다양한 복합 대입 연산자를 제공 합니다.
  • 값의 대입은 항상 뒤에서 앞으로 대입 한다.
int num1 = 10;
System.out.println(num1 += 2);
System.out.println(num1 -= 2);
System.out.println(num1 *= 2);
System.out.println(num1 /= 2);

증감 연산자

증감 연산자는 피연산자를 1씩 증가 혹은 감소 시킬 때 사용하는 연산자 입니다.

단항연산자 입니다.

int num1 = 10;
System.out.println(num1++);

비교연산자

비교 연산자는 왼쪽의 피연산자와 오른쪽의 피연산자를 비교하여, 어느 쪽이 더 큰지, 작은지, 또는 서로 같은지를 판단합니다.

비교 연산자는 모두 두 개의 피연산자를 가지는 이항 연산자이며, 피연산자들의 결합 방향은 왼쪽에서 오른쪽입니다.

int x = 10;
int y = 20;
System.out.println(x > y);
System.out.println(x < y);
System.out.println(x == y);
System.out.println(x != y);
System.out.println(x >= y);
System.out.println(x <= y);

논리연산자

  • **&&** : AND 연산자 이며 A이고 B, 즉 A와 B가 모두 만족해야 참이된다.
  • || : OR 연산자이며 A이거나 B, 즉 A와 B중 한개만 만족하면 참이 된다.
  • ! : NOT연산자이며, 현재의 조건을 부정하므로 반대가 된다.
  • 논리연산자만 쓰이는 경우는 없으며, 비교 연산자와 함께 쓰인다.
int x = 10;
int y = 20;
boolean rst1;
boolean rst2;
boolean rst3;
rst1 = (x > 0) && (x < y);
rst2 = (x > 0) || (x > y);
rst3 = !((x > 0) || (x > y));
System.out.println(rst1);
System.out.println(rst2);
System.out.println(rst3);

삼항 연산자

3개의 피연산자를 필요로 하는 연산자 입니다.

프론트앤드 개발 시 조건문 보다 더 사용 빈도가 높습니다.

if ~ else 문 보다 간결 합니다.

Scanner sc = new Scanner(System.in); // 입력을 받기 위한 스캐너 객체 생성
  System.out.print("나이를 입력 하세요 : ");
  int age = sc.nextInt();
  boolean isAdult = (age > 19) ? true : false;
  System.out.println(isAdult);

문자열 결합 연산자

문자열 결합 연산자인 +는 문자열을 서로 결합하는 연산자 입니다. 피연산자 중 한쪽이 문자열이면 + 연산자는 문자열의 결합 연산자로 사용 됩니다.

System.out.println("Java" + 18.04 + 12);
System.out.println(3 + 3.3 + "JDK");

연습문제(1)

달력(양력)은 지구가 태양을 공전하는 시간을 기준으로 작성 된다.

양력에서의 1년은 지구가 태양을 1바퀴 도는데 걸리는 시간이며, 시간은 365일 과 1/4만큼 걸린다.

[윤년의 조건]

  • 연도가 4로 나누어 떨어 진다.
  • 100으로 나누어 떨어지면 연도는 윤년이 아니다.
  • 400으로 나누어 떨어지면 윤년이다.
public class Sample {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("년도를 입력 하세요 : ");
        int year = in.nextInt();
        if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
            System.out.println("윤년 입니다.");
        } else {
            System.out.println("윤년이 아닙니다.");
        }
    }
}

연습문제(2)

100의 자리 정수를 입력 받아서 3개의 변수에 나누어 대입 하기

Scanner in = new Scanner(System.in);
System.out.print("정수를 입력 하세요 : ");
int num = in.nextInt();
int a = num / 100;
int b = (num % 100) / 10;
int c = num % 10;
System.out.println("100의 자리 : " + a + ", 10의 자리 : " + b + ", 1의 자리 : " + c);

연산자 우선순위

	int val1 = 5;
	int val2 = 5;
	int val3 = 5;
	int result1, result2, result3;

	result1 = val1 + val2 * val3;
	result2 = (val1 + val2) * val3;
	result3 = val1 + (++val2) * val3; // val2에 증가 연산자를 표시하면 어떻게 될까?

비트 연산자

비트(bit)

바이트(Byte)

  • 비트 단위의 연산을 의미
  • 1 Byte는 8개의 bit 구성 (1bit는 전기적인 신호에 따라 표시할 수 있는 0과 1을 의미)
  • 하드웨어를 제어하거나 영상처리, 음성처리등에 활용 될 수 있다.
  • & (비트 AND) : 두개의 비트를 비교해 모두 1이면 1
  • |(비트 OR) : 두개의 비트 중 한개만 1이면 1
  • ^(XOR) : 두개의 비트의 값이 같으면 0, 다르면 1
  • ~(비트 NOT) : 0이면 1, 1이면 0으로 비트를 반전 시킨다.
  • << (왼쪽으로 이동) : 지정된 수만큼 비트를 왼쪽으로 이동
  • (오른쪽으로 이동) : 지정된 수만큼 비트를 오른쪽으로 이동

int num1 = 10;
int num2 = 12;
System.out.println(num1 & num2);
System.out.println(num1 | num2);
System.out.println(num1 ^ num2);
System.out.println(~num1);
System.out.println(num1 << 1);
System.out.println(num1 >> 1);
profile
풀스택 예비 개발자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN