1.산술연산자

   / *산술연산자(이항연산자)의 결과는 다양함 산술연산자 내에서의 연산 우선순위는

          ( * , % , / )  > (+ , - )

       참고로  %얘는 나머지값을 구하는 연산임

    우선순위가 같은경우 왼쪽에서 오른쪽으로 연산, 산술연산자를 써서 식을 만들면 산술식

*/

      int result = 3 * 2 + 5 % -6 / 3 * 5;

      system.out.printf("3 * 2 + 5 %% -6 / 3 * 5의 결과 : %d",result);

 

2.비교연산자

/* 비교연산자(이항연산자)의 결과는 true 아니면 false (boolean 값)

  > : ~보다 크다
  >=: ~보다 크거나 같다
  < : ~보다 작다
  <=: ~보다 작거나 같다
  !=: 같지 않다
  ==: 같다

비교연산자는 모두 우선 순위가 같다, 산술연산자가 비교연산자보다 우선순위가 높다.

비교연산자를 사용한 식은 비교식임

*/

    int num1 = 10, num = 20;

    system.out.println(num1 > num2);

    boolean b = num1 == num 2;

    system.out.prinf("%d == %d의 결과:%b%n", num1,num2,b);

    b = num1 != num2;

    system.out.prinf("%d != %d의 결과: %b%n", num1,num2,b);

    b=15 % 3 * 2 + 4 > (10-2) * 4  !=  true  ;

    System.out.printf("15 %% 3 * 2 + 4 > (10-2) * 4 !=true위 결과:%b",b);

 

3.논리연산자

/* 논리연산자(이항연산자 혹은 단항연산자)의 결과값은 true,false이다.

 &&  : and연산자(논리곱) 두 항이 참일때만 참이다       
  ||    : or연산자(논리합) 두 항 중의 하나라도   참이면 참  
  !(단항)  : not연산자(논리부정) 단항이 참이면 거짓, 거짓이면 참 (~아니다)     ***이거 단항이라는거!! 
  ^(이항)   : xor연산자(배타) 두 항이 서로 배타적일때 참, 두 항이 서로 같으면 거짓   ***헷깔리니까 조심!!
 -논리연산자의 우선 순위:  !    >    &&    >   ||,^       
 - && 와 &  ,  || 와 | 는 둘다 결과값이 같지만 되도록 &&와 || 이걸로 쓰자    
 - &&는 첫째항이 거짓이면 두번째항은 계산안한다
 - &는 첫째항이 거짓이더라도 두번째항을 계산한다   
  - 산술   >  비교  >  논리연산자순으로 우선순위가 적용됨.
 */

      int num1 = 15, num2 = 10;

      boolean b = num1 >= num2 && num1  == num2 ;

      System.out.printf("%d  >=  %d  &&  %d  ==  %d의 결과:%b%n",num1,num2,num1,num2,b);

      b = true  || false ;

      System.out.printf("%b || %b 의 결과 : %b%n", true,false,b);

/* 논리 연산자 (&&,||,!,^)의 각 항에는 반드시 true 나 false 값을 갖는 식 이거나 true, false 값 이이야 한다.

//     b = num1 + num2  && num1  !=  num2;      왼쪽 항이 비교식이 아닌 산술식이라 불가능

       b = num1 <=  num2  ^  num1  != num2 ; 

       Syetem.out.printf("%d <= %d  ^ %d  !=  %d  의 결과: %b%n ",num1,num2,num1,num2,b)

        b= !(num1  != num2)  || num1  >= num2  && num1  == num2  ;

        System.out.println("b는"+b);

         b= 10 % 3 > 6-2*2 && 10 < 6*2 || 5*3 !=10;

         System.out.println("b는="+b);

      b = !true || true ^ false && true;      

      System.out.println("b는 "+b); 

 

 

//     **********참고                [&& 와  & ,  ||  와  |]
/*
Ref ref = new Ref();    구체적 내용은 아직 몰라도 됨 우선 예시로
System.out.println(ref.data);//[o]

*/
            Ref ref= null;
//System.out.println(ref.data);//[x]  오류나는 연산임
            System.out.println(ref);


//    &&사용시 : 왼쪽이 거짓이면 뒤에꺼 굳이 실행하지 않는다

   System.out.println(ref != null  && ref.data ==100);
