day-2 (23.05.03)

정길규·2023년 5월 3일

Part 02. 연산자

10 + x / 3

연산자 : 연산을 수행 하는 기호 -> +, /
피연산자 : 연산자의 연산 수행 대상 -> 10, x, 3

연산자의 종류에는 산술, 비교, 논리, 대입, 기타 연산자가 있다.
연산자의 내용은 수학시간에 배운 내용과 동일한데 표현방법이 다른것 같다.
e.g. and -> &&, or -> ||

public class Operator1_1 {
    public static void main(String[] args) {
        int x = 10;
        int y = 20;

        System.out.print("-x + 3 = ");
        System.out.println(-x + 3);

        System.out.print("x + 3 * y = ");
        System.out.println(x + 3 * y);

        System.out.println("x + 3 > y - 2 = ");
        System.out.println(x + 3 > y - 2);
        System.out.println("x + 3 < y - 2 = ");
        System.out.println(x + 3 < y - 2);

        System.out.println("x > 3 && y < 2 = ");
        System.out.println(x > 3 && y < 2);

        int result = x + y * 3;
        System.out.println("result = " + result);
     }
}

증감 연산자

증가 연산자(++) : 피연산자의 값을 1증가 시킵니다.
감소 연산자(--) : 피연산자의 값을 1 감소 시킵니다.

  • 전위형 : 값이 참조되기 전에 증가/감소 e.g. k = ++j;, k = --j;
  • 후위형 : 값이 참조된 후에 증가 감소 e.g. k = j++;, k = j--;
public class Operator2_1 {
   public static void main(String[] args) {
       int k = 0, j = 3;

       // 후위 형
       k = j++;
       System.out.println("k = j++;, k = " + k);
       System.out.println("k = j++;, j + " + j);
       // 다르게 표현
//        k = j;
//        j++;
//        System.out.println("k = j++;, k = " + k);
//        System.out.println("k = j++;, j + " + j);

       // 값 초기화
       k = 0;
       j = 3;

       // 전위 형
       k = ++j;
       System.out.println("k = ++j;, k = " + k);
       System.out.println("k = ++j;, j = " + j);
       // 다르게 표현 가능
//        k = j;
//        j++;
//        System.out.println("k = ++j;, k = " + k);
//        System.out.println("k = ++j;, j = " + j);

   }
}

형변환 연산자

형변환이란?

  • 변수 또는 상수의 타입을 다른 타입으로 변환
public class Operator3_1 {
   public static void main(String[] args) {
       int i = 65, num = 10;
       char ch = 'A';
       float f = 1.6f;

       System.out.println("(char)i = " + (char)i); //(char)i = A
       System.out.println("(int)ch = " + (int)ch); //(int)ch = 65
       System.out.println(("(int)f = " + (int)f)); // (int)f = 1
       System.out.println("(float)num = " + (float)num); // (float)num - 10.0
   }
}

사칙연산자

덧셈(+) 뺄셈(-) 곰셈(*) 나눗셈(/)

사칙연산은 흔히 알고 있는 그대로이다. 단 소숫점 까지 표현할려면 float로 표현해야 된다.

public class Operator4_1 {
    public static void main(String[] args) {
        int a = 10, b = 4;

        // 덧셈
        System.out.print("a + b = ");
        System.out.println(a + b); // a + b = 14

        // 뺄셈
        System.out.print("a - b = ");
        System.out.println(a - b); // a - b = 6

        // 곱셈
        System.out.print("a * b = ");
        System.out.println(a * b); // a * b = 40

        // 나눗셈
        // 소수점 이하는 버려진다.
        System.out.print("a / b = ");
        System.out.println(a / b); // a / b = 2

        // 10 / 4.0f -> 10.0f / 4.0f -> 2.5
        System.out.print("a / (float)b = ");
        System.out.println(a / (float)b); // a / (float)b = 2.5
    }
}

