자바의 기초: 자바의 계산 처리와 조건
5장: 계산을 하고 싶어요
연산자(Operator)
- String이라는 클래스만 + 연산이 가능
- / 연산을 할 때 타입이 double 혹은 float일 경우에만 소수형으로 출력됌
산술연산자(Arithmetic Operator)
- +: 더하기 연산자(additive operator)
- -: 빼기 연산자(subtraction operator)
- *: 곱하기 연산자(multiplication operator)
- /: 나누기 연산자(division operator)
- %: 나머지 연산자(remainder operator)
대입연산자(Compound Assignment Operator)
- += : 기존 값에 우측 항의 값을 더함
- -= : 기존 값에 우측 항의 값을 뺌
- *= : 기존 값에 우측 항의 값을 곱함
- /= : 기존 값을 우측 항의 값으로 나눔
- %= : 기존 값을 우측 항의 값으로 나눈 나머지
단항 연산자
- 피연산자가 하나인 것(한 개의 값을 처리하는 것)
- ex. + or - 앞에 아무런 변수나 숫자가 없다면 단항 연산자로 분류
- +: 단항 플러스 연산자 (Unary plus operator)
- -:단항 마이너스 연산자(Unary minus operator)
- ++:증가 연산자(Increment operator)
- –:감소 연산자(Decrement operator)
- !:논리 부정 연산자(Logical complement operator)
+, -
- +: 양수
- -: 음수
++, –
- ++: 1만큼 증가
- –: 1만큼 감소
- ++, –는 변수의 앞 혹은 뒤에 붙을 수 있음
- =이 없이 0이나 5와 같은 숫자가 아닌 변수에만 사용 가능
- ++를 뒤에 붙이면 변수를 참조한 후에 1을 더 함
!
- boolean 타입에서만 사용 가능
- ex. boolean flag = true
- ex. !flag (=false)
연산 우선순위
- ( ) 소괄호 사용
연산자의 우선순위
- 우선순위 1. 단항 연산자: ++, –, +, -, !, ~
- 우선순위 2. 산술 연산자: *, /, %
- 우선순위 3. 산술연산자: +, -
~(틸드)
- 2진수로 되어 있는 비트 값을 거꾸로 바꾸는데 사용
- 비트 값의 0을 1로, 1을 0으로 바꿈
비교연산자
- 왼쪽 값과 오른쪽 값을 비교하는데 사용
모든 비교 연산자의 결과는 반드시 boolean이다
- ==: 같음(equal to)
- !=: 같지 않음(not equal to)
>: (왼쪽 값이) 큼(greater than)
>=: (왼쪽 값이) 같거나 큼(greater than or equal to)
- <:(왼쪽 값이) 작음(less than)
- <=:(왼쪽 값이) 같거나 작음(less than or equal to)
등가 비교 연산자(Equality Operator)
- 기본자료형과 참조자료형에서 사용 가능
기본 자료형은 같은 종류끼리 비교 가능
-
참조자료형은 그 주소 값이 같은지 확인한다
- ==:두 개의 값이 같으면 true
- !=:두 개의 값이 다르면 true
대소 비교 연산자(Relational Operator)
boolean이나 참조 자료형에서는 사용 불가
- 식(두 기호의 순서 주의): true 조건
- a<b: a가 b보다 작을 때
- a>b: a가 b보다 클 때
- a<=b: a가 b와 같거나, b보다 작을 때
- a>=b: a가 b와 같거나, b보다 클 때
논리 연산자(Conditional Operator)
- 조건 연산자로서
공백이 있으면 안됌
- &&: AND 결합(Conditoinal AND)
||: OR 결합(Conditional OR)
삼항 연산자(Conditional Operator?:)
변수 = (boolean 조건식) ? true일때 값 : false일때 값;
- 장점: 어떤 변수에 값을 할당할 때 조건이 있는 문장을 한 줄로 처리 가능
- 단정: 삼항 연산자보다 if 문장을 사용하는 것이 가독성이 더 좋다
형 변환(Casting)
- 서로 다른 타입 사이에 변환하는 작업을 하는 것
- 괄호로 묶어 줌
- boolean 은 형변환이 불가
- 기본자료형→참조자료형 혹은 그 반대의 경우도 불가
- 숫자 값을 참조 자료형으로 변경은 가능
범위가 큰 타입에서 작은 타입으로 변환할 때는 소괄호 안에 볌위가 작은 타입을 명시해주어야 한다
- 변환할 때 앞의 1바이트는 버린다
타입별 사용 가능한 연산자
- 책 참고 p.123
참고
- instanceof: 자바의 예약어 및 연산자
- 비트 연산을 하는 7개의 연산자
- 연산의 순서를 위해 소괄호 사용은 추천
- 허나, 소괄호 4개 이상 사용하지 않는게 좋음
6장: 제가 조건을 좀 따져요
if
if(boolean값) 처리문장;
if(boolean값){
처리문장1;
처리문장2;
...}
if~else
if(boolean값) 처리문장1;
else 처리문장2;
if(boolean값) {
처리문장1;
처리문장2;
...;
} else {
처리문장1;
처리문장2;
....;
}
if~else if~else
if(boolean값1) A;
else if(boolean값2) B;
else C;
- 같은 의미:
결과값 = boolean값1 ? "A" : boolean값2 ? "B" : "C";
&&와 ||
- &&은 첫 조건이 false면 두 번째 조건은 무시
||
은 첫 조건이 true면 두 번째 조건은 무시- &&와
||
을 조건식에서 함께 사용할 경우 먼저 계산할 조건에 ()을 사용
switch
- 하나의 값이 여러 범위 걸쳐 비교되어야 할 때 사용
switch(비교대상변수){ case 점검값1; 처리문장1; ... break; case 점검값2; 처리문장2; ... break; ... default: 기본처리문장; ... break; }
- default: 앞에 있는 조건에 맞지 않는 경우에 수행
무조건 실행이 아니다
- 비교대상변수는
long을 제외한 정수형과 몇몇 특별한 타입만 가능
반복문
- 지정한 횟수만큼 반복하거나 조건에 맞을 떄까지 반복하는 문장
- for 루프
- while문
while
while(boolean조건){
처리문장;
...
}
while(boolean조건){
처리문장;
...
if(조건) break;
}
while(boolean조건){
처리문장1;
...
if(조건) continue;
처리문장2;
}
- break; 현재 수행중인 중괄호에서 빠져나간다
- continue; 그 뒤에 있는 문장(처리문장2)은 건너뛰고 “boolean” 조건 점검 부분으로 다시 가라
무한루프(Infinite loop)
- 해당 반복문이 빠져나갈 수 없는 경우 자바 프로세스가 멈출 때까지 계속 반복
- 서비스가 장애로 연결될 가능성이 있음
do ~ while vs while
- do ~ while문은 적어도 한 번은 반복문장이 실행됌
- while문은 조건에 한 번도 맞지 않으면 한 번도 실행되지 않음
for
for (초기화; 종료조건; 조건 값 증가){
반복문장
}
label
- 예약어
- 두 개 이상의 for나 while 루프가 있을 때 사용
참고
- 어떤 문장이든 세미콜론(;)만 있으면 컴파일/실행이 정상적으로 가능
- 코드는 가독성이 좋아야 한다
- 중괄호{ }를 잘 사용하자!
- switch구문은 숫자 비교시에 적은 숫자부터 증가시켜 가자
책 정보
- 책제목: 자바의 신 1
- 지은이: 이상민
- 출판사: 로드북
댓글남기기