<목차>
1. 다양한 연산자에 대해 학습&사용
2. 조건문과 반복문을 통해 프로그램의 문맥 구성
연산자
변수, 상수 계산
-변수 상수를 계산하기 위해 연산자를 사용
<연산자와 피연산자>
-연산자 : 덧셈, 뺄셈처럼 계산할 기호
-피연산자 : 연산자로 인해 계산되는 숫자
---계산할 때 계산의 대상이 되는 것이 피연산자, 계산의 목적이 되는 것이 연산자
<연산자 종류>
산술 연산자 | +, -, *, /, %, <<, >> | 사칙연산과 비트연산 |
비교 연산자 | >, <, >=, <=, ==, != | 크고 작음과 같고 다름을 비교 |
논리 연산자 | &&, ||, ! | 그리고(And)와 또는(or)으로 조건을 연결 |
대입 연산자 | =, ++, -- | 우변의 값을 좌변에 저장, 연산 복합 대입 |
기타 연산자 | (type), ? :, instance of | 형변환 연산자, 삼항연삼자, instance of 연산자 |
*산술 연산자
-사칙 연산 및 비트 연산을 포함
-사칙 연산을 계산한 결과값을 응답
- +(덧셈), -(뺄셈), /(나눗셈, 몫), *(곱), %(나눗셈의 나머지)
*비교 연산자
-값이 크다/작다를 비교하거나 같다/ 다르다 를 비교하여 참(true)/ 거짓(false) 값인 boolean 값을 출력
- >(크다), <(작다), >=(크거나 같다), <=(작거나 같다), ==(같다), !=(다르다)
*논리 연산자
-비교 연산의 결과값으로 받을 수 있는 boolean 값을 연결하는 연산자
-조건을 연결하였을 때의 boolean 값들을 조합하여 참(true)/ 거짓(false) 값인 boolean 값을 출력
- &&(And = 피연산자 모두 참), ||(OR = 피연산자 둘 중 하나라도 참), !(피연산자의 반대 boolean 값)
*대입 연산자
-변수를 바로 연산해서 그 자리에서 저장하는 연산자
-기본 대입 연산자인 =와 다른 연산을 함께 쓰는 복합 대입 연산자가 있다.
- +=, -=, *=, ...
-복합 대입 연산자는 기본 대입 연산자를 심플하게 작성해주는 것이지 기능은 같다.
-추가로 += 1 은 ++와 동일(피연산자에 1 더해주기)
*대입 연산자 중 증감 연산자 쓸 때 주의할 점*
연산자 | 연산자 위치 | 기능 | 연산 예 |
++ | ++ 피연산자 | 연산 전에 피연산자에 1 더해준다 | val = ++num; num+1 = val |
++ | 피연산자 ++ | 연산 후에 피연산자에 1 더해준다 | val = num++; num=val ->num+1 |
-- | -- 피연산자 | 연산 전에 피연산자에 1 빼준다 | val = --num; num-1 = val |
-- | 피연산자 -- | 연산 후에 피연산자에 1 빼준다 | val = num--; num=val -> num-1 |
*기타 연산자
1. 형변환 연산자
-괄호 안에 변환할 타입을 넣으면 피연산자의 타입이 변경
int intNumber = 93 + (int)98.8;
2. 삼항 연산자
-비교 연산의 결과값에 따라 응답할 값을 직접 지정할 수 있는 연산자
-삼항 연산자는 3가지 피연산자가 존재하여 삼항 연산자라고 함
-3가지 피연산자 : 조건, 참결과, 거짓결과
(조건) ? (참결과) : (거짓결과)
int x = 1;
int y = 9;
boolean b = (x == y) ? true : false;
3. instance of 연산자
-class 관련 내용, 3주차에 배움
-피연산자가 조건에 명시된 클래스의 객체인지 비교하여 참/ 거짓을 응답해주는 연산자
(객체명) instance of (클래스명)
<연산자 우선순위>
-산술 > 비교> 논리> 대입
-연산자 여러개가 함께 있는 연산을 계산할때는 우선순위가 있음
-우선순위에 따라 최종적인 응답 값이 결정
-단, 괄호로 감싸주면 괄호 안의 연산이 최우선 순위로 계산됨
int x = 2;
int y = 9;
int z = 10;
boolean result = x<y && y<z;//true && true
System.out.println(result);
result = x + 2 * 3 > y;
System.out.println(result);
<산술 변환>
-연산 전에 피연산자의 타입을 일치시키는 것
-두 피연산자의 타입을 같게 일치시킨다
-피연산자의 타입이 int 보다 작은 short 타입이면 int로 변환
-피연산자의 타입이 long 보다 작은 int, short 타입이면 long으로 변환
-피연산자의 타입이 float 보다 작은 long, int, short 타입이면 float으로 변환
-피연산자의 타입이 double 보다 작은 float, long, int, short 타입이면 double으로 변환
-변수 여러개를 연산했을 때 결과값은 피연산자 중 표현범위가 가장 큰 변수 타입을 가지게 된다.
<비트연산>
-Byte를 8등분한게 Bit
-Bit는 0,1 둘 중의 하나의 값만을 저장하는 컴퓨터가 저장(표현) 가능한 가장 작은 단위
-컴퓨터의 가장 작은 단위인 bit이기 때문에 연산 중에서 bit 연산이 제일 빠름
-이전에 배운대로 0,1 값으로 산술연산을 하거나, 비교연산을 할 수 있지만 비트 연산을 통해 자리수를 옮길 수도 있음
-이처럼 bit 자리수를 옮기는 것을 비트연산이라고 함
- '<<'(왼쪽으로 자리수 옮기기), '>>'(오른쪽으로 자리수 옮기기)
-0,1 은 2진수 값이기 때문에,
---자리수를 왼쪽으로 옮기는 횟수만큼 2의 배수로 곱셈이 연산되는것과 동일
---자리수를 오른쪽으로 옮기는 횟수만큼 2의 배수로 나눗셈이 연산되는 것과 동일
-1010 -> 0101 10->5
문맥 만들기
조건문, 반복문
<조건문: 만약에 - if, switch>
-java 프로그래밍에서 특정 조건에 따라 다른 연산을 수행하고 싶을 때 사용
-조건이 만족하면 연산을 수행해라
1. if 문
*if(조건)
-특정 조건에 따라 다른 연산을 수행하고 싶을 때 사용하는 문맥
-기본적인 조건에 따른 연산을 수행하기 위해 사용
if(조건){
연산;
}
-if의 (소괄호)안의 조건이 boolean 값 true를 만족하면 {중괄호} 안의 연산을 수행
*if(조건)-else
-if문 조건이 거짓일 경우에 다른 연산을 수행하기 위해 사용
if(조건){
연산;
} else {
연산;
}
-if의 (소괄호) 안의 조건이 boolean 값 false를 만족하면 else의 {중괄호} 안의 연산을 수행
*if(조건)-else if(조건)
-if문 조건이 거짓일 경우에 다시 한번 다른 조건으로 체크해서 참일 경우에 연산을 수행하기 위해 사용
if(조건){
연산;
} else if(조건2){
연산;
} else{
연산;
}
-else if 의 (소괄호) 안의 조건이 boolean 값 true를 만족하면 else if의 {중괄호} 안의 연산을 수행
*중첩 if(조건)
-if 문에 else, else if 로 해결할 수 없는 복잡한 조건이 있을 때 사용
-중첩해서 if 문 또는 else if 문 또는 else 문 안에 if문을 넣을 수 있음
if(조건1){
if(조건2){
연산;
} else if(조건3){
연산;
}
} else {
if(조건2) {
연산;
} else if(조건3) {
연산;
}
}
2. switch-case 문
-switch(피연산자)/ case(조건)
-switch 문은 case 문과 함께 사용하며, if문 보다 가독성이 좋은 조건문 표현식
switch(피연산자) {
case(조건): 연산
}
-switch 피연산자가 case 조건을 만족하면 case: 뒤에 명시되어 있는 연산을 수행
-case(조건) : 연산은 여러개 설정 가능
switch(피연산자) {
case 1 : 연산;
break;
case 2 : 연산;
break;
case 3 : 연산;
break;
......
case : 연산;
break;
default (조건) : 연산; //생략가능
}
---단, 각 case의 연산문 마지막에는 break;를 꼭 넣어줘야함
---break; 문은 해당 case의 연산문이 끝났다는 것을 알려줘 switch 문을 종료시켜줌
---만약, case의 연산문 마지막에 break;를 넣지 않는다면, case의 연산문이 안끝났기 때문에 switch 문 블럭이 끝날때까지 전부 실행
-swich문 중괄호 안의 제일 마지막에 default:(연산)을 명시해주어 case 조건들이 모두 만족하지 않을 때 수행할 연산을 정해줘야함
---default: (연산)은 아무것도 만족하지 않을 때 수행하는 것이라, 없다면 생략 가능
*if문 vs switch문
차이점1. 복합 조건
-if문은 복합 조건을 지원
---복합조건: 괄호 안에 조건 여러개를 지정하여 조건문을 수행할 수 있음
-switch 문은 피연산자 한개에 대한 조건만 지원
차이점2. 코드 중복
-if문은 상대적으로 코드 중복이 많음
-switch문은 코드 중복이 적음
<반복문: 계속 - for, while, do-while>
-java 프로그래밍에서 특정 조건에 따라 반복해서 동일한 연산을 수행하고 싶을 때 사용
-조건이 만족할 동안 연산을 반복해라
-반복= 끊지 않을때까지 계속 -> 잘못되면 영원히 무한루프! 주의해야함
1. for 문
-특정 조건에 따라 연산을 반복해서 수행하고 싶을 때 사용하는 문맥
for (초기값; 조건문; 증가연산) {
연산;
}
-특정 조건은 초기값과 조건문을 통해서 정의
-반복할 때 마다 값을 증가시키려면 증가연산을 정의
-초기값이 조건문을 만족할 때까지 연산을 수행하면서 회차마다 증가연산을 수행
2. 향상된 for 문
-for 소괄호 안에 값이 3개나 들어가기 때문에 이걸 2개로 줄여주는 방법이 향상된 for 문
-향상된 for 문은 연속된 변수 목록을 출력할 때 쓰임
for (변수타입 변수명 : 목록변수) {
연산;
}
-변수 타입과 변수 명은 for문 안에서 연산을 수행할 변수를 정의
-목록변수는 값 여러개를 하나의 변수로 저장하고 싶을 때 사용
---목록 변수는 "배열"이라고 부름
3. while 문, do-while 문
-for문과 동일하게 특정 조건에 따라 연산을 반복해서 수행하고 싶을 때 사용하는 문맥
---단, 초기값 없이 조건문만 명시하여 반복
while(조건문) {
연산;
}
-while 문으로 사용하면 조건문을 만족해야지만 연산이 반복 수행됨
-한번 반복할 때마다 조건문을 체크해서 조건문이 불만족(false)이면 반복을 중단
*do-while문
do {
연산;
} while(조건문);
-do-while문으로 사용하면 최초 1회 연산 수행 후 조건문을 체크하여 더 반복할지 결정
---반복하게 된다면 그 이후에는 한번 반복할때마다 조건문을 체크해서 조건문이 불만족(false)이면 반복을 중단
4. break 명령
-break; 명령을 호출하면 가장 가까운 블럭의 for문 또는 while 문, switch문 을 중단
-반복문 안에서 break; 형태로 사용
출력
i:0 //바깥 반복문부터 수행 시작
j:0. //안쪽 반복문 1회차 수행
j:1
j:2. //j가 2일때 안쪽 반복문 종료
i:1 //바깥 반복문은 아직 조건 만족이 안되서 break; 호출이 되지않았기 때문에 다음 반복 수행
j:0
j:1
j:2 //j가 2일때 안쪽 반복문 종료
i:2 //i=2일때 바깥 반복문도 break; 호출되어 종료
5. continue 명령
-for문 또는 while문에서 해당 순서를 패스하고 싶을때 사용
-반복문 안에서 continue; 형태로 사용
출력
1출력!
3출력!
'내배캠 > java' 카테고리의 다른 글
[내일배움캠프/백엔드] JAVA 문법종합반 3주차 강의 2. 상속 (0) | 2024.10.23 |
---|---|
[내일배움캠프/2주차] JAVA 문법종합반 3주차 강의 1. 클래스 (0) | 2024.10.18 |
[내일배움캠프/2주차] JAVA 문법종합반 2주차 강의 2 (2) | 2024.10.14 |
[내일배움캠프/2주차] JAVA 문법종합반 1주차 강의 2 (0) | 2024.10.11 |
[내일배움캠프/2주차] JAVA 문법종합반 1주차 강의 1 (5) | 2024.10.08 |