JAVA
3. 2 연산자의 연산 방법
beubeu95
2023. 7. 20. 21:52
산술 연산자 와 증감 연산자
- 산술연산 : +, -, *, /, %
int a = 20;
int b = 30;
int c = a+b;
int d = a-b;
int e = a*b;
int f = b/a;
int g = b%a;
System.out.println("a+b="+c); // 50
System.out.println("a-b="+d); // -10
System.out.printf("a*b=%d\n",a*b); // 600
System.out.printf("b/a=%d\n",b/a); // 1
System.out.printf("b%%a=%d\n", g); // 10
- 증감연산 : ++,-- 등의 전위와 후위가 존재
int a =10, b=10;
//a=a+1, a+=1, ++a, a++ 다 같은 연산
System.out.printf("a++의 결과 : %d\n", a++); //후위 연산 (결과 : 10)
System.out.println("나중 출력1 :"+a); // 나중 출력 (결과 : 11)
System.out.printf("++b의 결과 : %d\n", ++b); //전위 연산 (결과 : 11)
System.out.println("나중 출력2 : "+b); // 나중 출력 (결과 : 11)
System.out.printf("b--의 결과 : %d\n", b--); //후위 연산 (결과 : 11)
System.out.println("나중 출력3 :"+b); //나중 출력 (결과 : 10)
System.out.printf("--a의 결과 : %d\n",--a); //전위연산 (결과 : 10)
System.out.println("나중 출력4 :"+a); //나중 출력 (결과 : 10)
비트 연산자
- AND(&) : 두 값이 모두 1일 때만 1인 연산자
- OR(|) : 두 값이 모두 0일 때만 0인 연산자
- XOR(^) : 두 값이 같은 때 0인 연산자
- NOT(~) : 0은 1, 1은0 으로 반전하는 연산자
값1 | 값2 | AND(&) | OR(|) | XOR(^) | NOT(~) |
0 | 0 | 0 | 0 | 0 | |
0 | 1 | 0 | 1 | 1 | 0 -> 1 |
1 | 0 | 0 | 1 | 1 | 1 -> 0 |
1 | 1 | 1 | 1 | 0 |
//32 16 8 4 2 1
// 1 0 0 0 0 0 => 32 (0 양수 1 음수)
int a = 20; // 010100 -> 10100
int b = 14; // 001110 -> 01110
System.out.println("a & b : "+(a&b)); //00100 -> 4
System.out.println("a | b : "+(a|b)); //11110 -> 30
System.out.println("~a : "+(~a)); //보수 -> -21
System.out.println("a ^ b : "+(a^b)); //11010 -> 26
시프트 연산자
- 시프트 연산자는 비트의 위치를 좌우로 이동하는 연산으로,산술 시프트(<<,>>)와 논리 시프트(>>>)가 있다.
- 산술 시프트 (<<,>>)
int a = 20; // 010100 -> 10100
int b = 14; // 001110 -> 01110
System.out.println("a>>2 : "+(a>>2)); // 101 -> 5
System.out.println("a<<2 : "+(a<<2)); // 1010000 -> 80
- 논리 시프트(>>>)
int a = 20; // 010100 -> 10100
int b = 14; // 001110 -> 01110
System.out.println("a>>>2 : "+(a>>>2));
관계 연산자
- 관계연산 : ==(이다/일치), !=(아니다/불일치), >(초과/후), >=(이상/이후), <(미만/전), <=(이하/이전)
int su1 = 90;
int su2 = 85;
int su3 = 88;
System.out.println("su1==su2 : "+(su1==su2)); //false
System.out.println("su1==su2 : "+(su1!=su2)); //true
System.out.println("su1>su2 : "+(su1>su2)); //true
System.out.println("su2>=su3 : "+(su2>=su3)); //false
System.out.println("su1<su2 : "+(su1<su2)); //false
System.out.println("su1<=su2 : "+(su1<=su2)); //false
논리 연산자
값1 | 값2 | AND(&) | OR(|) | XOR(^) | NOT(~) |
false | false | false | false | false | |
false | true | false | true | true | false ->true |
true | false | false | true | true | true->false |
true | true | true | true | 0 |
int su1 = 90;
int su2 = 85;
int su3 = 88;
//and 연산
System.out.println("su1>=su2 && su2>=su3 : "+(su1>=su2 && su2>=su3)); //false
System.out.println("su1<=su2 && su2>=su3 : "+(su1<=su2 && su2>=su3)); //false
System.out.println("su1<=su2 && su2<=su3 : "+(su1<=su2 && su2<=su3)); //false
System.out.println("su1>=su2 && su2<=su3 : "+(su1>=su2 && su2<=su3)); //true
//or 연산
System.out.println("su1>=su2 || su2>=su3 : "+(su1>=su2 || su2>=su3)); //true
System.out.println("su1<=su2 || su2>=su3 : "+(su1<=su2 || su2>=su3)); //false
System.out.println("su1<=su2 || su2<=su3 : "+(su1<=su2 || su2<=su3)); //true
System.out.println("su1>=su2 || su2<=su3 : "+(su1>=su2 || su2<=su3)); //true
//not 연산
System.out.println("!(su1>=su2) : "+(!(su1>=su2))); //false
System.out.println("!(su2>=su3) : "+(!(su2>=su3))); //true
대입 연산자
- 대입연산 : =, +=, -=, /=, *=
int su=0;
su+=10; //su=su+10
System.out.println("su+=10 => " +su); //10
su-=5; //su=su-5
System.out.println("su-=5 =>"+su); //5
su*=10; //su=su*10
System.out.println("su*=10 =>"+su); //50
삼항 연산자
- 삼항 연산자 : 조건 ? 참 : 거짓
int point = 84;
String pan = point>=80 ? "합격" : "불합격";
System.out.println("판정 :" +pan);