6-6 증감연산자
++ |
1만큼 증가 |
예1) ++x -> 전이연산자 (x = x+1; 와 같음) x = 10; System.out.println("++x : " + (++x)); =>++x : 11 *연산하고 나서 출력이 된다.
예2) x++ -> 후이연산자 x = 10; System.out.println("x++ : " + (x++)); => x++ : 10 System.out.println("x : " + (x)); => x : 10 *x 값 그대로 출력을 먼저하고 더하게 된다. 메모리상태에만 11이 담겨 있다. 위에 명령어 영향으로 인해 밑에서의 x는 11로 출력이 된다. |
|
-- |
1만큼 감소 |
예1) --x -> 전이연산자 (x = x-1; 와 같음) x = 10; System.out.println("--x : " + (--x)); =>--x : 9 *연산하고 나서 출력이 된다.
예2) x-- -> 후이연산자 x = 10; System.out.println("x-- : " + (x--)); => x-- : 10 System.out.println("x : " + (x)); => x : 9 *x 값 그대로 출력을 먼저하고 더하게 된다. 메모리상태에만 9가 담겨 있다. 위에 명령어 영향으로 인해 밑에서의 x는 9로 출력이 된다.
|
6-7 논리연산자
-피연산자의 논리곱(AND), 논리합(OR), 논리부정(NOT)을 수행함
&&논리곱(AND) |
a && b : a와 b가 모두 참이면 참 *&& : AND연산자 |
bootlean b1 = false; bootlean b2 = true; System.out.println("b1 && b2 : " + (b1 && b2)); *모두 참이어야 참 |
|
||논리합(OR) |
a || b : a와 b중 하나라도 참이면 참 *|| : OR연산자 |
bootlean b1 = false; bootlean b2 = true; System.out.println("b1 || b2 : " + (b1 || b2)); => b1||b2 : true *둘중에 하나라도 참이면 참 |
|
!논리부정(NOT) |
!a : a의 상태를 부정 * ! : NOT연산자 |
bootlean b1 = false; bootlean b2 = true; System.out.println("!b1 : " + !b1)); => !b1 : true System.out.println("!b2 : " + !b2)); => !b1 : false *참이면 거짓으로 거짓이면 참으로 |
실습
6-8 조건(삼항)연산자
-삼항 연산자로 두 개의 피연산자 연산 결과에 따라서 나머지 피연산자가 결정된다.
조건식? 식1 : 식2 |
조건식이 참이면 식1이 실행 조건식이 거짓이면 식2가 실행 |
예) x = 10; y=20; int result = 0; result = (x > y) ? 100 : 200; //(x>y) -> 조건식, 100 -> 식1, 200 -> 식2 System.out.println("result : " + result); => result : 200
result = (x < y) ? 100 : 200; System.out.println("result : " + result); //(x<y) -> 조건식, 100 -> 식1, 200 -> 식2 => result : 100
result = (x == y) ? 100 : 200; System.out.println("result : " + result); //(x==y) -> 조건식, 100 -> 식1, 200 -> 식2 => result : 200
|
6-9 비트 연산자
-c계열에서는 많이 쓰이지만 자바에서는 메모리를 직접관리하지 않기 때문에
비트연산자는 많이 쓰이지 않는다.
-데이터를 비트(bit)단위로 환산하여 연산을 수행하며, 다른 연산자보다 연산 속도가 향상 된다.
(우리가 느낄 수 없을 정도의 빠르기로 속도가 향상된다.)
&: AND 연산 |
a & b : a와 b가 모두 1이면 1 |
| : OR연산 |
a|b : a와 b중 하나라도 1이면 1 |
^: XOR연산 |
a^b : a와 b가 같지 않으면 1 |
연산원리
x = 2; //10진수를 2진수 비트단위로 환산시 00000010
y = 3; //10진수를 2진수 비트단위로 환산시 00000011
x=2 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
y=3 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
*환산한 숫자에서 x와 y를 나열하여 아래위로 1과 0인지를 확인하여
연산(위에내용)을 하기처럼 한다.
& |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
| |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
^ |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
예)
System.out.println("x & y : " + (x & y));
=> 00000010 => x & y : 2
System.out.println("x ^ y : " + (x | y));
=> 00000011 => x ^ y : 3
System.out.println("x ^ y : " + (x ^ y));
=> 00000001 => x ^ y : 1
'신입개발자로 취업하기까지 > JAVA' 카테고리의 다른 글
20200309 8강 배열과 메모리 (0) | 2020.06.14 |
---|---|
20200306 7강 배열 (0) | 2020.06.14 |
20200305 6강 연산자 (0) | 2020.06.14 |
20200304 5강 특수문자와 서식 문자 (0) | 2020.06.14 |
20200304 4-3강 형 변환 (0) | 2020.06.14 |