항과 연산자
• 항(operand) : 연산에 사용되는 값
• 연산자 (operator) : 항을 이용하여 연산하는 기호
대입 연산자 (assignment operator)
• 변수에 다른 변수나 값을 대입하는 연산자
• 이항 연산자 중 우선 순위가 가장 낮은 연산자들
• 왼쪽 변수 = 오른쪽 변수(또는 식, 값)
부호 연산자
• 단항 연산자
• 변수의 부호를 유지 하거나(+) 바꿈(-)
• 실제 변수의 부호가 변하려면 대입 연산자를 사용해야 함
산술 연산자
• 사칙연산자
• % 나머지 구하는 연산자, 숫자 n 의 나머지 범위는 0 ~ n-1
복합 대입 연산자
• 대입 연산자와 다른 연산자가 함께 쓰임
증가, 감소 연산자
• 단항 연산자
• 변수의 값을 1 더하거나 1 뺄때 사용
• 연산자가 항의 앞에 있는가 뒤에 있는가에 따라 연산 시점과 결과가 달라짐
• 문장(statement)의 끝(;)을 기준으로 연산 시점을 생각해야 함

관계 연산자
• 이항 연산자
• 연산의 결과가 true(참), false(거짓)으로 반환 됨, 비교연산자 라고도 함
• 조건문, 반복문의 조건식으로 많이 사용 됨

논리 연산자
• 관계 연산자와 혼합하여 많이 사용 됨
• 연산의 결과가 true(참), false(거짓)으로 반환 됨
• 논리 곱(&&)은 두 항의 결과가 모두 true일 때만 결과가 true
• 앞의 항의 결과가 false이면 뒤 항의 결과를 평가하지 않음
• 논리 합(||)은 두 항의 결과가 모두 false일 때만 결과가 false
• 앞의 항의 결과가 true이면 뒤 항의 결과를 평가하지 않음

조건 연산자
• 삼항 연산자
• 조건식의 결과가 true(참)인 경우와 false(거짓)인 경우에 따라 다른 결과가 수행됨
• if (조건문)을 간단히 표현할 때 사용 할 수 있음

