JAVA 연산자 총정리: 개념부터 예제까지!

2024. 10. 10. 10:49·🗄️ Backend/Java

자바에서 연산자는 변수의 값을 조작하거나 연산을 수행할 때 사용됩니다. 연산자의 종류는 다양하며, 피연산자(operand)의 개수에 따라 단항 연산자, 이항 연산자, 삼항 연산자로 나눌 수 있습니다. 또한 각 연산자는 특정 데이터 타입에 맞추어 동작하며, 범위를 벗어나는 연산에서는 오버플로(overflow)나 언더플로(underflow) 현상이 발생할 수 있습니다. 이번 포스팅에서는 자바의 다양한 연산자와 그 사용법을 알아보겠습니다.

1. 단항 연산자 (Unary Operator)

단항 연산자는 하나의 피연산자를 가지고 동작하는 연산자입니다. 대표적으로 증감 연산자(++/--), 부호 연산자(+,-), 논리 반전 연산자(!), 비트 반전 연산자(~) 등이 있습니다.

1.1 증감 연산자 (++, --)

변수의 값을 1 증가시키거나 감소시키는 연산자입니다. 위치에 따라 후위 연산자와 전위 연산자로 구분됩니다.

  • 전위 연산자: 먼저 값이 증가/감소한 후 연산에 사용됩니다.
  • 후위 연산자: 먼저 연산에 사용된 후 값이 증가/감소합니다.
int x = 5;
int y = ++x;  // 전위 연산: x는 6, y는 6
int z = x--;  // 후위 연산: z는 6, 이후 x는 5

1.2 부호 연산자 (+, -)

숫자 앞에 붙어 그 수의 부호를 변경하거나 유지합니다.

int a = 3;
int b = -a;  // b는 -3

1.3 논리 반전 연산자 (!)

논리 값을 반전시킵니다. true는 false로, false는 true로 변경됩니다.

boolean isTrue = false;
System.out.println(!isTrue);  // true 출력

1.4 비트 반전 연산자 (~)

비트의 값을 반전시킵니다. 0은 1로, 1은 0으로 변경됩니다.

byte b = 10;  // 0000 1010
System.out.println(~b);  // 결과: -11

2. 이항 연산자 (Binary Operator)

이항 연산자는 두 개의 피연산자를 가지며, 산술 연산, 비교 연산, 논리 연산 등에 사용됩니다.

2.1 산술 연산자 (+, -, *, /, %)

기본적인 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 수행합니다.

int result = 7 % 3;  // 결과: 1

2.2 비교 연산자 (==, !=, >, <, >=, <=)

두 값을 비교하여 true 또는 false를 반환합니다.

int a = 5;
int b = 3;
System.out.println(a == b);  // false 출력
System.out.println(a >= b);  // true 출력

2.3 논리 연산자 (&&, ||, &, |)

논리 연산자는 두 논리식을 연산하여 true 또는 false를 반환합니다.

  • &&와 ||는 Short Circuit 연산자입니다. 왼쪽 항의 결과에 따라 오른쪽 항이 실행되지 않을 수 있습니다.
boolean result = (a == 5) && (++b == 4);  // b는 증가하지 않음, 결과: true

3. 비트 연산자 (Bitwise Operator)

비트 연산자는 두 값을 비트 단위로 연산합니다.

3.1 AND 연산자 (&)

두 비트가 모두 1일 때만 1을 반환합니다.

int a = 5;  // 0000 0101
int b = 3;  // 0000 0011
System.out.println(a & b);  // 0000 0001, 결과: 1

3.2 OR 연산자 (|)

두 비트 중 하나만 1이어도 1을 반환합니다.

System.out.println(a | b);  // 0000 0111, 결과: 7

3.3 XOR 연산자 (^)

두 비트가 서로 다를 때만 1을 반환합니다.

System.out.println(a ^ b);  // 0000 0110, 결과: 6

3.4 비트 이동 연산자 (>>, <<)

비트를 왼쪽 또는 오른쪽으로 이동시킵니다.

int num = 192;
System.out.println(num >> 2);  // 오른쪽으로 2칸 이동, 결과: 48
System.out.println(num << 2);  // 왼쪽으로 2칸 이동, 결과: 768

