자바의 연산자

hams·2023년 12월 13일
1

자바

목록 보기
5/11
post-thumbnail

1. 연산자 우선순위

자바는 다음과 같은 연산자 우선순위가 있다. 높은 것에서 낮은 순으로 적었다. 처음에 나오는 괄호 () 가 우선순위가 가 장 높고, 마지막의 대입 연산자( = )가 우선순위가 가장 낮다.

  1. 괄호 ()
  2. 단항 연산자 (예: ++ , -- , ! , ~ , new , (type) )
  3. 산술 연산자 (* , / , % 우선,그다음에 + , - )
  4. Shift 연산자 ( << , >> , >>> )
  5. 비교 연산자 ( < , <= , > , >= , instanceof )
  6. 등식 연산자 (== , != )
  7. 비트 연산자 (& ,^ ,| )
  8. 논리 연산자 (&& , || )
  9. 삼항 연산자 (?: )
  10. 대입 연산자 (= , += , -= , *= , /= , %= 등등)

연산자 우선순위는 애매하면 괄호()사용해주기!

2. 산술연산자

산술 연산자는 주로 숫자를 계산하는 데 사용된다. 우리가 이미 잘 알고 있는 수학 연산을 수행한다.
+ , - , * , / , % (나머지연산자)

package operator;

public class Operator1 {
    public static void main(String[] args) {
        //변수 초기화
        int a = 5;
        int b =2;

        //덧셈
        int sum = a+b;
        System.out.println("a + b = " + sum);

        //뺄셈
        int diff = a-b;
        System.out.println("a - b = " + diff);

        //곱셈
        int multi = a * b;
        System.out.println("a * b = " + multi);

        //나눗셈
        int div = a / b;
        System.out.println("a / b = " + div);

        //나머지
        int mod  = a % b;
        System.out.println("a % b = " + mod);
    }
}

3. 문자열 더하기

자바는 특별하게 문자열에도 + 연산자를 사용할 수 있다. 문자열에 + 연산자를 사용하면 두 문자를 연결할 수 있다.

  • 문자와 숫자를 더하면 숫자를 문자열로 변경한 다음에 서로 더한다
package operator;

public class Operator2 {

    public static void main(String[] args) {
        //문자열과 문자열 더하기1
        String result1 = "hello " + "world"; System.out.println(result1);
        //문자열과 문자열 더하기2
        String s1 = "string1"; String s2 = "string2"; String result2 = s1 + s2; System.out.println(result2);
        //문자열과 숫자 더하기1
        String result3 = "a + b = " + 10; System.out.println(result3);
        //문자열과 숫자 더하기2
        int num = 20;
        String str = "a + b = "; String result4 = str + num; System.out.println(result4);
    }
}

4. 증감(증가 및 감소) 연산자

증감 연산자는 ++-- 로 표현되며, 이들은 변수의 값을 1만큼 증가시키거나 감소시킨다.

package operator;

public class OperatorAdd1 {
    public static void main(String[] args) {
        int a = 0;

        a = a + 1;
        System.out.println("a = " + a); //1
        a = a + 1;
        System.out.println("a = " + a); //2
        
        //증감 연산자
        ++a;
        System.out.println("a = " + a); //3
        ++a;
        System.out.println("a = " + a); //4
    }
}

전위, 후위 증감 연산자

증감 연산자는 피연산자 앞에 두거나 뒤에 둘 수 있으며, 연산자의 위치에 따라 연산이 수행되는 시점이 달라진다.

  • ++a : 증감 연산자를 피연산자 앞에 둘 수 있다. 이것을 앞에 있다고 해서 전위(Prefix) 증감 연산자라 한다.
  • a++ : 증감 연산자를 피연산자 뒤에 둘 수 있다. 이것을 뒤에 있다고 해서 후위(Postfix) 증감 연산자라 한다.
package operator;

public class OperatorAdd2 {
    public static void main(String[] args) {
        //전위 증감 연산자 사용 예
        int a = 1;
        int b = 0;

        b = ++a; //a의 값을 먼저 증가시키고, 그 결과를 b에 대입
        System.out.println("a = " + a + ", b = " + b);

        //후위 증감 연산자 사용 예
        a = 1;
        b = 0;

        b = a++;//a의 현재 값을 b에 먼저 대입하고, 그 후 a값을 증가시킴
        System.out.println("a = " + a + ", b = " + b); //결과 a=2, b=1
        

    }
}