//이건 오른쪽항(ref.data ==100)을 실행하지 않는다. 왼쪽항이 거짓임으로 바로 결과값 false 출력 

 

 

//    & 사용시 : 왼쪽이 거짓이여도 뒤에꺼까지 실행, 확인사살함
//이건 오른쪽항 (ref.data==100)이 실행이 되서 출력안됨
//System.out.println(ref != null  & ref.data ==100); 에러 뜸

 

 

4.할당연산자

/* 1.할당연산자 정의

우선 할당연산자는 ' = ' 요놈임!!

뜻이 오른쪽에 있는 놈을 왼쪽에  대입(할당) 한다는 뜻

축약표현 : +=,-=,*=,%= ....등등               

  변수1 += 값(변수2)    이건   변수1 = 변수1+값 혹은 변수1+변수2

*/

 

//     1.1 할당(대입) 연산자

       int num1;  

       num1 = 100;    // 변수 초기화한거, 대입연산자의 오른쪽 식이 항상 먼저 실행 후 그 결과를 왼쪽 변수에 대입! 

       system.out.println(num1);

       int num2;

       num2 = num1  // 변수 num1에 저장된 값을 대입한다는 것!

//     cf. 10  =  num1;  이건 안됨 왜? 왼쪽에는 항상 변수가 와야한다.

 

//    1.2 축약 표현

//           (산술연산자에만 적용된다.)

             num1 += 100 ;    //   이 뜻은  num1 = num1 + 100;와 같다 

             System.out.printf("num1:%d,num2:%d%n",num1,num2);

 

 

           num1 %= num2 ;  // 이건 num1 = num1 % num2; 와 같다

            System.out.printf("num1:%d,num2:%d%n",num1,num2);

 

 

            num2  *=  2+10;  //  이건 num2 = num2 * (2+10);와 같다. 왜?? 항상 오른쪽 항이 먼저 계산됨!
            System.out.printf("num1:%d,num2:%d%n",num1,num2);

 

 

//      cf.  num1 &&= num2;  요건 불가함 , 축약은 산술연산에만 가능함

          boolean b1 = true, b2=false;

          b1= b1 && b2 ;    // 이거 축약한다고 해서 b1&&=2; 이런거 안된다고
          System.out.println(b1);

 

5.증감연산자


/*   1.증감연산자정의

  증감연산자(단항 연산자) : ++(증가 연산자), --(감소연산자)
++는 자기자신을 1증가시킨다,  --는 자기자신을 1감소시킨다.
단독으로 쓰일때는 항이 증감연산자 앞에 붙거나 뒤에 붙거나 결과는 같다.
하지만 다른 연산자와 결합할때는 
++(--)변수 : 먼저 자신을 증감 시킨다
변수++(--) : 다른 연산을 수행한후 자신을 증감시킨다.

*/

 

//   1.2 단독으로 사용시

      int num3 =10;  

//    변수명 ++ (후위연산자)

       num3++;             이건 num3=num3+1;           (num3 += 1)와 같다.

       System.out.printf("num3:%d%n",num3);

        ++num3;    // 이거도 출력값은 차이가 없다

        System.out.printf("num3:%d%n",num3);

 

 

//   1.3 다른 연산과 함께 사용시

// 후위 연산(변수++)  :  다른 연산을 먼저 수행한 후  마지막에 자기자신을 1증가(++)시키거나 감소(--)시킨다.

     int num4 =10;
     int result = num4 + num3++;

                     /*  풀이

                        1]num4 + num3 = 10 + 11
                        2]result = 21
                        3]num3 = num3 +1 즉 num3는 12    */

      System.out.printf("result:%d,num3:%d%n",result,num3);

 

 

// 전위 연산(++변수)  :  자기자신을 먼저 1증가(++)시키거나 감소(--)시킨 후 다른연산 수행

result = num4 + ++num3;

                 /*풀이

                     1]num3=num3+1
                     2]num4 +1]번 = 10 +13 = 23

                     3]result =23
System.out.printf("result:%d,num3:%d%n",result,num3);

 

 

 

// cf 참고사항

int num5 = 10;

//println메소드의 매개변수에  num5에 있는 값이 대입(복사)(대입연산이 일어난후)된 후 자기자신을 1증가시킴
         System.out.println(num5);

 

         System.out.println(++num5);     // 결과가 다르네 ? 이건 단독으로 사용된게 아니래.. 나중에 배울껴


  

 

 

+ Recent posts