Chapter 04. 연산자(Operator)
[1] 연산자(Operator)란?
*연산자(Operator)
-어떠한 기능을 수행하는 기호( +, - , * ,/ 등)
*피연산자(Operand)
- 연산자의 작업 대상(변수,상수,리터럴,수식)
[2] 연산자의 종류
*단항 연산자 : + - (타입) ++ -- ~ !
*이항 연산자 - 산술 : + - * / % << >> >>>
- 비교 : > < >= <= == !=
- 논리 : && || & ^ |
*삼항 연산자 : ? :
*대입 연산자 : =
[3] 연산자의 우선순위
* 괄호의 우선순위가 제일 높다.
* 산술 > 비교 > 논리 > 대입
* 단항 > 이항 > 삼항
* 연산자의 연산 진행방향은 왼쪽에서 오른쪽( - > )이다. 단, 단항 , 대입 연산자만 오른쪽에서 왼쪽( < - ) 이다.
* -x + 3 단항 > 이항
x + 3 * y 곱셈 , 나눗셈 > 덧셈 , 뺄셈
x + 3 > y - 2 산술 > 비교
x > 3 && x < 5 비교 > 논리
int result = x + y * 3; 항상 대입은 맨 나중에
[4] 증감연산자 ( ++ , --)
*증가연산자(++) : 피연산자의 값을 1 증가 시킨다.
*감소연산자(--) : 피연산자의 값을 1 감소 시킨다.
*전위형 : ++ i ; 값이 참조되기 전에 증가시킨다.
*후위형 : i ++ ; 값이 참조 된 후에 증가시킨다.
[5] 나머지연산자( % )
*나누기한 나머지를 반환한다.
*홀수 , 짝수 등 배수검사에 주로 사용
int a = 10 ;
int b = 7 ;
int result = a % b ;
System . out . println(result);
6] 쉬프트연산자 ( << , >> , >>>)
* 연산의 대상이 되는 값들을 내부적으로 bit 단위로 변경한 후 , 각 자리를 오른쪽 또는 왼쪽으로 이동
* 곱셈이나 나눗셈 보다 연산자 속도가 빠르다.
* << : 자리를 왼쪽으로 이동시키며 빈칸을 0으로 채움
* >> : 자리를 오른쪽으로 이동시키며 음수인 경우 부호를 유지시켜주기 위해 빈칸을 1로 채움
* >>> : 자리를 오른쪽으로 이동시키며 부호에 상관없이 항상 0으로 빈 칸을 채움
[7] 비교연산자( > , < , >= , <= , == , !=)
* 변수나 상수의 값 비교 및 객체 타입 비교(instanceof)
* 대소 비교(> , >=, < , <= )
-boolean형 이외의 모든 기본형 변수에 사용 가능
-참조형에 사용 불가
* 등가 비교( == , != )
-모든 자료형에 사용 가능
-기본형의 경우 : 변수에 저장되어 있는 값 비교
-참조형의 경우 : 객체의 주소값 비교
* 기본형과 참조형 비교 불가
-문자열 비교에는 equals()를 사용
-연산 결과가 조건을 만족하면 true , 그렇지 않으면 false
[8] 비트 연산자
* &, | , ^
*연산의 대상이 되는 값들을 내부적으로 bit 단위로 변경한 후 연산 수행
*& : 비트 단위의 AND - 두 조건이 모두 true일 경우 true
*| : 비트 단위의 OR - 두 조건 중 하나라도 true이면 true
*^ : XOR - 두 조건이 서로 다를 경우에 true
[9] 논리 연산자
*&&, ||, !
-true나 false인 논리값을 가지고 다시 한 번 조건 연산
-하나 이상의 처리 조건이 있을 때 사용
-&& : AND 논리곱 - 주어진 조건이 모두 true일 때 true 반환
-|| : OR 논리합 - 주언진 조건들 중 하나라도 true이면 true 반환
- ! : NOT 부정 - true는 false로 false는 true로
*주로 조건문과 반복문에서 조건식 간의 결합에 사용
-같은 조건식이라도 피연산자의 위치에 따라서 연산속도가 달라질 수있음.
-OR : 어느 한쪽이 true이면 true이므로 , 선조건을 true로 지정하면 후조건은 검사하지 않음
-AND : 어느 한쪽이 false이면 false이므로, 선조건을 flase로 지정하면 후조건은 검사하지 않음
[9] 조건 연산자(삼항 연산자)
*조건 ? 조건이 true인 경우의 처리 : 조건이 false인 경우의 처리
//국어 점수가 90점 이상이고
//영어 점수가 90점 이상인지 비교한 결과를 화면에 출력
int k = 85;
int e = 90;
//국어 점수가 90점 이상인가 그리고 영어 점수가 90점 이상인가
boolean r = k>=90 && e>=90;
System.out.println(r);
//조건 연산자를 이용하여 합격/불합격 판정
//총점이 80 이상이면 합격, 그렇지 않으면 불합격
int total = k + e;
String panjung = total >= 80 ? "합격" : "불합격";
System.out.println("응시 결과 : " + panjung);
//국어와 영어의 총점이 80점 이상이거나,
//각 과목이 80 이상인지 확인한 결과를 r에 저장하고
//r의 값을 화면에 출력
r = ( (k+e)>=80 ) || ( k>=80 && e>=80) ;
System.out.println(!r);
Chapter 05. 실행흐름의 컨트롤
[1] 자바의 제어문
*프로그램의 흐름에 영향을 주고 필요한 경우에 제어가능하도록 처리
-비교문 - if, switch
-반복문 - for, while, do-while
-break문 - 반복문을 빠져나가기
-continue문 - 진행되는 반복회차를 건너뛰고 다음 회차로 이동
[2] if문
*boolean형의 결과를 가지는 조건식에 사용 , 조건식의 결과로 수행 문장 결정
*if(조건식) {조건식이 true일 때 처리할 내용
(단, 처리할 내용이 한 문장인 경우 { } 생략 가능)
}
@단순 if문 연습
(구매금액이 만원이 넘으면 2000원 할인쿠폰 발급 메시지 출력)
int money = 10000;
if(money>=10000){
System.out.println("2000원 할인쿠폰 발급!");
}
[3] if - else if 문
*조건을 만족하지 않는 경우의 처리 추가
* f(조건식){
조건식이 true일 경우의 처리할 내용
} else {
조건식이 false일 경우의 처리
}
//구매금액이 만원이 넘으면
//2000원 할인 쿠폰 발급 메시지 출력
//그렇지 않으면,
//만원 이상 구매시 할인 쿠폰 발급 안내 메시지 출력
money = 8000;
if(money>=10000){
System.out.println("2000원 할인쿠폰 발급 완료!");
}else {
System.out.println("만원 이상 구매시 할인 쿠폰 발급!");
}
[4] for문
*특정한 명령들을 정해진 규칙에 따라 반복 처리할 때 사용
-반복 횟수를 알고 있을 때 주로 사용
*for(초기식 ; 조건식 ; 증감식){
조건식을 만족하는 동안 처리할 내용
}
-초기식 : 가장 먼저 수행 부분. 초기에 한 번만 수행
-조건식 : 초기식 다음에 수행하는 부분
반복문을 수행할 때마다 한 번씩 비교하여
반복을 수행해야 할지 벗어날지 결정
-증감식 : 반복문을 수행할 때마다 조건식에서 비교 전에
항상 수행.
조건식에 사용되는 변수의 값을 증가/감소 시킴
@단순 for문 연습
System.out.println("1부터 5까지 for문으로 출력");
for( int i=1 ; i<=5 ; i++){
System.out.println(i);
}
[5] 다중 for문
*for문 안에 for문이 중첩되어 있는 형태
*for(초기식1 ; 조건식1 ; 증감식1){
for(초기식2 ; 조건식2 ; 증감식2){
처리할 내용
}
}
@for( int i=1 ; i <= 5 ; i++){
System.out.print(i + " : ");
for( int j=1 ; j <= i ; j++){
System.out.print(" *");
}
System.out.println();
}
[6] Switch 문
System.out.println(month + "월의 마지막 날짜는" + day + "입니다");
[7] While 문
*조건을 먼저 비교해서 만족할 경우에만 반복 처리
*while(조건식) {
조건식을 만족할 경우의 처리
}
@while문을 이용 - 1부터 10까지 누적합계 출력
int i = 1;
int sum = 0;
while(i<=10){
sum = sum + i; //sum += i;
System.out.println(i + "까지의 합 : " + sum);
i++;
}
[8] do ~ while 문
*일단 먼저 실행하고 조건을 확인한 후에 조건식을 만족한 경우에는 반복 계속
do {
처리할 내용
} while ( 조건식 ) ;
@char gyesok = 'y';
do {
System.out.println("게임을 시작합니다~");
System.out.println("게임이 종료 되었습니다.~");
System.out.println("계속하시겠습니까?(y/n)");
}while(gyesok == 'n');