Java (2)

Tony Kim·2021년 8월 23일

Java

목록 보기
2/5
post-thumbnail

Java (2)

1. 연산자

항과 연산자
• 항(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);
		ㅤ
	}
}

연산자 우선순위




2. 조건문

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 + "일입니다.");
		}
	}




3. 반복문

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 박은종강사 수업을 듣고 개인적으로 정리한 내용임을 밝힘.

profile
Back-end-dev

0개의 댓글