연산자 종류 | 연산자 | 피연산자 수 | 산출값 | 기능 |
산술 | +, -, *, /, % | 이항 | 숫자 | 사칙연산 및 나머지 계산 |
부호 | +, - | 단항 | 숫자 | 음수와 양수의 부호 |
문자열 | + | 이항 | 문자열 | 두 문자열을 연결 |
대입 | =, +=, -=, *=, /=, %= | 이항 | 다양 | 우변의 값을 좌변의 변수에 대입 |
증감 | ++, -- | 단항 | 숫자 | 1만큼 증가 / 감소 |
비교 | ==, !=, >, <, >=, <=, instanceof | 이항 | boolean | 값의 비교 |
논리 | !, &, |, &&, || | 단항,이항 | boolean | 논리 부정, 논리곱, 논리합 |
조건 | (조건식) ? A : B | 삼항 | 다양 | 조건식에 따라 A 또는 B중 하나 선택 |
위 테이블은 자바에서 제공하는 연산자이다.
우선 피연산자 수 같은경우에는 단항은 항 한개, 이항은 항 2개, 삼항은 항 3개를 의미한다.
산출값의 경우 boolean은 true,나 false 값을 결과값으로 준다는 것이다.
예를들면 10 > 100 이란 연산을 하면 연산결과값은 false가 나올 것이다.
연산자들은 우선순위를 가지고 있다.
단항, 이항 ,삼항 연산자 순으로 우선순위를 가지고 연산하고, 산술, 비교, 논리 대입 연산자 순으로 우선순위를 가진다.
또한 단항, 부호, 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽으로 동작한다.
하지만 연산자들의 우선순위를 잘 몰라도 java 코딩하는데에는 아무런 문제가 되지 않는다. 우리에게는 () 가 있기 때문이다.
정말 간단히 초등학생이 풀법한 연산을 해보자
100 + 2 * 3 다음 연산의 결과는 어떻게 되는가? 100 + 6 = 106이 되는걸 누구라도 알 수 있다.
하지만 ()를 사용하면 (100 + 2) * 3 = 306이 된다. 혹은 곱셈이 연산 우선순위에 있는지 햇갈린다면
아예 코딩을 좀더 안전하게 100 + (2 * 3) = 106 이 된다. 그렇기에 가능하다면 우선순위를 알고 있는게 더 좋겠지만
꼭 알아야하는 것은 아니다.
산술 연산자
산술연산자는 + - * / % 5가지가 있지만, + - * 는 간단하니 넘어가도록 하겠다.
주의할건 나누기 연산자들이다.
1. 나눗셈 연산(/) : 나눗셈 연산은 그냥 우리가 알고있는 나눗셈을 해준다. 하지만 우리는 실수형 숫자보다 정수형 숫자를 더 자주 사용하게 될 것이다. 정수형 숫자에서는 나눗셈 연산을 하면 오로지 몫만 남게 된다. 이것은 어떠한 숫자가 있을 때 100의자리 숫자만 남긴다거나 할때 도움이 된다.
2. 나머지 연산(%) : 나머지 연산은 나눗셈 연산을 하고 난 뒤 남은 나머지 값만 가져오는 결과값을 출력한다.
int a = 123;
int a1, a2, a3;
a1 = a / 100;
a2 = (a / 10) % 10;
a3 = a % 10;
간단한 예시이다. 위의 예시는 a란 숫자에서 100의자리 수와 10의자리수와 1의 자리수를 각각 따로 가져오는 연산이다.
실행해보면 a1 = 1, a2 = 2, a3 = 3 이 들어가는 것을 확인 할 수 있다.
산술 연산자를 사용할 때 한가지 주의해야 할 점이 있다.
5. 변수의 타입 변환 파트에서 간단하게 설명하였지만, 변수들이 연산에 수행될 때는 자동 타입 변화가 일어난다.
우선 int형 이하의 타입이라면 연산시 모두 int 형으로 변형된다.
그리고 상위 타입의 연산자와 같이 연산하게 된다면 자동으로 상위타입으로 변환된 후 연산을 수행합니다.
ex) int * double -> double * double
부호 연산자
1. + : 양수를 나타내줍니다.
2. - : 음수를 나타내줍니다.
문자열 연산자
문자열 연산자는 + 하나로, 두 문자열을 연결해주는 역할을 한다.
피연산자중에 하나라도 문자열이 있다면 문자열 연산자로 작용하고, 그렇지 않다면 산술 연산자로 작용한다.
ex) "abc" + 3 => "abc3" , 1 + 2 + "ab" => 3 + "ab" => "3ab"
대입 연산자
오른쪽 피연산자의 결과값을 왼쪽 피연산자 변수에 저장해주는 연산자이다.
대입 연산자는 간단하게 예시로 보여주는 것이 더 이해가 편할 것 같다.
int a = 0;
a += 2; // a = a + 2 => a = 2
a += 3; // a = a + 3 => a = 5
a /= 5; // a = a / 5 => a = 1
a *= 10; // a = a * 10 => a = 10
위의 예시처럼 좌측 피연산자 값에 우측 피연산자와의 연산을 진행하고 저장하겠다는 의미앋.
비교 연산자
1. == : 우리가 흔히 수학에서 알고있는 등호(=)와 같다. 왼쪽과 오른쪽 값이 같다면 true를 주고,
왼쪽과 오른쪽 값이 다르다면 false를 준다.
2. != : 위의 ==연산자와 반대 역할이다. 왼쪽과 오른쪽 값이 같으면 false, 다르다면 true이다.
문자열의 경우에는 ==연산자와, != 연산자에서만 사용 가능하다.
3. >,< : 우리가 수학에서 알고 있는 등호이다. 초과, 미만을 나타내주고 맞다면 true 틀리다면 false를 준다.
ex) 3>5 -> false , -2<3 -> true
4. >=, <= : 이상과 이하를 나타낸다. 맞다면 true 틀리다면 false를 준다.
ex) 2<=2 -> true, 3<-3 -> false
증감 연산자
증감 연산자는 변수의 값을 1 증가시키거나 1 감소시키는 연산자이다.
하지만 주의해야할 것은 i++ 와 ++i에 미세한 차이점이 있다는 것이다.
다음 포스팅에서 좀 더 자세하게 다루겠다.
논리 연산자
1. 논리 부정 연산자 (!)
위 연산자는 true를 false로, false를 true로 변경해주기 때문에 boolean 타입에만 사용 가능하다.
ex) !true => false , !false => true
나머지 논리 연산자는 다음 포스팅에서 좀 더 자세하게 다루겠다.
삼항연산자
삼항연산자는 3개의 피연산자를 필요로 하는 연산자를 의미한다. 조건 연산식이라고도 부르고
A ? B : C 가 있다면 A의 조건이 맞다면 B의값을 틀리다면 C의값으로 출력하겠다 라는 의미이다.
int score = 10;
char grade = (score > 5) ? 'A' : 'B';
int score = 10;
char grade;
if(score > 5){
grade = 'A';
} else{
grade = 'B';
}
위의 두 코드가 완전하게 동일하게 작동된다.
'language > java' 카테고리의 다른 글
8. [java] 랜덤변수 생성하기 (Math.random,Random클래스) (0) | 2021.06.14 |
---|---|
7-2. [java] i++, ++i 의 차이, 논리 연산자(논리 게이트) (0) | 2021.06.11 |
6. [java] 변수의 입출력 (0) | 2021.06.10 |
5. [java] 변수의 타입 변환(Promotion & Casting) (0) | 2021.06.09 |
4. [java] 변수의 타입 (0) | 2021.06.09 |