일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Gradle
- 웹 프로그래밍
- 애플페이
- 자바 연산자
- 단항 연산자
- 자바 프로젝트
- 조건문
- 자바 람다식
- 동적 자원
- 연산자
- 람다
- 변수
- Java
- 정적 자원
- 멀티 태스킹
- Github
- 자바 이항 연산자
- if문
- 웹
- 스프링부트
- 타입변환
- 람다식
- 빌드 도구
- 그래들
- 연산식
- 그래이들
- 삼항 연산자
- 국비 프로젝트
- 자바
- 깃허브
- Today
- Total
인디언식 기우제
자바 - 이항 연산자 본문
이항 연산자
이항 연산자는 피연산자가 두 개인 연산자를 말하며 산술연산자, 문자열 연결 연산자, 대입 연산자, 비교 연산자, 논리 연산자, 비트 논리 연산자, 비트 이동 연산자 등이 있다.
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 |