5. 비교연산자

비교 연산자는 두 값을 비교하는 데 사용한다. 비교 연산자는 주로 뒤에서 설명하는 조건문과 함께 사용한다.
== , != , > , < , >= , <=
비교 연산자를 사용하면 참( true ) 또는 거짓( false )이라는 결과가 나온다. 참 거짓은 boolean 형을 사용한다.

package operator;

public class Comp1 {
    public static void main(String[] args) {
        int a = 2;
        int b = 3;


        System.out.println(a == b); //false. a는 b와 같지 않다
        System.out.println(a != b); // true. a는 b랑 다르다
        System.out.println(a > b); // false a는 b보다 크지 않다
        System.out.println(a < b); //true. a는 b보다 작다
        System.out.println(a >= b); //false. a는 b보다 크거나 같지 않다.
        System.out.println(a <= b); //true. a는 b보다 작거나 같다.

        //결과를 boolean 변수에 담기
        boolean result = a == b; //a == b: false 
        System.out.println(result); //false

    }
}

6. 문자열 비교

문자열이 같은지 비교할 때는 == 이 아니라 .equals() 메서드를 사용해야 한다.
== 를 사용하면 성공할 때도 있지만 실패할 때도 있다.

package operator;

public class Comp2 {
    public static void main(String[] args) {
        String str1 = "문자열1"; 
        String str2 = "문자열2";
        boolean result1 = "hello".equals("hello"); //리터럴 비교
        boolean result2 = str1.equals("문자열1");//문자열 변수, 리터럴 비교
        boolean result3 = str1.equals(str2);//문자열 변수 비교
        System.out.println("result1 = " + result1);
        System.out.println("result2 = " + result2);
        System.out.println("result3 = " + result3);

    }
}

7. 논리 연산자

논리 연산자는 boolean 형인 true , false 를 비교하는데 사용한다.
&& (그리고) : 두 피연산자가 모두 참이면 참을 반환, 둘중 하나라도 거짓이면 거짓을 반환
|| (또는) : 두 피연산자 중 하나라도 참이면 참을 반환, 둘다 거짓이면 거짓을 반환
! (부정) : 피연산자의 논리적 부정을 반환. 즉, 참이면 거짓을, 거짓이면 참을 반환

package operator;

public class Logical1 {
    public static void main(String[] args) {
        System.out.println("&&: AND 연산");
        System.out.println(true && true); //true
        System.out.println(true && false);//false
        System.out.println(false && false);//false

        System.out.println("||: OR 연산");
        System.out.println(true || true); //true
        System.out.println(true || false);//true
        System.out.println(false || false);//false

        System.out.println("! 연산");
        System.out.println(!true); //false
        System.out.println(!false); //true

        System.out.println("변수 활용");
        boolean a = true;
        boolean b = false;
        System.out.println(a && b); // false
        System.out.println(a || b); // true
        System.out.println(!a); // false
        System.out.println(!b); // true
    }
}

8. 대입연산자

대입 연산자( = )는 값을 변수에 할당하는 연산자다. 이 연산자를 사용하면 변수에 값을 할당할 수 있다.
종류는 = , += , -= , *= , /= , %= 가 있다.

package operator;

public class Assign1 {
    public static void main(String[] args) {
        int a=5; //5
        a+=3; //8(5+3): a=a+3
        a-=2; //6(8-2): a=a-2
        a*=4; //24(6*4):a=a*4
        a/=3; //8(24/3):a=a/3
        a%=5; //3(8%5):a=a%5
        System.out.println(a);
    }
}

9. 삼항 연산자

조건식은 참 또는 거짓을 평가하는 표현식입니다.
표현식1은 조건식이 참일 경우에 변수에 할당되는 값 또는 표현식입니다.
표현식2는 조건식이 거짓일 경우에 변수에 할당되는 값 또는 표현식입니다.
변수 = (조건식) ? 표현식1 : 표현식2;

int x = 10;
int y = 20;

int max = (x > y) ? x : y;

System.out.println("최댓값은: " + max);

0개의 댓글