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);