No. 01 |
|
| |
논리 연산자 && || ! |
논리 연산자는 피연산자로 boolean형 또는 boolean형 값을 결과로 하는 조건식만을 허용한다.
논리 연산자 '&&'은 '그리고(AND)'에 해당하며, '||'은 '또는(OR)'에 해당한다.
논리 연산자의 연산 결과1
x |
y |
x || y |
x && y |
true |
true |
true |
true |
true |
false |
true |
false |
false |
true |
true |
false |
false |
false |
false |
false |
논리 연산자의 연산 결과2
x |
!x |
true |
false |
false |
true |
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 31 32 | import java.util.Scanner; public class Operator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //1] 10 < x < 20에 있는지 판단 System.out.println("1] 10과 20사이에 있는지 판단할 숫자 x를 입력하세요."); String strX = scanner.nextLine(); int x = Integer.parseInt(strX); System.out.printf("x=%d, x > 10 && x < 20 인가? %b%n",x, x>10 && x<20); System.out.println(); //2] i가 2의 배수 또는 3의 배수인지 판단 System.out.println("2] 2의 배수 또는 3의 배수인지 판단할 숫자 i를 입력하세요."); String strI = scanner.nextLine(); int i = Integer.parseInt(strI); System.out.printf("i=%d, i%%2==0 || i%%3==0 인가? %b%n",i, i%2==0 || i%3==0); System.out.println(); //3] c가 알파벳인지 아닌지 판단 System.out.println("3] 알파벳인지 판단할 문자 c를 입력하세요."); String strC = scanner.nextLine(); char c = strC.charAt(0); //String -> char로 변환하는 메소드 System.out.printf("c=%c, 입력한 문자는 알파벳인가? %b%n",c, ('a'<=c && c<='z') || ('A'<=c && c<='Z')); }//main }//class |
실행 결과
1] 10과 20사이에 있는지 판단할 숫자 x를 입력하세요.
23
x=23, x > 10 && x < 20 인가? false
2] 2의 배수 또는 3의 배수인지 판단할 숫자 i를 입력하세요.
41
i=41, i%2==0 || i%3==0 인가? false
3] 알파벳인지 판단할 문자 c를 입력하세요.
B
c=B, 문자 c는 알파벳인가? true
1]의 경우 일상생활에서 표현하는 것은 10 < x < 20 과 같이 표현할 수 있지만 자바에서는 이런 문법이 없고 하나씩 비교한다음 AND 연산자로 묶어 주어야 한다. x가 10보다 큰것도 만족하고 x가 20보다 작은것도 만족했을 때만 true가 나오는 것을 볼 수 있다.
2]의 경우 OR연산자를 사용한 경우로 2의 배수일때나 3의 배수 둘중 하나만 만족하여도 true가 나온다. 입력한 41은 둘다 만족하지 않았기 때문에 false값이 나왔다.
3]의 경우처럼 여러개의 연산도 논리연산자로 이어서 사용할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Operator { public static void main(String[] args) { boolean b = true; int i = 15; System.out.printf("b=%b, !b의 결과 : %b%n",b,!b); System.out.printf("i=%d, !(i>10 && i<20)의 결과 : %b%n",i, !(i>10 && i<20)); }//main }//class |
실행 결과
b=true, !b의 결과 : false
i=15, !(i>10 && i<20)의 결과 : false
부정 연산자를 사용하면 피연산자의 논리값에 반대되는 결과를 반환한다.
피 연산자가 true이면 false를, false이면 true를 반환한다.
No. 02 |
|
| |
비트 연산자 & | ^ ~ |
비트 연산자는 피연산자의 각 비트들을 대상으로 연산이 이루어지며 총 4개의 연산자가 있다.
비트 연산자의 연산 결과1
x |
y |
x | y |
x & y |
x ^ y |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
비트 연산자의 연산 결과2
x | ~x |
1 | 0 |
0 | 1 |
◈ 예제(비트 연산자)
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 | public class Operator { public static void main(String[] args) { int x = 10; //2진수로 변환시 1010 int y = 12; //2진수로 변환시 1100 System.out.println("x = \t"+toBinaryString(x)); System.out.println("y = \t"+toBinaryString(y)); System.out.println("x|y = \t"+toBinaryString(x|y)); System.out.println("x&y = \t"+toBinaryString(x&y)); System.out.println("x^y = \t"+toBinaryString(x^y)); System.out.println("~x = \t"+toBinaryString(~x)); }//main //10진 정수를 2진수로 변환하는 메서드 static String toBinaryString(int number) { String zero = "00000000000000000000000000000000"; String binary = zero + Integer.toBinaryString(number); return binary.substring(binary.length()-32); } }//class |
실행 결과
toBainaryString() 메서드는 신경쓸 필요 없다 단지 비트연산자가 컴퓨터 내부에서 어떻게 처리되는지 문자열로 표현해주기 위해 사용했다.
비트 연산자를 사용한 결과가 어떻게 나오는지 볼 수 있다.
· 비트AND연산자'&'은 피연산자 양 쪽이 모두 1이일 때만 1을 결과로 얻고, 그 외에는 0을 얻는다.
· 비트OR연산자'|'은 피연산자 중 한쪽이 1이면 1을 결과로 얻고, 그 외에는 0을 얻는다.
· 비트XOT연산자 '^'은 피연산자의 값이 서로 다를 때만 1을 결과로 얻고, 그 외에는 0을 얻는다.
· 비트 전환 연산자는 0은 1로, 1은 0으로 바꾼다.
No. 03 |
|
| |
쉬프트 연산자 << >> |
쉬프트 연산자는 피연산자의 각 비트들을 '오른쪽(>>)' 또는 '왼쪽(<<)'으로 이동시킨다.
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 | public class Operator { public static void main(String[] args) { int x = 10; //2진수로 변환시 1010 int y = 12; //2진수로 변환시 1100 System.out.println("x = \t\t"+toBinaryString(x)); System.out.println("x >> 1 = \t"+toBinaryString(x >> 1));// 오른쪽으로 1칸 이동 System.out.println("x >> 2 = \t"+toBinaryString(x >> 2));// 오른쪽으로 2칸 이동 System.out.println("y = \t\t"+toBinaryString(y)); System.out.println("y << 1 = \t"+toBinaryString(y << 1));// 왼쪽으로 1칸 이동 System.out.println("y << 2 = \t"+toBinaryString(y << 2));// 왼쪽으로 2칸 이동 }//main //10진 정수를 2진수로 변환하는 메서드 static String toBinaryString(int number) { String zero = "00000000000000000000000000000000"; String binary = zero + Integer.toBinaryString(number); return binary.substring(binary.length()-32); } }//class |
실행 결과
지정한 숫자만큼 자리를 이동하는 것을 볼 수 있다.
· 왼쪽 쉬프트(<<n)는 을 곱한 결과와 같다.
· 오른쪽 쉬프트(>>n)는 으로 나눈 결과와 같다.
'JAVA' 카테고리의 다른 글
[Java 17] 조건문 - if, switch (0) | 2017.11.27 |
---|---|
[Java 16] 증감 연산자, 조건 연산자 (0) | 2017.11.26 |
[Java 14] 비교 연산자 (0) | 2017.11.23 |
[Java 13] 산술 연산자 (0) | 2017.11.22 |
[Java 12] 연산자란? (0) | 2017.11.21 |