본문 바로가기
Java

[Java] 연산자의 종류 - 이항 연산자 & 삼항 연산자

by lmyourpearl 2025. 11. 2.

이항 연산자

이항 연산자는 피연산자가 2개인 연산자를 말하며, 여기에는 산술 연산자( +, -, *, /, %), 문자열 결합 연산자(+), 비교 연산자( <, >, >=, <=, ==, !=), 논리 연산자( &&, ||, &, |, ^, !), 대입 연산자( =, +=, -=, *=, /=, %=) 등이 있다.


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

산술 연산자는 사칙연산자인 덧셈, 뺄셈, 곱셈, 나눗셈과 나머지를 구하는 %까지 총 5개이며, 산술 연산자는 boolean타입을 제외한 모든 기본 타입에 사용할 수 있음.

연산식  설명
피연산자 + 피연산자 덧셈 연산
피연산자 - 피연산자 뺄셈 연산
피연산자 * 피연산자 곱셈 연산
피연산자 / 피연산자 왼쪽 피연산자를 오른쪽 피연산자로 나눗셈 연산
피연산자 % 피연산자 왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 구하는 연산

* 산술 연산자의 특징은 피연산자들의 타입이 동일하지 않을 경우 규칙을 사용해 피연산지들의 타입을 일치시킨 후 연산을 수행.

1. 피연산자들이 byte, short, char 타입일 경우, 모두 int 타입으로 변환된 후에 연산을 수행.

   ex) byte + byte -> int + int = int

2. 피연산자들이 모두 정수 타입이고 long 타입이 포함되어 있을 경우, 모두 long 타입으로 변환된 후 연산을 수행.

   ex) int + long -> long + long = long

3. 피연산자 중 실수 타입(float, double)이 있을 경우, 허용 범위가 큰 실수 타입으로 변환된 후 연산을 수행.

   ex) int + double -> double + double = double

// 산술 연산자

package sec02.exam04;

public class ArithmeticOperatorExample {
	public static void main(String[] args) {
    	int v1 = 5;
        int v2 = 2;
        
        int result1 = v1 + v2;
        System.out.println("result1=" + result1);
        
        int result2 = v1 - v2;
        System.out.println("result2=" + result2);
        
        int result3 = v1 * v2;
        System.out.println("result3=" + result3);
        
        int result4 = v1 / v2;
        System.out.println("result4=" + result4);
        
        int result5 = v1 % v2;
        System.out.println("result5=" + result5);
        
        double result = (double) v1 / v2;
        System.out.println("result6=" + result6);
        }
      }
      
      // 실행 결과
      // result1 = 7
      // result2 = 3
      // result3 = 10
      // result4 = 2
      // result5 = 1
      // result6 = 2.5


char 타입도 정수 타입이므로 산술 연산식이 가능하지만, 주의할 점은 int 타입으로 변환되므로 연산 결과는 int 타입이 된다는 것.

// char 타입의 산술 연산

package sec02.exam05;

public class CharOperationExample { 
	public static void main(String[] args) {
    	char c1 = 'A' + 1;		//char c1 = 66이 됨, 'A'는 유니코드 65라서
        char c2 = 'A';
        
        // char c3 = c2 + 1; // char변수가 산수 연산에 사용되면 int타입으로 변환되므로 연산 결과는 int 타입이 됨.
        
        System.out.println("c1: " + c1);
        System.out.println("c2: " + c2);
      //System.out.println("c3: " + c3);
        }
      }
      
// 실행 결과
// c1: B
// c2: A

 


문자 결합 연산자 (+)

문자열을 서로 결합하는 연산자로, + 연산자는 산술 연산자, 부호 연산자인 동시에 문자열 결합 연산자이기도 함.

피연산자 중 한쪽이 문자열이면 + 연산자는 문자열 결합 연산자로 사용되어 다른 피연산자를 문자열로 변환하고 서로 결합.

문자열과 숫자가 혼합된 + 연산식은 왼쪽에서부터 오른쪽으로 연산이 진행.

// 문자열 결합 연산자

package sec02.exam06;