Math

  • 수학과 관련된 메서드를 가지고 있는 클래스.
  • 특정한 기능을 수행하기 위해 코드로 작성된 단위.
    • round() : 실수를 소수점 첫 째자리에서 반올림한 정수를 반환.
    • cell() : 올림값을 double 형으로 반환.
    • floor() : 내림값을 double 형으로 반환.
    • abs() : int, doule 기본형 모두 사용 가능하며 절대값을 얻음.

나머지 연산자 %

  • 나누고 남은 나머지를 반환.
  • 나누는 피연산자는 0이 아닌 정수만 허용
  • 부호는 무시

비교 연산자

  • 두 연산자를 비교해서 True 또는 False를 반환

    == : 두 연산자가 같으면 참.
    != : 두 연산자가 다르면 참.
    < : 왼쪽 피연산자가 오른쪽보다 작으면 참.
    <= 왼쪽 피연산자가 오른쪽보다 작거나 같으면 참.
    = 왼쪽 피연산자가 오른쪽보다 크거나 같으면 참.
    문자열의 비교할때는 == 대신 equals()를 사용.

논리 연산자

&& : 모두 참이면 참으로 반환(AND)
|| : 하나라도 참이면 참으로 반환(OR)
! : 참이면 거짓으로 거짓이면 참으로 반환(NOT)

조건 연산자

삼항 연산자 : 조건식 ? 반환값1 : 반환값2

  • 조건식의 결과에 따라 연산결과를 달리할 수 있다.
public class Operator8_1 {
    public static void main(String[] args) {
        int num1 = 5, num2 = 7;
        int result;

        result = num1 - num2 > 0 ? num1 : num2;

        System.out.println("두 정수 중 더큰 수는 " + result + "입니다."); // 두 정수 중 더큰 수는 7입니다. 
    }
}

조건식에서 참이면 반환값1이 출력되고 거짓이면 반환값2가 출력 되는것 같다.

대입 연산자

= : 왼쪽 피연산자에 오른쪽 피연산자를 대입.
+= : 왼쪽 피연산자에 오른쪽 피연산자를 더한 후, 그 결과값을 왼쪽에 대입.
-= : 왼쪽 피연산자에 오른쪽 피연산자를 뺀 후, 그 결과값을 왼쪽에 대입.
*= : 왼쪽 피연산자에 오른쪽 연산자를 곱한 후, 그 결과값을 왼쪽에 대입.
/= : 왼쪽 피연산자에 오른쪽 연산자를 나눈 후, 그 결과값을 왼쪽에 대입.
%= : 왼쪽 피연산자에 오른쪽 연산자로 나눈 후, 그 나머지를 왼쪽에 대입.
&= : 왼쪽 피연산자를 오른쪽 피연산자와 비트 AND 연산 후, 그 결과값을 왼쪽의 피연산자에 대입.
!= : 왼쪽 피연산자를 오른쪽 피연산자와 비트 OR 연산 후, 그 결과값을 왼쪽의 피연산자에 대입.
^= : 왼쪽 피연산자를 오른쪽 피연산자와 비트 XOR 연산 후, 그 결과값을 왼쪽의 피연산자에 대입.
<<= : 왼쪽 피연산자를 오른쪽의 피연산자만큼 왼쪽 시프트 한 후, 그 결과값을 왼쪽 피연사자에 대입.
(>>=) : 왼쪽 피연자를 오른쪽 피연산자 만큼 부호를 유지하며 오른쪽 시프트 한 후, 그 결과값을 왼쪽 피연산자에 대입.
(>>>=) : 왼쪽 피연산자를 오른쪽 피연산자만큼 부호에 상관없이 오른쪽 시프트 한 후, 그 결과값을 왼쪽 피연산자에 대입.

2일차 마치며.

오늘은 연산자에 대해서 공부를 하였다. 대부분의 연산자는 일상생활에서 사용 하던 내용 그대로라서 이해 하는데 어려움은 없었지만 컴퓨터에 표현 할때는 기존에 표현 했던 방법과 달라서 적응하는데에는 시간이 더 필요할 것 같다.

0개의 댓글