Java : 연산자

커비·2024년 10월 19일
0

Java

목록 보기
5/55
post-thumbnail

📌 연산자 학습

💡 증가 연산자(++)

피연산자의 값을 1 증가시킵니다. (K = ++J;)

💡 감소 연산자(--)

피연산자의 값을 1 감소시킵니다. (K = --J;)

💡 증감연산자 전위형과 후위형

전위형 : 값이 참조되기 전에 증가/감소 시킨다. (K = ++J;)
후위형 : 값이 참조된 후에 증가/감소 시킨다. (K = J++;)

증감연산자가 독립적으로 사용된 경우, 전위형과 후위형의 차이는 없다.
++K; 와 K++;의 값은 동일하다.

💡 형변환 연산자와 자동 형변환

형변환 : 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
방법 : (타입) 피 연산자

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);
        System.out.println("(int)ch = " + (int)ch);
        System.out.println("(int)f = " + (int)f);
        System.out.println("(float)num = " + (float)num);
    }
}

자동 형변환 : 컴파일러에 의해 자동으로 형변환되는 것

다른 예로 'int = 3.14f;'처럼 큰 타입을 작은 타입에 저장할 때 Error가 발생한다. 3.14f가 int 타입으로 변환될 때 소수점이 사라지면서 원래 값이 달라지게 되면서 값 손실이 발생하는데 이런 경우, 컴파일러가 자동으로 형변환을 안해준다.

💡 사칙 연산자와 산술변환

사칙연산자 : 덧셈(+), 뺄샘(-), 곱셈(*), 나눗셈(/)
산술변환 : 연산 전에 피연산자와 타입을 일치시키는 것

💡 Math 클래스와 나머지 연산자

Math: 수학과 관련된 메서드를 가지고 있는 클래스
메서드 : 특정한 기능을 수행하기 위해 코드로 작성된 단위

  • round() : 실수를 소수점 첫째자리에서 반올림한 정수를 반환
  • ceil() : 올림값을 double형으로 반환
  • floor() : 내림값을 double형으로 반환
  • abs() : int, double 기본형 모두 사용가능하며 절대값을 얻음

나머지 연산자 %

  • 오른쪽 피연산자로 나누고 남은 나머지를 반환
  • 나누는 피연산자는 0이 아닌 정수만 허용
  • 부호는 무시
class Operator5_3 {
    public static void main(String[] args) {
        int x = 10;
        int y = 8;

        System.out.print("x를 y로 나눈 몫 = ");
        System.out.println(x / y);

        System.out.print("x를 y로 나눈 나머지 = ");
        System.out.println(x % y);

        // 부호 무시 확인
        int n = 3;
        int z = -3;
        System.out.println("x % n = " + x % n);
        System.out.println("x % z = " + x % z);
    }
}

💡 비교 연산자와 문자열의 비교


두 피연산자를 비교해서 true(참)과 false(거짓)을 반환 함

class Operator6_1 {
    public static void main(String[] args) {
        int n1 = 10, n2 = 6;
        char c1 = 'A', c2 = 'B';

        System.out.print("n1 >= n2 = " ); // true
        System.out.println(n1 >= n2);
        System.out.print("n1 <= n2 = " ); // false
        System.out.println(n1 <= n2);

        System.out.print("n1 == n2 = " ); // false
        System.out.println(n1 == n2);
        System.out.print("n1 != n2 = " ); // true
        System.out.println(n1 != n2);

        // 산술변환 규칙에 의해서 char 타입이 int 타입으로 변환되어 연산됨
        System.out.print("c1 < c2 = "); // true
        System.out.println(c1 < c2); // 65 < 66
        System.out.print("c1 > c2 = "); // false
        System.out.println(c1 > c2); // 65 > 66
    }
}

문자열 비교 : ==대신 equals()를 사용해야 한다.

class Operator6_2 {
    public static void main(String[] args) {
        String s1 = "사랑";
        String s2 = "사랑";

        System.out.print("s1 == s2 = "); // true
        System.out.println(s1 == s2);
        System.out.println("s1.equals(s2) = " + s1.equals(s2)); // true

        // 하지만!
        String s3 = new String("사랑");
        System.out.print("s1 == s3 = "); // false
        System.out.println(s1 == s3);
        System.out.println("s1.equals(s3) = " + s1.equals(s3)); // true
    }
}
profile
전공은 컴퓨터공학, 복수전공은 해킹보안학, 직장은 방학(파워 구직중)

0개의 댓글