연산자의 종류: 단항, 이항, 삼항
ㅇ단항 연산자 : 피연산자가 하나 / 부호연산자, 증감연산자, 논리 부정 연산자(!)
ㄴ부호 연산자: 정수or실수타입 변수에도 사용 가능, 부호연산자 결과는 int라는 거 유의!
그래서 컴파일 에러---> byte b = 100; byte result = -b; int여야한다.
ㄴ증감 연산자: 주의할 점 -> 증감 연산자가 변수 뒤에 있으면 '다른 연산자 먼저' 처리. 앞에 있으면 증감 후 다른 연산자 처리, 예를 들어서
int x = 1; int y = 1;
int result1 = ++x + 10; int result2 = y++ + 10;
result1) x=2된 후에 result1= 12됨
result2) result2= 11된 후에 y=2됨
cf) ++i와 i=i+1의 연산속도 차이는 없다고 한다. 생성되는 바이트코드도 동일하다.
논리 부정 연산자
ㄴ실행 흐름의 제어 / 토글 기능의 구현시 사용.
*toggle : 참과 거짓을 번갈아가며 변경함.
ㅇ이항 연산자
ㄴ산술 연산자 (5가지)
특징: 피연산자들의 타입이 동일하지 않을 경우 타입을 일치시킨다.
째꼬만 타입들은 int로 일치시키고
long타입 있으면 모두 long타입으로 변환 후 연산한다.
실수타입이 있으면 그걸로 변환한다. (더 큰 범위인 걸로)
int int1 = 10; int int2 = 4;
int result2 = int1 / int2;
double result3 = int1 / int2;
result2는 2고 result3은 2.0 넵넵 오케이
2.5만들기
double result3 = (int1*1.0) / int2;
double result3 = (double)int1 / int2;
등등..
cf) 변수는 메모리 위치고, 값은 바꿀 수 있음
리터럴은 값을 말한다.
ㅇ비교 연산자
ㄴ비교연산자에서도 연산 수행 전 피연산자의 타입을 일치시킨다.
ㄴ한 가지 예외: float과 double의 비교 연산.
0.1 == 0.1f --> false
이유: 실수 저장 방식인 부동 소수점 방식이 0.1을 정확히 표현 불가능.
0.1은 0.1의 근사값인 0.10000000149011612로 표현된다고 한다. 0.1보다 큰 값이다.
true로 나오려면 캐스팅해서 비교해야 한다.
ㅇ
기본 타입 변수 비교시에는 ==연산자를 사용하지만
참조 타입인 String 변수 비교시에는 equals() 메소드 사용한다. (5장에서 참조타입 설명 예정)
ㅇ논리 연산자
ㄴ AND(&&) OR(||) XOR(^) NOT(!)
ㄴ &&와 &의 산출 결과는 같지만, 전자가 더 효율적. (앞이 false면 뒤는 보지 않고 f인게 &&)
ㄴ||와 |도 위와 마찬가지다. (앞이 t면 뒤는 보지 않고 t)
대입연산자
가장 낮은 연산순위.
삼항연산자
(조건식(피연산자1))? (피연산자2) : (피연산자3)
t면 앞꺼 f면 뒤
ㄴ삼항연산자는 if문으로 변경해서 작성 가능 but 간결하게 쓰려면 삼항 연산자가 효율적
확인문제
1. b변수의 타입은 byte라서 -b가 불가능하다. //부호연산을 하므로 결과는 int타입이 됨.
2. 결과 31 (y = 19)
3. !stop
4.
(1) pencils / students
(2) pencils % students
5. 3번째줄 --> double var3 = (double)var1/ var2;
6. (int)(value * 0.01 * 100) <<--이거 아니자나 아니 휴우 머하냐 너 저건 걍 356이지 미쳣나
// value / 100 * 100 -->value는 int니까 어차피 /100하면 int연산
7. 2번째줄 변수 var2는 float타입이다. 그래서 세번째줄의 조건문을 var2 == 0.1f로 바꿔주어야 한다.
//float타입 0.1f는 정확히 0.1이 아니기 때문
8. (double)(lengthTop + lengthBottom) * height / 2;
//(lengthTop + lengthBottom) * height / 2.0;
9.
휴.. 글고 double이니까 0.0만 고려해도 됐자나....
다시 다지우고 써보기
집중 집중 ㅠ0ㅠ
ㅇ비교연산자 파악 잘하기
ㅇ변수타입 잘 파악하기
10.
double var4 = var1*var1*(Double.parseDouble(var2+"."+var3));
11.
(1) name == "java" name.equals("java") ㅠㅠ문자열..메서드.. 각인!!!
(2) password == 12345
12. T / F
13.
value += 10;
value -= 10;
value *= 10;
value /= 10;
14. 가
오늘 넘 많이 틀렸다 빨리 많이 익숙해지고 자연스러워지게 보자
'JAVA' 카테고리의 다른 글
[혼자 공부하는 자바] 7/02 05-1 참조타입 (0) | 2020.07.02 |
---|---|
[혼자 공부하는 자바] 7/02 04 조건문과 반복문 (0) | 2020.06.30 |
[혼자 공부하는 자바] 6/28 02-4 변수와 시스템 입출력 (0) | 2020.06.28 |
[혼자 공부하는 자바] 6/28 02-3 형변환 (0) | 2020.06.28 |
[혼자 공부하는 자바] 6/28 01-1 ~ 02-2 (0) | 2020.06.28 |