연산자와 연산식
- 연산(operations) : 프로그램에서 데이터를 처리하여 결과를 산출하는 것
- 연산자(operator) : 연산에 사용되는 표시나 기호
- 피연산자(operand) : 연산되는 데이터
- 연산식(expressions) : 연산자와 피연산자를 이용한 연산 과정을 기술한 것
- 단항, 이항, 삼항 연산자 순으로 우선순위를 가진다.
- 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 가진다.
- 단항과 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽이다.
- 복잡한 연산식에는 괄호()를 사용해서 우선순위를 정해준다.
- 부호 연산자의 결과는 int 타입이므로, 결과를 산출하는 데이터의 타입을 int 형으로 바꾸어야 한다.
- ++i 의 속도는 i=i+1 보다 연산 속도가 빠르다.
- 후자는 = 연산자, + 연산자의 총 두 번의 연산이 필요하다.
- 전자는 ++ 하나의 연산만 수행한다.
- 하지만 실제로 컴파일하면 동일한 바이트 코드가 생성된다. 때문에 둘 중 어떤 것이 연산 속도가 빠르다고 볼 수는 없다.
- 비트 반전 연산자(~)의 결과는 int 타입이므로, 결과를 산출하는 데이터 타입을 int 형으로 바꾸어야 한다.
- Integer.toBinaryString() : 정수 값을 총 32비트의 이진 문자열로 리턴하는 메소드
- long 타입을 제외한 정수의 산술 연산은 무조건 int 타입으로 변환 후 연산을 수행한다. 그 이유로는 JVM이 기본적으로 32비트 단위의 계산을 하기 때문이다.
- 산술 연산을 하기 전에 피연산자들의 값을 조사해서 오버플로우를 방지하자. 프로그램 실행 도중 예외가 발생하면 실행이 멈추고 프로그램이 종료된다. 이러한 경우 예외 처리를 해야 한다.
- Nan & Infinity 연산
- 아래의 메소드를 사용해 Infinity와 NaN이 산출되면, 다음 연산을 수행하지 않는다.
- Double.isInfinite() 메소드 사용
- Double.isNan() 메소드 사용
- String 타입의 문자열 비교
- strVar1, strVar2 동일한 String 객체의 번지수
- strVar3 객체 생성 연산자인 new로 생성한 새로운 String 객체의 번지수
- == 연산자는 변수에 저장된 값만 비교한다. -> equals() 메소드 사용
String strVar1 = "ABC";
String strVar2 = "ABC";
String strVar3 = new String("ABC");
System.out.println( strVar1 == strVar2); // true
System.out.println( strVar1 == strVar3); // false
System.out.println( strVar1.equals(strVar2)); // true
System.out.println( strVar1.equals(strVar3)); // true
- 비트 연산자
- 데이터를 bit 단위로 연산한다.
- 정수 타입만 비트 연산이 가능하다.
- 비트 논리 연산자(&, |, ^, ~)
- 비트 이동 연산자(<<, >>, >>>)
- 삼항 연산자
- 세개의 피연산자를 필요로 하는 연산자
- ? 앞의 조건식에 따라 콜론(:) 앞 뒤의 피연산자가 선택된다고 해서 조건 연산식이라고 부르기도 한다.
- 조건식 ? 값 또는 연산식(true) : 값 또는 연산식(false)
public class ConditionalOperationExample {
public static void main(String[] args){
int score = 85;
char grade = (score > 90) ? 'A' : ((score > 80) ? 'B' : 'C');
// 첫 번째 조건에서 90보다 작기 때문에 score > 80 으로 이동
// 두 번째 조건에서 80보다 크기 때문에 'B'의 값을 얻게 된다.
System.out.println(score + "점은 " + grade + "등급입니다.");
}
}
'프로그래밍 > JAVA' 카테고리의 다른 글
Ch06. 클래스 (0) | 2022.01.02 |
---|---|
Ch05. 참조 타입 (0) | 2022.01.01 |
Ch04. 조건문과 반복문 (0) | 2022.01.01 |
Ch02. 변수와 타입 (0) | 2022.01.01 |
Ch01. 자바 시작하기 (0) | 2022.01.01 |