public class StringConcatExample {
	public static void main(String[]args) {
    	String str1 = "JDK" = 6.0
        String str2 = str1 + "특징";
        System.out.println(str2);
        
        String str3 = "JDK" + 3 + 3.0;
        String str4 = 3 + 3.0 + "JDK";
        System.out.println(str3);
        System.out.println(str4);
        }
      }
      
// 실행 결과
// str2: JDK6.0 특징
// str3: JDK33.0
// str4: 6.0JDK

 


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

대소(<, <=, >, >=) 또는 동등( ==, !=)을 비교해서 true/false를 산출하며, 대소 연산자는 boolean을 제외한 기본 타입에 사용할 수 있고, 동등 연산자는 모든 타입에 사용할 수 있으며, 비교 연산자는 흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용되어 실행 흐름을 제어할 때 사용.

구분 연산식 설명
동등
비교
피연산자1 == 피연산자2 두 피연산자의 값이 같은지를 검사
피연산자1 != 피연산자2 두 피연산자의 값이 다른지를 검사
크기
비교
피연산자1 > 피연산자2 피연산자1이 큰지를 검사
피연산자1 >= 피연산자2 피연산자1이 크거나 같은지를 검사
피연산자1 < 피연산자2 피연산자1이 작은지를 검사
피연산자1 <= 피연산자2 피연산자1이 작거나 같은지를 검사

 

// 비교 연산자

package sec02.exam07;

public class CompareOperatorExample1 {
	public static void main(String[]args) {
    int num1 = 10;
    int num2 = 10;
    boolean result1 = (num1 == num2);
    boolean result2 = (num1 != num2);
    boolean result3 = (num1 <= num2);
    System.out.println("result1=" + result1);
    System.out.println("result2=" + result2);
    System.out.println("result3=" + result3);
    
    char char1 = 'A';
    char char2 = 'B';
    boolean result4 = (char1 < char2);
    System.out.println("result4=" + result4);
    }
  }

// 실행 결과
// result1 = true
// result2 = false
// result3 = true
// result4 = true

 

** String 문자열을 비교할 때에는 대소 비교 연산자(<, <=, >, >=)를 사용할 수 없고, 동등 비교 연산자(==, !=)는 사용할 수 있으나 문자열이 같은지, 다른지를 비교하는 용도로는 사용되지 않음.

기본 타입(byte, char, short, int, long gloat, double, boolean) 변수의 값을 비교할 때에는 == 연산자를 사용하지만 참조 타입인 String 변수를 비교할 때에는 equals( ) 메소드를 사용함.

 


논리 연산자( &&, ||, &, |, ^, !)

논리 연산자는 논리곱(&&), 논리합( || ), 배타적 논리함(^), 논리 부정(!) 연산을 수행하며, 논리 연산자의 피연산자는 boolean타입만 사용 가능.

논리 연산은 흐름 제어문인 조건문(if), 반복문(for, while) 등에서 주로 이용되며, if문의 조건식이 true라면 블록을 실행하고 false라면 블록을 실행하지 않음.

구분 연산식 결과 설명
AND
(논리곱)
true &&
또는
&
true true 피연산자 모두가 true일 경우에만
연산 결과가 true
true false false
false true false
false false false
OR
(논리합)
true | |
또는
|
true true 피연산자 중 하나만 true이면
연산 결과는 true
true false true
false true true
false false false
XOR
(배타적 논리합)
true ^ true false 피연산자가 하나는 true이고
다른 하나가 false일 경우에만
연산 결과가 true
true false true
false true true
false false false
NOT
(논리 부정)
  ! true false 피연산자의 논리값을 바꿈
false true

 

// 논리 연산자

package sec02.exam09;

public class LogicalOperatorExample {
	public static void main(String[]args) {
    int charCode = 'A';
    
    if ( (charCode>=65) & (charCode<=90) ) {
    System.out.println("대문자");
   	}
    
    if ( (charCode>=97) && (charCode<=122) ) {
    System.out.println("소문자");
   	}
    
    if ( !(charCode<48) && !(charCode>57) ) {
    System.out.println("0~9 숫자");
   	}
    
    int value = 6;
    
    if ( (value%2==0) | (value%3==0) ) {
    System.out.println("2 또는 3의 배수");
   	}
    
    if ( (value%2==0) || (value%3==0) ) {
    System.out.println("2 또는 3의 배수");
   	}
  }
}

