JAVA 입문 - 연산자

hi_rice·2024년 8월 19일
0

JAVA

목록 보기
2/2

산술 연산자

+ , - , * , / 와 같이 계산을 수행하는 기호를 연산자라 한다.
java에는 다음과 같은 다양한 연산자가 있다.

연산자 종류

  • 산술연산자: + , - , * , / , % (나머지연산자)
  • 증감(증가 및 감소) 연산자: ++ , --
  • 비교연산자: == , != , > , < , >= , <=
  • 논리 연산자: && (AND), || (OR), ! (NOT)
  • 대입연산자: = , += , -= , *= , /= , %=
  • 삼항 연산자: ? :

 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); // 출력: a + b = 7
// 뺄셈
int diff = a - b;
System.out.println("a - b = " + diff); // 출력: a - b = 3
// 곱셈
int multi = a * b;
System.out.println("a * b = " + multi); // 출력: a * b = 10
// 나눗셈
int div = a / b;
System.out.println("a / b = " + div); // 출력: a / b = 2
// 나머지
int mod = a % b;
System.out.println("a % b = " + mod); // 출력: a % b = 1
}
  • java에서 같은 int 형끼리 계산하면 계산 결과도 같은 int 형을 사용한다. int 형은 정수이기 때문에 소 수점 이하를 포함할 수 없다.(형변환)
  • 나머지 연산자( % )
    : 나머지를 구하는 연산자이다. 5 / 2 는 몫이 2나머지가 1이다.따라서 나머지 연산자 5 % 2 의 결과는 1 이 된다.

0으로 나누기
10 / 0 과 같이 숫자는 0으로 나눌 수 없다.(수학에서 허용하지 않음)
방금 예제에서 변수 b = 0 을 대입하면 5 / 0 이 된다.이 경우 프로그램에 오류가 발생한다. 실행하면 다음과 같은 예외를 확인할 수 있다.

문자열 더하기

 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);
        // 문자열과 숫자를 더 하면 java에서 숫자를 문자열로 바꿔버린 뒤 붙여 버린다.

        // 문자열과 숫자 더하기2
        int num = 20;
        String str = "a + b = ";
        String result4 = "a + b = 20";
        System.out.println(result4);
        
    }
}

실행 결과

hello world
string1string2
a + b = 10
a + b = 20
  • java에서 문자열과 숫자를 더하면 숫자를 문자열로 변환시켜서 붙여버린다.

연산자 우선 순위

수학에서는 덧셈보다 곱셈의 연산이 우선이 된다.
java에서도 똑같다.
연산자 우선순위를 변경하고 싶다면 괄호를 써서 먼저 연산할 수 있도록 한다.

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

1 \rarr 10 번 순서대로 우선순위이다.

증감 연산자

  • 증가 및 감소 연산자를 줄여서 증감 연산자라 한다.
  • 증감 연산자는 ++-- 로 표현되며, 이들은 변수의 값을 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; // 1 인 a의 값을 1 증가시킨다.
        System.out.println("a = " +a); // 2

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

실행 결과

a = 1
a = 2
a = 3
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; // a 깂을 다시 1로 지정
        b = 0; // b 값을 다시 0으로 지정

        b = a++; // a 의 현재 값을 b에 먼저 대입하고, 그 후 a 값을 증가시킴

        System.out.println("a = " + a + ", b = " + b); // 결과 : a = 2, b = 1

    }
}

실행 결과

a = 2, b = 2
a = 2, b = 1
  • 증감 연산자가 변수 앞에 오는 경우를 전위 증감 연산자라고 하며, 이 경우에는 증감 연산이 먼저 수행된 후 나머지 연산 이 수행된다.
  • 증감 연산자가 변수 뒤에 오는 경우를 후위 증감 연산자라고 하며, 이 경우에는 다른 연산이 먼저 수행된 후 증감 연산이 수행된다.
  • 증감 연산자를 단독으로 사용하는 경우에는 다른 연산이 없기 때문에, 본인의 값만 증가한다. 따라 서 전위이든 후위이든 둘다 결과가 같다.

비교 연산자

비교 연산자는 두 값을 비교하는 데 사용한다. 비교 연산자는 주로 뒤에서 설명하는 조건문과 함께 사용한다.

  • == : 동등성 (equal to)
  • != : 불일치 (not equal to)
  • > : 크다 (greater than)
  • < : 작다 (less than)
  • >= : 크거나 같다 (greater than or equal to) <= : 작거나 같다 (less than or equal to)

비교 연산자를 사용하면 참( true ) 또는 거짓( false )이라는 결과가 나온다. 참 거짓은 boolean 형을 사용한다.

여기서 주의할 점은 === ( = x2)이 다르다는 점이다.

  • = : 대입 연산자, 변수에 값을 대입한다.
  • == : 동등한지 확인하는 비교 연산자

불일치 연산자는 != 를 사용한다. ! 는 반대라는 뜻이다.

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
    }
}

문자열 비교

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

논리 연산자

  • 논리 연산자는 boolean 형인 true , false 를 비교하는데 사용한다.

논리 연산자

&& (그리고) : 두 피연산자가 모두 참이면 참을 반환, 둘중 하나라도 거짓이면 거짓을 반환.
|| (또는) : 두 피연산자 중 하나라도 참이면 참을 반환, 둘다 거짓이면 거짓을 반환.
! (부정) : 피연산자의 논리적 부정을 반환. 즉, 참이면 거짓을, 거짓이면 참을 반환.

대입 연산자

대입 연산자

대입 연산자( = )는 값을 변수에 할당하는 연산자다. 이 연산자를 사용하면 변수에 값을 할당할 수 있다.
예를들어, int a = 1a 라는변수에 1 이라는값을할당한다.

축약(복합) 대입 연산자
산술 연산자와 대입 연산자를 한번에 축약해서 사용할 수 있는데, 이것을 축약(복합) 대입 연산자라 한다.
연산자 종류: += , -= , *= , /= , %=
이 연산자는 연산과 대입을 한번에 축약해서 처리한다. 다음 왼쪽과 오른쪽의 결과는 같다.

  • i = i + 3 i += 3
  • i = i * 4 i *= 4



command + shift + ENTER
\rarr 문장 완성 시켜주는 단축키
(윈도우, 리눅스 - ctrl + shift + ENTER)

0개의 댓글

관련 채용 정보