비트 연산자
• 대입연산자와 다른 연산자가 함께 쓰임
• 마스크 : 특정 비트를 가리고 몇 개의 비트 값만 사용할 때
• 비트켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때
예) & 00001111 ( 하위 4비트 중 1인 비트만 꺼내기)
• 비트끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때
예) | 11110000 ( 하위 4비트 중 0 인 비트만 0으로 만들기)
• 비트 토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때
public class BitTest { ㅤ public static void main(String[] args) { ㅤ int num1 = 5; // 00000101 int num2 = 10; // 00001010 ㅤ System.out.println(num1 | num2); System.out.println(num1 & num2); System.out.println(num1 ^ num2); System.out.println(~num1); ㅤ System.out.println(num1 << 2); System.out.println(num1); System.out.println(num1 <<= 2); System.out.println(num1); ㅤ } }

연산자 우선순위

ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
if문
import java.util.Scanner; ㅤ public class IfElseTest { ㅤ public static void main(String[] args) { ㅤ int age = 7; ㅤ //Scanner scanner = new Scanner(System.in); //int age = scanner.nextInt(); ㅤ if( age >= 8) { System.out.println("학교에 다닙니다"); } else { System.out.println("학교에 다니지 않습니다."); } } }
switch - case 문
• if - else if - else 문을 사용할 때 복잡하고 번거로운 부분을 가독성 좋게 구현
• 비교 조건이 특정 값이나 문자열인 경우 사용
• break 문을 사용하여 각 조건이 만족되면 switch 블럭을 빠져나오도록 함
• 자바 14부터 좀 더 간결해진 표현식이 지원 됨 ( break 사용하지 않음 )
public class SwitchCaseTest { ㅤ public static void main(String[] args) { ㅤ int month = 10; int day; ㅤ switch(month){ ㅤ case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 4: case 6: case 9: case 11: day = 30; break; case 2: day = 28; break; default: day = 0; System.out.println("존재하지 않는 달 입니다."); ㅤ } System.out.println(month + "월은 " + day + "일입니다."); } }문자열 역시 지원
switch(medal) { ㅤ case "Gold": System.out.println("금메달 입니다."); break; case "Silver": System.out.println("은메달 입니다."); break; case "Bronze": System.out.println("동메달 입니다."); break; default: System.out.println("메달이 없습니다."); break;
Java 14 부터 지원 되는 Switch Expression
• 간단하게 쉼표(,)로 조건 구분
• 식으로 표현 하여 반환 값을 받을 수 있음. 리턴 값이 없는 경우는 오류가 생김
• yield 키워드 사용
public class SwitchCaseUpTest { ㅤ public static void main(String[] args) { ㅤ int month = 3; ㅤ int day = switch (month) { case 1, 3, 5, 7, 8, 10,12 -> { System.out.println("한 달은 31일입니다."); yield 31; } case 4,6,9,11 -> { System.out.println("한 달은 30일입니다."); yield 30; } case 2 ->{ System.out.println("한 달은 28일입니다."); yield 28; } default->{ System.out.println("존재하지 않는 달 입니다."); yield 0; } }; System.out.println(month + "월은 " + day + "일입니다."); } }
ㅤ
ㅤ
ㅤ
ㅤ
ㅤ
while문
조건이 참(true)인 동안 반복수행하기
• 주어진 조건에 맞는 동안(true) 지정된 수행문을 반복적으로 수행하는 제어문
• 조건이 맞지 않으면 반복하던 수행을 멈추게 됨
• 조건은 주로 반복 횟수나 값의 비교의 결과에 따라 true, false 판단 됨
• 예) 달리는 자동차, 일정 횟수 만큼 돌아가는 나사못, 특정 온도까지 가동되는 에어컨등
while (true) : 무한반복
do-while문
조건과 상관 없이 한번은 수행문을 수행
while문은 조건을 먼저 체크하고 반복 수행이 된다면, do-while은 조건과 상관 없이 수행을 한 번 하고나서 조건을 체크
import java.util.Scanner; ㅤ public class DowhileTest { ㅤ public static void main(String[] args) { ㅤ Scanner scanner = new Scanner(System.in); int input; int sum = 0; ㅤ do { input = scanner.nextInt(); sum += input; ㅤ }while(input != 0); ㅤ System.out.println(sum); } ㅤ }
for 문
for문의 수행 순서

public class ForTest { ㅤ public static void main(String[] args) { ㅤ int count =1; int sum = 0; ㅤ for( int i = 0 ; i<10; i++, count++) { //10번 sum += count; //count++; } System.out.println(sum); ㅤ int num = 1; int total = 0; ㅤ while( num <= 10) { total += num; num++; } System.out.println(total); } }
for문 생략
초기화식 생략 : 이미 이전에 값이 초기화되어 for내부에서 값을 지정할 필요가 없는 경우 for ( ; X ; X )
조건식 생략 : 반복수행 조건문이 수행문 내에 있는 경우 (ex. if) for ( X ; ; X )
증감식 생략 : 증감식에 대한 연산이 복잡하거나 다른 변수의 연산결과값에 의해 결정되는 경우 for ( X ; X ; )
무한반복 for( ; ; )
중첩반복문
public class NestedLoopTest { ㅤ public static void main(String[] args) { int dan = 2; int count = 1; ㅤ for( dan = 2; dan <= 9; dan++) { ㅤ for(count = 1; count <=9; count++) { ㅤ System.out.println( dan + "X" + count + "=" + dan * count); } System.out.println(); } ㅤ dan = 2; while( dan <= 9 ) { count = 1; while (count <= 9) { ㅤ System.out.println( dan + "X" + count + "=" + dan * count); count++; ㅤ } dan++; System.out.println(); } } }
break & continue
break : 반복문 중단
continue : 조건검사로 돌아감
본 게시글은 fastcampus 박은종강사 수업을 듣고 개인적으로 정리한 내용임을 밝힘.