KSCOLD LogoKSCOLD
Blog
Feed
Product
Admin Night
Vault
Guestbook
Info

Vault 목록

연산자(Operator)

연결된 노트와 함께 읽기

연산자(Operator)

2024년 1월 6일
  • +, -, *, /, % 와 같이 계산을 수행하는 기호를 연산자라고 한다.

연산자의 종류

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

연산자와 피연산자

3 + 4
a + b
  • 연산자(operator): 연산 기호 - 예) +, -
  • 피연산자(operand): 연산 기호 - 예) 3, 4, a, b

나눗셈 주의

  • 밑에 예시에서 2.5가 나오게 할려면 형변환을 사용해야함
Java
  • 10 / 0 과 같이 0으로 나눌 수가 없다. (수학에서 허용하지 않음)

자바의 문자열 더하기

Java

계산과정

Java

연산자 우선순위 암기법

  • 자바는 연산자 우선순위가 있다. () 괄호가 우선순위가 가장 높고, 마지막의 대입 연산자 = 가 가장 우선순위가 가장 낮다.
  1. 괄호()
  2. 단항 연산자 (예: ++, --, !, ~, new, (type))
  3. 산술 연산자(*, /, % 우선, 그 다음에 +, -)
  4. Shift 연산자(<<, >>, >>>)
  5. 비교 연산자(<, <=, >, >=, instanceof)
  6. 등식 연산자(==, !=)
  7. 비트 연산자(&, ^, |)
  8. 논리 연산자(&&, ||)
  9. 삼항 연산자(? :)
  10. 대입 연산자(=, +=, -=, *=, /=, %= 등등)
  • 우선순위를 잘 이해하는 방법
  1. 상식선에서 우선순위를 생각하자
  • 예) int sum = 1 * 2 * 3
    1. 당연히 + 보다 *이 우선순위가 높다.
    2. 산순연산자가 전부 실행되 이유 = 대입이 된다.
  1. 애매하면 괄호()를 사용하자
  • 같은 식이여도 ()를 사용하여 가시성을 높힌다.

증감연산자

  • 변수 값이 증가되는 과정 ![Pasted image 20231218180419.png](Pasted image 20231218180419.png)

따라서 a = a + 1 경우를 ++a 로 치환할 수 있다.

전위, 후희 증감연산자

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

  • ++a : 증감 연산자들 피연산자 앞에 둘 수 있다. 이것을 앞에 있다고 전위(prefix) 증감 연산자라 한다.

  • a++ : 증감 연산자들 피연산자 뒤에 둘 수 있다. 이것을 앞에 있다고 후위(prefix) 증감 연산자라 한다.

  • 전위 증감 연산자 수행 과정 ![Pasted image 20231218181153.png](Pasted image 20231218181153.png)

  • 후위 증감 연산자 수행 과정 ![Pasted image 20231218181253.png](Pasted image 20231218181253.png)

  • 전위 증감 연산자 코드 동작 과정

Java
  • 후위 증감 연산자 코드 동작 과정
Java

비교연산자

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

  • ==: 동등성 (equal to)

  • !=: 불일치 (not equal to)

  • >: 크다 (equal to)

  • <: 동등성 (equal to)

  • >=: 동등성 (equal to)

  • <=: 작거나 같다 (equal to)

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

  • 문자열을 비교할 때는 ==이 아니라 .equals() 메서드를 사용해야 한다.

  • == 을 사용하면 성공할 때도 있지만 실패할 때도 생기기 때문이다.

  • 문자열 비교 예제

Java

논리 연산자

&&: 두 피연산자가 모두 참이여야 true를 반환한다. 둘 중 하나라도 거짓이면 false를 반환한다. ||: 두 피연산자 중 하나라도 참이면 true를 반환한다. 둘 다 모두 거짓이면 false를 반환한다. !: 피연산자의 논리적 부정을 반환한다. 참이면 거짓을, 거짓이면 참을 반환한다.

  • 주의사항, !a !b는 각각의 논리적 부정을 반환한다.
Java

Synapse Map Insight

int a = 5 int b = 2 // 나눗셈 int div = a / b; System.out.println("a + b " + div); // 이 경우에는 2.5가 나와야하지만 int 형식이기 때문에 0.5가 날라가고 2만 나온다.
// 문자열과 문자열 더하기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; // 이 경우 자바가 자동적으로 숫자 10을 문자로 변환 System.out.println(result3); // 문자열과 숫자 더하기2 int num = 20; String str = "a + b = "; String result4 = str + num; // 이 경우도 마찬가지 System.out.println(result4);
"a + b= "(String) + 10(int) "a + b= "(String) + "10"(int -> String)
a = 1, b = 0 b = ++a a = a + 1 b = a
a = 1, b = 0 b = a++ // a의 값을 먼저 b에 대입 b = 1 b = a a = a + 1 // 이후에 a의 값을 증가 a = 2 결과: a = 2, b = 1
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); System.out.println(result2); System.out.println(result3);
boolean a = true boolean b = false System.out.println(!a); // false System.out.println(!b); // false