################## 산술 연산자 ##################
+ - * / %
+ - * / 은 초등학교 때 배웠던 4칙연산
% 는 나머지 연산자로써 몫이 아닌 나머지를 리턴한다.(배수, 약수, 홀수/짝수, 최대공약수 등에서 활용!!)
/ 는 좌측 피연산자를 우측 피연산자로 나누었을 때의 몫이다.
이중 + 연산자는 수학 뿐 아니라 문자나 문자열에서도 사용이 가능하다.
산술연산자는 1+2 2x3 과 같이 두항 이상이 필요한 이항연산자임.
################## 산술연산자의 형변환 ##################
1. int a=10; int b=3; System.out.println(a/b);
이경우 a를 b로 나누므로 값은 3.3333... 이 출력되어야 한다.
하지만 변수 a와 b 둘다 정수인 int 타입을 가지므로, 실수부분은 정보누락이 발생해 화면에는 3이 출력된다.
2. int a=10; float b=3F; System.out.println(a/b);
이경우 마찬가지로 10을 3.0으로 나누므로 3.33333... 이 출력된다.
비록 변수 a가 정수값인 int 타입이지만, 변수 b의 타입이 실수를 표현가능한 float 이기 때문에 자동형변환이 일어나 3.3333... 이 제대로 출력된다.
################## 단항(증감)연산자 ##################
+ : 양수를 표현한다. 사실상 생략되기에 의미는 없다.
- : -3과 같이 음수를 표현한다.
++ : 증가 연산자로, 이 연산자가 붙어있으면 값에 1을 증가시킨다. (++2 = 3)
-- : 감소 연산자로, 이 연산자가 붙어있으면 값에 1을 감소시킨다. (--2 = 1)
1, 2, 3과 같이 항이 하나뿐인 대상을 상대로는 단항연산자가 사용된다.
변수 앞에 ++ 혹은 -- 가 붙으면 전위연산자 ex. (++i) : +1된 i의 값을 출력.(식 전체를 평가하기 전에 피연산자의 값을 증가시킴.)
변수 뒤에 ++ 혹은 -- 가 붙으면 후위연산자 ex. (i++) : 일단 i의 값을 출력하고 그뒤에 1을 증가시킨다.(식 전체를 평가한 후에 피연산자의 값을 증가시킴.)
################## 연산의 우선순위 ##################
복잡한 연산을 시행할때는 java가 우선순위를 지정하고 처리한다. 외우지 말고 필요할때 와서 찾자.
분명하지 않으면 혼란스러울 것이다. 아래는 자바에서 제공하는 연산자들 간의 우선순위를 정리한 표이다.
1 | [ ] | → |
() | ||
. | ||
2 | ++ | ← |
-- | ||
+(양수) -(음수) | ||
~ | ||
! | ||
(type) | ||
new | ||
3 | * / % | → |
4 | +(더하기) -(빼기) | → |
+(문자 결합 연산자) | ||
5 | << | → |
>> | ||
>>> | ||
6 | < <= | → |
> >= | ||
instanceof | ||
7 | == | → |
!= | ||
8 | & | → |
& | ||
9 | ^ | → |
^ | ||
10 | | | → |
| | ||
11 | && | → |
12 | || | → |
13 | ? : | ← |
14 | = | ← |
*= /= += -= %= <<= >>= >>>= &= ^= |= |
################## 비교연산자 ##################
> < >= <= == !=
두 기본형 데이터 타입을 비교하여 조건에 맞으면 참, 틀리면 거짓이 나옴.
조건문을 보조하는 역할
비교와 Boolean
Boolean이란?
데이터타입의 일종으로, 출력되는 값이 'true' 'false' 두가지 뿐인것이 특징
= : 예로 a=1 이면 a에 1을 대입하는 연산자이다.
== : 비교연산자로 좌항과 우항의 값이 같으면 true, 다르면 false를 출력한다.
!= : 부정을 의미한다. 위와 정반대의 경우.
>, >= : 수학에서의 부등호와 완전히 같다.
.equals : 숫자가 아닌 문자열(string)을 비교할때 사용한다. == 과 같은 역할을 하나 문자열에 사용한다. 기본형 데이터에 대해서만 비교! ★★★String class는 equals() 메소드로 비교한다!★★★
################## 논리연산자 ##################
&& || !
조건문을 보조하는 역할
&&(AND 연산자) --> 2개다 참이면 참, 1개라도 거짓이면 거짓
||(OR 연산자) --> 1개라도 참이면 참, 2개다 거짓이면 거짓
!(부정(NOT) 연산자) --> 참은 거짓, 거짓은 참으로(Boolean의 값을 역전시키는 역할)
################## 비트연산자 ##################
정수형에 대해서만 사용가능
정수를 비트(이진법)로 바꾼 후 비교하거나 조작한다.
& 연산자(AND) : 비교하는 두 값의 비트 자릿수가 1일 때만 1, 그 외엔 0
| 연산자(OR) : 하나라도 1이면 1
^ 연산자(XOR) : 비교하는 두 값의 비트 자릿수가 다를 때만 1을 반환
~ 연산자 : 비트값 반전
* 시프트 연산자(<<, >>)
<<연산자 : 비트값을 왼쪽으로 이동시킴. ex) 6<<2 -> 0110(4비트)<<2 -> 1000
>>연산자 : 비트값을 오른쪽을 이동시킴. 앞에 부호를 따라감 ex) 0110>>2 -> 0001 / 1110>>2 -> 1011
>>>연산자 : 비트값을 오른쪽을 보내고 빈 자리는 0으로