Ch03. 연산자
< 03-1 ) 연산자와 연산식 >
- 연산식은 반드시 하나의 값을 산출, 값 대신에 연산식 사용 가능
- *, /, % : 우선순위 동일 → 왼쪽에서 오른쪽 방향으로 연산
100 * 2 / 3 % 5 = 1
- 복잡한 연산식에는 괄호( )를 사용해서 우선순위를 정하자
< 03-2 ) 연산자와 연산식 >
- 단항 연산자 중 부호 연산자 ( +, - )
: + 는 부호 유지 / - 는 부호 반대로 변경
※ 주의 ) 부호 연산자의 결과 = int 타입
→ byte 타입 변수를 부호 연산하면 int타입으로 변환되므로 int 타입 변수에 저장해야 함
- 잘못된 코딩 -
byte b = 100 ;
byte result = -b ; // 컴파일 에러
- 올바른 코딩 -
byte b = 100 ;
int result = -b ;
- 이항 연산자
1. 산술 연산자 ( +, -, *, /, % )
· 특징 : 피연산자들의 타입이 동일하지 않을 경우, 피연산자들의 타입을 일치시킨 후 연산 수행
① 피연산자들이 byte, short, char 타입일 경우, 모두 int 타입으로 변환된 후 연산 수행
② 피연산자들이 모두 정수 타입이고 long 타입이 포함되어 있을 경우, 모두 long 타입으로 변환 후 연산 수행
③ 피연산자 중 실수 타입 ( float, double )이 있을 경우, 허용 범위가 큰 실수 타입으로 변환된 후 연산 수행
byte byte1 = 1;
byte byte2 = 1;
byte byte3 = byte1 + byte2; // 모든 피연산자가 int타입이므로 연산 결과도 int 타입
int result = byte1 + byte2 ; // 올바른 코딩
int int1 = 10;
int int2 = 4;
int result1 = int1 / int2 ; // 출력 결과 : 2
double result2 = int1 / int2 ; // 출력 결과 : 2.5가 아닌 2.0
// 2.5의 결과를 얻으려면, int1, int2 중 하나를 double 타입으로 강제 타입 변환시킨 후 산술 연산하기
double result3 = (double) int1 / int2 ;
char c1 = 'A' + 1; // char c1 = 66; 으로 컴파일됨
char c2 = 'A';
// char c3 = c2 + 1 ;
// char 변수가 산술 연산에 사용 시, int 타입으로 변환되므로 결과도 int 타입
- 올바른 코딩 -
char c3 = (char) ( c2 + 1 ) ; // char 타입으로 강제 타입 변환
2. 문자열 결합 연산자
· 문자열과 숫자가 혼합된 + 연산식 : 왼쪽에서 오른쪽으로 연산 진행
"JDK" + 3 + 3.0 ; // 출력 결과 : JDK33.0
3 + 3.0 + "JDK" ; // 출력 결과 : 6.0JDK
3. 비교 연산자
· 연산을 수행하기 전에 피연산자의 타입을 일치시킴
예외 )
0.1 == 0.1f
→ double 타입으로 변환 시, 0.1 == 0.1로 true가 산출될 거로 예상되지만 false!
∵ 실수의 저장 방식인 부동 소수점 방식이 0.1을 정확히 표현할 수 없기 때문
0.1f = 0.1의 근사값인 0.10000000149011612로 표현되므로 0.1보다 큰 값
· 부동 소수점이란?
글을 봐도 이해가 확 와닿지는 않네.. 질문하자
- 삼항 연산자
( 조건식 ) ? A : B
: 조건이 true이면, A 산출 / false이면, B 산출
→ if문으로 변경해서 작성할 수 있지만, 한 줄로 간단하게 작성 시 효율적
Ch04. 조건문과 반복문
< 04-1 ) 조건문 : if문, switch문 >
- switch문
if문 : 조건식의 결과가 true, false 두 가지 밖에 없으므로, 경우의 수가 많아질수록 else-if를 반복적으로 추가해서 복잡해짐
→ switch문은 변수의 값에 따라 실행문이 결정되므로 코드 간결
switch ( 변수 ) {
case 값1 :
실행문 A
break;
case 값2 :
실행문 B
break;
default :
실행문 C
}
괄호 안의 변수 값과 동일한 값을 갖는 case로 가서 실행문 실행함 / default 값은 생략 가능
'백엔드 > JAVA' 카테고리의 다른 글
가위, 바위, 보 게임 구현하기 예제 실습 (0) | 2023.05.02 |
---|---|
기본 계산기 만들기 예제 실습 (0) | 2023.05.01 |
1주차 수업내용 정리 및 주사위 게임 예제 실습 (0) | 2023.04.28 |
STS 환경설정 및 프로젝트 생성과 예제 실습 (0) | 2023.04.27 |
Java의 기본 구조 (0) | 2023.04.26 |