연산자 종류
- 산술연산자: + , - , * , / , % (나머지연산자)
- 증감(증가 및 감소) 연산자: ++ , --
- 비교연산자: == , != , > , < , >= , <=
- 논리 연산자: && (AND), || , !
- 대입연산자: = , += , -= , *=
- 삼항 연산자: ? :
연산자와 피연산자
3 + 4
a + b
- 연산자: 연산 기호(+, -)
- 피연산자: 연산 대상(3, 4, a, b)
1. 산술연산자
산술 연산자는 주로 숫자를 계산하는 데 사용된다. 우리가 이미 잘 알고 있는 수학 연산을 수행한다.
- + (더하기)
- - (빼기)
- * (곱하기)
- / (나누기)
- % (나머지)
주의사항!
1. 자바에서 같은 int형끼리 계산하면 계산 결과도 같은 int형을 사용한다. int형은 정수이기 떄문에 소수점 이하를 포함할 수 없다. ex) 5 /2 -> 2.5가 되어야 하지만 결과는 소수점이 제거된 2이다.
2. 0으로 나눌 수 없다.
문자열 더하기
- 자바는 특별하게 문자열에 + 연산자를 사용하면 두 문자를 연결할 수 있다
1. 문자열 + 문자열
String result1 = "hello " + "world" "hello "
문자열과 "world" 문자열을 더해서 "hello world" 문자열을 만든다.
2. 문자열 + 숫자
- 자바에서 문자와 숫자를 더하면 숫자를 문자열로 변경한 다음에 서로 더한다
- "a + b = " + 10
- 문자: "a+b="
- 숫자: 10
"a + b = "(String) + 10(int) //문자열과 숫자 더하기
"a + b = "(String) + "10"(int -> String) //숫자를 문자열로 변경
"a + b = " + "10" //문자열과 문자열 더하기
"a + b = 10" //결과
연산자 우선순위
1. 상식선에서 우선순위 사용
→ 덧셈, 뺄셈보다 곱셈이 우선순위가 높다., 괄호가 가장 높다 정도만 이용
2. 애매하면 괄호() 사용하기
→ 연산자 우선 순위가 애매하면 괄호를 사용하여 우선순위를 명시적으로 지정
2. 증감 연산자
- ++, -- 를 사용
- 변수의 값을 1만큼 증가시키거나 감소시킴
전위,후위 증감연산자
증감연산자는 피연산자 앞에 두거나 뒤에 둘 수 있으며, 연산자의 위치에 따라 연산이 수행되는 시점이 달라짐
- ++a : 연산이 진행되기 전 증감연산이 먼저 수행됨. 이것을 앞에 있다고 해서 전위(Prefix) 증감 연산자라 한다.
- a++ : 다른연산이 진행된 후 증감연산이 수행됨. 이것을 뒤에 있다고 해서 후위(Postfix) 증감 연산자라 한다.
3. 비교 연산자
- == : 동등성 (equal to)
- != : 불일치 (not equal to)
- > : 크다 (greater than)
- < : 작다 (less than)
- >= : 크거나 같다 (greater than or equal to)
- <= : 작거나 같다 (less than or equal to)
- 비교 연산자를 사용하면 참( true ) 또는 거짓( false )으로 결과값이 나온다. 이때 boolean 형을 사용한다.
문자열 비교
문자열 비교는 ==이 아니라 .equals() 메서드 사용
4. 논리 연산자
- boolean형인 true,false 비교하는데 사용
- 논리 연산자
- && (그리고) : 두 피연산자가 모두 true면 참을 반환, 둘중 하나라도 false면 false를 반환
- || (또는) : 두 피연산자 중 하나라도 true면 참을 반환, 둘다 false면 false을 반환
- ! (부정) : 피연산자의 논리를 반대로 반환 → 즉, true면 false를, false면 true를 반환
논리연산자 활용
boolean result = a > 10 && a < 20; //(a > 10) && (a < 20)
-> boolean result = 10 < a && a < 20;
범위를 나타내는 경우 이렇게 작성하면 코드를 조금 더 읽기 좋다.
대입 연산자
- 대입 연산자(=)는 값을 변수에 할당하는 연산자다.
- 축약(복합)대입 연산자
- 산술 연산자와 대입 연산자를 한번에 축약해서 사용
- 연산자 종류: += , -= , *= , /= , %=
- 이 연산자는 연산과 대입을 한번에 축약해서 처리한다. 다음 왼쪽과 오른쪽의 결과는 같다.
i = i + 3 → i += 3
i = i * 4 → i *= 4
배운점
다양한 연산자의 종류에 대해 알게 되었고, 연산자의 우선순위 2가지만 잘 기억하고 있으면 될것 같다.
문자열비교에서 == 이 아닌 .equals()를 사용해야 되는 이유를 찾아본 결과
String은 참조형이기 때문에 ==은 객체의 메모리 주소를 비교한다.
그렇기 때문에 우리가 원하는 값을 비교하고 싶다면 equals 메소드를 사용해서 비교해야한다.
- 정리-
원시데이터 타입인 boolean, byte, char, short, int, long, float, double (8개)는 메모리(stack)에 공간이 할당되며
그 공간에 실제 값이 들어가게 된다.
따라서 == 연산자로 비교하게 되면 가리키는 값을 토대로 비교하게 된다.
원시데이터 타입이 아닌 클래스들은 new 키워드를 통한 인스턴스가 만들어지는 시점에서 또 다른 메모리 구역(heap)에 새로운 공간을 할당하여 값을 저장하고 변수는 그 값이 저장된 메모리 주소를 가리키게 된다.
따라서 ==연산자를 이용할 경우 그 메모리 주소를 비교하게 된다.
'코딩' 카테고리의 다른 글
[ Java ] 자바-입문 6. 스코프,형변환 (0) | 2024.02.05 |
---|---|
[ Java ] 자바-입문 5. 반복문 (1) | 2024.02.05 |
[ Java ] 자바-입문 4. 조건문 (1) | 2024.02.03 |
[ Java ] 자바-입문 (변수 선언, 초기화, 명명 규칙) (0) | 2024.02.01 |
[ Java ] 자바-입문 초보자를 위한 자바 프로그래밍: 포괄적 가이드 (5) | 2024.01.31 |