✓ 증감연산자 (++, --)
i++
++i
위 둘은 기본적으로 i = i + 1 이라는 점에서 동일하지만 다른 연산자와 사용될 때는 증감 연산자의 위치에 따라 결과가 다르게 나온다❗️
- 증감 연산자가 변수 앞에 있을 경우 (++i, --i) : 우선 변수값을 1증가 또는 1감소시킨 후에 다른 연산자를 처리
- 증감 연산자가 변수 뒤에 있을 경우 (i++, i--): 다른 연산자를 먼저 처리한 후 변수 값을 1증가 또는 1 감소시킴
int x = 1;
int y = 1;
int result1 = ++x + 10; // 12
int result2 = y++ + 10; // 11
result1 | result2 | |
① | x의 값 1 증가 (x = x + 1) | y + 10 연산 (1 + 10) |
② | x + 10 연산 (2 + 10) | result2 = 11 |
③ | result1 = 12 | y의 값 1 증가 (y = y + 1) |
✓ 산술 연산자 (+, -, *, /, %)
- long 타입을 제외한 정수 타입 연산은 int 타입으로 산출
- 피연산자 중 하나라도 실수 타입이면 실수 타입으로 산출
- char변수를 산술 연산에 사용되면 int 타입으로 변환됨
int int1 = 10;
int int2 = 4;
int result2 = int1 / int2; // 2
double result3 = int1 / int2; // 2.0
//결과값으로 2.5를 얻으려면 둘 중 하나를 double 타입으로 강제 타입 변환 해야 함
double result4 = (int1 * 1.0) / int2;
double result5 = (double) int1 / int2;
double result6 = int1 / (double) int2;
✓ 실수와 비교 연산자 (==, !=)
❗️ 0.1 == 0.1f 이 false 이유
실수의 저장 방식인 부동 소수점 방식이 0.1을 정확히 표현할 수 없기 때문이다. ( 0.1f > 0.1 ) 이를 해결하기 위해 다음과 같이 할 수 있다.
double v1 = 0.1;
float v2 = 0.1f;
System.out.println(v1 == v2); //false
System.out.println((float)v1 == v2); //true
✓ 논리 연산자와 대입연산자
- 논리연산자 종류: AND( && ), OR( || ), XOR( ^ ), NOT( ! )
- 대입연산자 종류: +=, -=, *=, /=, %=
✓ 삼항 연산자
[조건식] ? [값 또는 연산식1] : [값 또는 연산식2]
조건식이 true일 경우 [값 또는 연산식1]이 실행
조건식이 false일 경우 [값 또는 연산식2]가 실행됨
✅ 연습문제 답 비교
나의 해결방법:
public class ScannerExample {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.print("첫 번째 수: ");
String num1 = scanner.nextLine();
System.out.print("두 번째 수: ");
String num2 = scanner.nextLine();
System.out.println("----------------------");
String result = (num2.equals("0") || num2.equals("0.0")) ? "무한대": String.valueOf(Integer.parseInt(num1) + Integer.parseInt(num2));
System.out.println("결과: " + result);
}
}
답안지의 해결방법:
public class ScannerExample {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.print("첫 번째 수: ");
double num1 = Double.parseDouble(scanner.nextLine());
System.out.print("두 번째 수: ");
double num2 = Double.parseDouble(scanner.nextLine());
System.out.println("----------------------");
if(num2 != 0.0) {
System.out.println("결과: " + (num1 + num2));
} else {
System.out.println("결과: 무한대");
}
}
}
나의 해결방법은 문자열 비교로 처리하고 있기 때문에 정수 값에 제한이 있고 소수점 이하의 값을 정확하게 처리할 수 없다는 단점이 있다. 따라서 정수 값으로 충분한 경우나 문자열 비교에 익숙한 경우에 적합하며, 정확한 실수 연산이 필요한 경우에는 유용하지 않다.
'컴퓨터 & 코딩 > Java' 카테고리의 다른 글
[혼공학습단 10기][혼공자] 참조 타입과 참조 변수, 배열, 열거타입 (0) | 2023.06.30 |
---|---|
[혼공학습단 10기][혼공자] switch 조건문과 반복문 (0) | 2023.06.29 |
[혼공학습단 10기][혼공자] 변수와 시스템 입출력 (0) | 2023.06.29 |
[혼공학습단 10기][혼공자] 타입 변환 (0) | 2023.06.28 |
[혼공학습단 10기][혼공자] 변수와 기본 타입 (0) | 2023.06.28 |