// 실행 결과
// 대문자
// 2 또는 3의 배수
// 2 또는 3의 배수

 


대입 연산자( =, +=, -=, *=, /=, %=) 

대입 연산자는 오른쪽 피연산자의 값을 왼쪽 피연산자인 변수에 저장.

오른쪽 피연산자에는 리터럴 및 변수, 다른 연산식이 올 수 있는데, 단순히 오른쪽 피연산자의 값을 변수에 저장하는 단순 대입 연산자가 있고, 정해진 연산을 수행한 후 결과를 변수에 저장하는 복합 대입 연산자도 있음.

구분 연산식 설명
단순 대입 연산자 변수 = 피연산자 오른쪽의 피연산자의 값을 왼쪽 변수에 저장
복합 대입 연산자 변수 += 피연산자 변수 = 변수 + 피연산자와 동일
변수 -= 피연산자 변수 = 변수 - 피연산자와 동일
변수 *= 피연산자 변수 = 변수 * 피연산자와 동일
변수 /= 피연산자 변수 = 변수 / 피연산자와 동일
변수 %= 피연산자 변수 = 변수 % 피연산자와 동일
변수 &= 피연산자 변수 = 변수 & 피연산자와 동일
변수 |= 피연산자 변수 = 변수 | 피연산자와 동일
변수 ^= 피연산자 변수 = 변수 ^ 피연산자와 동일

대입 연산자는 모든 연산자들 중에서 가장 낮은 연산 순위를 가지고 있기 때문에 제일 마지막에 수행, 연산의 진행 방향이 오른쪽에서 왼쪽

// 대입 연산자

package sec02.exam10;

public class AssigmentOperatorExample {
	public static void main(String[]args) {
    int result = 0;
    result += 10;
    System.out.println("result=" + result);
    
    result -= 5;
    System.out.println("result=" + result);
    
    result *= 3;
    System.out.println("result=" + result);
    
    result /= 5;
    System.out.println("result=" + result);
    
    result %= 3;
    System.out.println("result=" + result);
  }
}

// 실행 결과
// result = 10
// result = 5
// result = 15
// result = 3
// result = 0

 


삼항 연산자

삼항 연산자(?:)는 3개의 피연산자를 필요로 하는 연산자를 말하며, 삼항 연산자는 ? 앞의 조건식에 따라 콜론(:) 앞뒤의 피연산자가 선택된다고 해서 조건 연산식이라고 부르기도 한다.

   조건식                                                값 또는 연산식                                         값 또는 연산식
  ?                                                                :
(피연산자1)                                             (피연산자2)                                             (피연산자3)

조건식을 연산하여 true가 나오면 삼항 연산자의 결과는 피연산자2가 되는 반면에 조건식을 연산하여 false가 나오면 삼한 연산자의 결과는 피연산자3이 되며 피연산자2와 피연산자3에는 주로 값이 오지만, 경우에 따라서는 연산식이 올 수도 있음.

// 삼항 연산자

package sec02.exam11;

public class ConditionalOperationExample {
	public static void main(String[]args) {
    int score = 85;
    char grade = (score > 90) ? 'A' : ( (score > 80) ? 'B' : 'C');
    System.out.printlnO(score + "점은 " + grade + "등급입니다.");
   }
 }
 
// 실행 결과
// 85점은 B등급입니다.

'Java' 카테고리의 다른 글

[Java] 반복문: for문, while문, do-while문  (0) 2025.11.03
[Java] 조건문: if문, switch문  (0) 2025.11.02
[Java] 연산자의 종류 - 단항 연산자  (0) 2025.11.02
[Java] 연산자  (3) 2025.11.02
[Java] 변수와 시스템 입출력  (0) 2025.10.29