4. 삼항 연산자 (Ternary Operator)

삼항 연산자는 조건식, 참일 때의 연산식, 거짓일 때의 연산식 세 개의 피연산자를 가집니다.

int x = 5;
String result = (x % 2 == 0) ? "짝수" : "홀수";
System.out.println(result);  // 홀수 출력

5. 대입 연산자 (Assignment Operator)

대입 연산자는 변수에 값을 대입하는 데 사용됩니다. =, +=, -=, *=, /= 등의 형태가 있습니다.

int a = 5;
a += 3;  // a = a + 3, 결과: 8

6. 표준 입/출력 (IO: Input/Output)

자바에서는 Scanner 클래스를 사용하여 입력을 받을 수 있습니다. 출력은 System.out.println()을 이용합니다.

6.1 Scanner 사용법

  • next(): 공백 전까지 문자열을 입력받음
  • nextLine(): 공백 포함 전체 문자열 입력받음
  • nextInt(): 정수 입력받음
  • nextDouble(): 실수 입력받음
import java.util.Scanner;

public class InputExample {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("이름을 입력하세요: ");
        String name = scan.next();

        System.out.print("나이를 입력하세요: ");
        int age = scan.nextInt();

        System.out.println("이름: " + name + ", 나이: " + age);
        scan.close();
    }
}

연습 문제

문제 1: 3항 연산자를 이용한 절대값 구하기

0에서 10까지의 정수를 랜덤으로 생성하고, 5를 빼서 범위를 -5에서 5로 만든 후 절대값을 출력하세요.

int x = (int)(Math.random() * 11) - 5;
int absValue = (x < 0) ? -x : x;
System.out.println("절대값: " + absValue);

문제 2: 나이 판별 프로그램

Scanner를 이용해 사용자의 나이를 입력받고, 20세 이상이면 "성인", 그렇지 않으면 "미성년자"라고 출력하는 프로그램을 작성하세요.

import java.util.Scanner;

public class AgeCheck {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("나이를 입력하세요: ");
        int age = scan.nextInt();

        System.out.println(age >= 20 ? "성인입니다." : "미성년자입니다.");
        scan.close();
    }
}

'🗄️ Backend > Java' 카테고리의 다른 글

JAVA 예외 처리(Exception Handling)와 가비지 컬렉션 (Garbage Collection)  (1) 2024.10.10
JAVA 패키지와 객체지향 개념 정리  (0) 2024.10.10
JAVA 메서드와 객체지향 프로그래밍  (0) 2024.10.10
JAVA 배열과 제어문(반복문) 정리  (0) 2024.10.10
JAVA 변수와 데이터 타입: 개념부터 실습까지  (0) 2024.10.10
'🗄️ Backend/Java' 카테고리의 다른 글
  • JAVA 패키지와 객체지향 개념 정리
  • JAVA 메서드와 객체지향 프로그래밍
  • JAVA 배열과 제어문(반복문) 정리
  • JAVA 변수와 데이터 타입: 개념부터 실습까지
hjwjo
hjwjo
백엔드 및 풀스택 개발에 관심 있는 초보 개발자의 개발 블로그입니다.
  • hjwjo
    Jeongwoo's Devlog
    hjwjo
  • 전체
    오늘
    어제
    • Devlog
      • 🗄️ Backend
        • Java
        • Spring
        • JPA
        • SQL
        • JSP
        • AWS
        • GCP
        • Linux
        • GitHub
        • ML
        • Security
      • 🖥️ Frontend
        • React
        • CSS
      • 🏅 Project
        • Hackathon
        • Team Project
      • 📊 Algorithm
        • BOJ
      • 📜 Certs
        • ADsP
        • SQLD
        • 정보처리기사
      • 📖
        • JavaScript
      • 일상
        • 면접후기
  • 블로그 메뉴

    • 홈
    • Devlog
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    백준
    스프링부트
    SQL
    AWS
    ADsP
    java기초
    java
    jsp
    정보처리기사
    백엔드
    스프링
    Spring
    GCP
    정처기
    http
    자바
    쿼리
    springboot
    데이터베이스
    DML
  • 최근 댓글

  • 최근 글

hjwjo
JAVA 연산자 총정리: 개념부터 예제까지!
상단으로

티스토리툴바