자바의 연산자


p165 참조


1. 사칙연산자 (+ - * / %)


나머지(%)의 활용

10%2 = 0;     // 10을 2로 나눴을 때 나머지가 0 (짝수)

10%2 = 1;     // 10을 2로 나눴을 때 나머지가 1 (홀수)



사칙연산자의 형변환 (casting) p167 참조

1) 자동형변환

byte < short < int < long < float < double
1byte       2byte    4byte   8byte     4byte       8byte
(더 큰 자료형으로 변환)

short s = 10;
int i = 20;
i = s; (s=i;로 못씀. 자료형은 원래 자신보다 작은 자료형으로 들어갈 수 없음)


2) 강제형변환
(더 작은 자료형으로 강제 변환, 정보손실 가능성)

괄호 안에 데이터형을 넣어 표기하면 강제로 해당 데이터형으로 변함.

short s = 20;
int i = 10;
s = (short)i; (강제로 더 작은 자료형에 넣는 변환. s가 10이 됨)


2. 부호연산자 + -

양수와 음수의 부호



3. 문자열 연결 연산자 +

문자와 문자를 연결 "Hello" + "Java"의 결과값은 HelloJava



4. 단순대입 연산자 =

변수 = 식 (오른쪽 식의 결과를 변수에 대입한다)

int a = 2 + 1;

※좌우가 같다(==)와 구분할 것!!



5. 증가/감소 연산자 ++/--

변수값을 1만큼 증가/감소. 연산자를 변수의 어느쪽에 쓰느냐에 따라 결과값이 달라진다.


변수++    변수를 1씩 증가시킨다. 초기값은 최초값

++변수    변수를 1부터 증가시킨다. 초기값은 1 증가시킨 직후의 값

변수--    변수를 1씩 감소시킨다. 초기값은 최초값

--변수    변수를 1부터 감소시킨다. 초기값은 1 감소시킨 직후의 값









6. 수치비교 연산자 <> <= >=

두 수의 크기를 비교하는 수치비교 연산자


a < b    // a가 b보다 작으면 true, 아니면 false

a > b    // a가 b보다 크면 true, 아니면 false

a <= b   // a가 b보다 작거나 같으면 true, 아니면 false

a >= b   // a가 b보다 크거나 같으면 true, 아니면 false



7. 동등 연산자 == !=

두 데이터의 값이 같은지 다른지를 판단


a == b    // a와 b가 같으면 true, 다르면 false

a != b    // a와 b가 다르면 true, 같으면 false


※ 부동소수점수를 동등 연산자로 비교할 때에는 오차가 발생하므로 주의. 

   수치비교 연산자로 대신할 것. (p180 참조)



7. 논리연산자 & | ^ !

논리적 AND OR XOR NOT 연산. 자세한 것은 생략



8. 조건 AND/OR 연산자 && ||

최적화된 논리적 AND, OR 연산


a && b    // a와 b가 둘 다 true면 true, 아니면 false. 둘 다 true래야만 true가 된다.

a || b    // a와 b가 둘 다 false면 false, 아니면 true. 둘 중 하나만 true라도 true가 된다.


※ &&와 ||는 어느 한쪽을 왼쪽을 먼저 계산 후 답이 나오면 나머지는 풀지 않고 결과가 나오므로 &와 | 보다 효율이 좋지만 결과값이 달라질 수 있으므로 주의. (p184 참조)



9. 조건 연산자 ? :

조건에 따라 두 값 중 한 값을 택일


조건식 ? 식1 : 식2    (조건식이 true면 식1을 계산하고, 아니면 식2를 계산한다.)


max = a < b ? a : b;    (a<b이면 a값을 MAX에 넣고, 그렇지 않으면 b값을 MAX에 넣는다.)



10. 비트 연산자 & |^ ~

비트 단위의 AND, OR, XOR, NOT 연산 (p187 참조)


& AND : 둘 다 1일 때에만 1, 나머지는 모두 0

| OR :  둘 중 하나만 1이라도 1, 둘 다 0인 경우만 0이 됨.

^ XOR : 둘 중 하나만 1일 때에만 1, 둘 다 1이거나 둘 다 0이면 0

~ NOT : 1이면 0, 0이면 1



11. 쉬프트 연산자 << >> >>>

비트를 좌측/우측으로 밀어서 이동. 자세한 것은 생략




12. 복합 대입 연산자  += -= *= /= %= &= |= ^= <<\ >>\ >>>=

+ - * / % & | ^ << >> >>> 연산자와 = 연산자의 기능을 함께 수행. 줄여 표현할 때 편리.


num += 1;         // num = num + 1;을 복합연산자로 표현

num -= 1;         // num = num - 1;을 복합연산자로 표현




13. 캐스트 연산자

타입의 강제 변환. 


(타입) 피연산자

피연산자 자체의 타입을 바꾸는 것이 아니라 피연산자와 같은 값을 갖는 새로운 타입의 값을 만들어냄.


int a = (int) 12.9;    // double 타입인 12.9를 int 타입으로 변환. 소수점이 손상되어 12가 됨.


int num1 = 3;

double num2 = (double) num1;    // double 타입의 num2에 3을 대입하여 3.0이 됨.













'자바의 기초문법' 카테고리의 다른 글

반복문 for  (0) 2015.12.11
조건문 switch  (0) 2015.12.11
조건문 if, 점수 범위에 따라 학점을 출력하는 문제  (0) 2015.12.11
프리미티브 타입  (2) 2015.12.10
자바 시작하기  (0) 2015.12.09
Posted by netyhobby
,