인디언식 기우제

자바 - 이항 연산자 본문

Java/연산자

자바 - 이항 연산자

밍주키니어 2022. 11. 14. 21:06
이항 연산자

이항 연산자는 피연산자가 두 개인 연산자를 말하며 산술연산자, 문자열 연결 연산자, 대입 연산자, 비교 연산자, 논리 연산자, 비트 논리 연산자, 비트 이동 연산자 등이 있다.

 

 

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

우리가 일반적으로 말하는 사칙연산을 하는 산술 연산자이다. boolean 타입을 제외한 모든 기본 타입에 사용할 수 있다.

연산식 설명
피연산자 + 피연산자 덧셈 연산
피연산자 - 피연산자 뺄셈 연산
피연산자 * 피연산자 곱셈 연산
피연산자 / 피연산자 좌측 피연산자를 우측 피연산자로 나눗셈 연산
피연산자 % 피연산자 좌측 피연산자를 우측 피연산자로 나눈 나머지를 구하는 연산

산술 연산자는 피연산자들의 타입이 동일하지 않을 경우 다음과 같은 규칙을 사용해서 피연산자들의 타입을

일치시킨 후 연산을 수행한다.

 

1. 피연산자들이 모두 정수타입이고, int 타입(4byte)보다 크기가 작은 타입일 경우 모두 int 타입으로 변환 후, 연산을 수행한다. 따라서 연산의 산출 타입은 int이다.
예) byte + byte → int + int = int

2. 피연산들이 모두 정수 타입이고 long 타입이 있을 경우 모두 long 타입으로 변환 후에 연산을 수행한다. 따라서 연산의 산출 타입은 long이다.
예) int + long → long + long = long

3.피연산자중 실수 타입(float 타입, double 타입)이 있을 경우, 크기가 큰 실수 타입으로 변환후에 연산을 수행한다. 따라서 연산의 산출 타입은 실수 타입이다.
에) int + double → double + double = double

 

2. 문자열 연결 연산자 (+)

문자열 연결 연산자 + 는 산술 연산자의 기능이 아닌 문자열을 서로 결합해주는 연산자이다.

문자열과 문자열, 혹은 문자열과 다른 타입을 결합 할 때에는 + 연산자를 사용한다.

이 때 문자열과 다른 타입을 결합 할 때에는 다른 피 연산자를 문자열로 변환하고 서로 결합한다.

String str1 = "JDK" + 6.0;  //JDK6.0
String str2 = str1 + " 특징";  //JDK6.0 특징

 

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

비교 연산자는 대소, 또는 동등을 비교해서 boolean 타입인 true.false를 산출한다.

대소연산자는 boolean 타입을 제외한 기본 타입에 사용할 수 있고, 동등 연산자는 모든 타입에 사용될 수 있다.

비교 연산자는 흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용된다.

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

String 타입의 문자열을 비교할 때에는 동등(==, !=) 비교 연산자는 사용할 수 있으나 문자열이 같은지, 다른지를

비교하는 용도가 아닌 객체의 번지값을 비교한다.

String str1 = "신용권";
String str2 = "신용권";
String str3 = new String("신용권");

str1 == str2   →   true
str2 == str3   →   false

str1, str2는 동일한 객체의 번지값을 가지고 있지만, str3는 객체 생서 연산자인 new로 생성한 새로운 String 객체의

번지값을 가지고 있어서 이러한 결과가 나온다.

만약 동일한 객체이건 다른 객체이건 문자열의 내용만 같은지를 비교하고 싶다면 ==연산자 대신에 equals() 메소드를

사용해야 한다.

boolean result1 = str1.equals(str2);    →    true
boolean result2 = str2.equals(str3);    →    true

 

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

논리 연산자는 논리곱(&&), 논리합(||), 배타적 논리합(^) 그리고 논리 부정(!) 연산을 수행한다.

논리연산자의 피연산자는 boolean 타입만 사용할 수 있다.

구분 연산식 결과 설명
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

 

3. 비트 연산자(&, |, ^, ~, <<, >>, >>>)

비트(bit) 단위로 연산 하므로 0과 1이 피연산자이다. 0 1로 표현이 가능한 정수 타입만 비트 연산이 가능하다.

실수 타입인 float double은 비트 연산이 불가능하다.

 

3-1. 비트 논리 연산자(&, |, ^)

  • 피연산자가 boolean 타입일 경우 일반 논리 연산자.
  • 피연산자가 정수 타입일 경우 비트 논리 연산자로 사용.
  • 비트연산자는 피연산자를 int 타입으로 자동 타입 변환 후 연산 수행

3-2. 비트 이동 연산자(<<, >>, >>>)

정수 데이터의 비트를 좌측 또는 우측으로 밀어 이동시키는 연산 수행

 

4. 대입 연산자(=,  +=,  -=,  *=,  /=,  %=, &=, ^=, |=, <<=, >>=, >>>=)

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

모든 연산자들 중 가장 낮은 연산 순위이다.

 

 

 

 

 

 

부족한 점, 잘못된 점이 있다면 지적 부탁드립니다. 피드백은 언제나 환영입니다.

'Java > 연산자' 카테고리의 다른 글

자바 - 삼항 연산자  (0) 2022.11.14
자바 - 단항 연산자  (0) 2022.11.12
자바 - 연산자의 우선순위  (0) 2022.11.05
자바 - 연산자 Operator  (0) 2022.11.05