JAVA

[16회차-①] JAVA (연산자와 조건문)

킴크스 2021. 4. 13. 21:33

강의명 : 오픈프레임워크 활용 디지털융합 SW엔지니어 양성 과정

강의 날짜 : 21.04.13

 

 

1. 괄호 연산자

괄호 연산자 설명
(  ) 소괄호 
{  } scope괄호. 메모리의 수명을 결정짓는 영역, 블록 괄호
[  ] 배열 괄호. Array 괄호
<  > java에서 특수데이터 타입을 표현하는 괄호

 

2. 산술 연산자 

 : 계산을 위한 연산자

 

산술 연산자 설명
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈(몫)
% 나눗셈(나머지)

나눗셈 연산자, 특히 나머지 연산자는 배수 계산에 많이 사용된다.

계산에는 피연산자가 두 개 필요하므로 이항 연산자이다.

 

public class Ex00 {

	public static void main(String[] args) {
		
		int n = 9;
		
		if(n%2==0) {
			System.out.println("n은 짝수 입니다");
		}
		else {
			System.out.println("n은 홀수입니다.");
		}
	}
}

 

2로 나눈 나머지가 0이라는 조건을 만족한다는 것은 n이 2의 배수라는 의미이다.

이런 식으로 배수에 관한 조건을 나머지 연산자를 사용해 세울 수 있다.

배수를 사용해서 풀어내는 것이 소수계산이다.

 

이런 식으로 풀어내가는 과정을 알고리즘이라고 한다. 

알고리즘을 해당 언어에 맞게 풀어내는 것을 로직화라고 한다.

 

Flow Chart를 그려가며 흐름을 파악하는 것이 중요하다.

 

 

3. 부호 연산자

 : 양수와 음수를 나타내는 연산자

 

부호 연산자 설명
+ 양수
- 음수

부호 연산자는 연산에 필요한 피연산자가 하나이므로 단항 연산자이다.

 

 

4. 조건 연산자(관계 연산자)

 

값 두 개를 비교하는 판단 연산자이다.

즉 결과의 자료형이 boolean으로 값이 true와 false만 도출이 된다.

 

관계 연산자 설명
< 미만(less then)
<= 이하 (less then or equalt)
> 초과(grater then)
>= 이상(grater then or equalt)
!= 같지 않다 (nor equal)
== 똑같다(same same)

 

public class Ex01 {
	public static void main(String[] args) {
		int a = 10;
		int b = 5;
		
		System.out.println(a == b);
		System.out.println(a > b);
		System.out.println(a >= b);
		System.out.println(a < b);
		System.out.println(a <= b);
		System.out.println(a != b);
		
		String str = "Hello";
		System.out.println(str instanceof String); //str의 자료형을 물을 때도 instanceof를 사용	
		//해당 자료형이 맞냐고 물어보는 연산자
	}
}

 

5. 조건연산자(논리 연산자)

 

논리 연산자 설명
! 부정(단항연산자)
&& AND
|| OR

 

논리 연산자의 부정(!)은 단일 연산자이다.

 

&& 는 둘 다 참이어야 참 값을 반환한다.

|| 는 둘 다 거짓일 때만 거짓을 반환한다.

 

 

6. 연산자들의 우선순위( 큰 순으로)

 

① 괄호 연산자

(  ) → {  } → [  ] → < >

 

② 단항 연산자

부호 연산자 → 논리 연산자 부정 ! → 전위 연산자

 

③ 이항 연산자

산술 연산자 → 관계 연산자 →논리 연산자 AND와 OR

 

④ 삼항 연산자

 

⑤ 대입 연산자들 

 대입 연산자 = 와 복합대입연산자

 

⑥ 후위 연산자

 

 

7. if - else 구문

 

public class Ex00 {

	public static void main(String[] args) {
		
		int n = 9;
		
		if(n%2!=0) { //괄호 안에 조건식, 조건이 true일 때
			System.out.println("n은 홀수 입니다"); //실행문
		}
		else { //조건이 false일 때
			System.out.println("n은 짝수입니다.");
		}
	}
}

 

 

8. 삼항 연산자

 

public class Ex02 {

	public static void main(String[] args) {
		int a = 12, b = 4, c = 19;
		
		int max = ( a > b ) ? a : b; //조건식 결과 : true, max에 a 대입
		max = ( max > c ) ? max : c; //조건식 결과 : false, max에 c 대입
		System.out.println( "최대값은 " + max );
	}
}

 

 삼항 연산자는 if - else 구문을 풀어서 짧게 쓴것이나 다름없다. 

괄호 안에는 조건식, 물음표가 if, : 가 else를 나타내는 것이다.

 

삼항 연산자는 결과 값을 결정하게 되는데, 그 결과를 반드시 대입해주어야한다. 

즉, 값을 대입할 대상이 필요하다. 

 

if - else 구문에서는 꼭 else문이 필요한 것은 아니지만 삼항 연산자는 else의 역할을 하는 : 가 꼭 필요하다.

 

 

9. 다중 조건문 ( if - else if - else)

 

public class Ex03 {

	public static void main(String[] args) {
		int score = 88;
		char grade;
		
		if (score >= 90 ) {
			grade = 'A';
		} else if ( score >= 80 ) {
			grade = 'B';
		} else if ( score >= 70 ) {
			grade = 'C';
		} else if ( score >= 60 ) {
			grade = 'D';
		} else {
			grade = 'F' ;
		}
		System.out.println( "학점은 " + grade );
	}
}

 

다중 조건은 if문 외에 else if문에 또다른 조건식을 주어 만든 것이다.

그리고 그 조건식들의 값에는 다 boolean 자료형만 들어올 수 있다.

 

 

10. 다중 조건문 (swtich - case)

 

public class Ex04 {

	public static void main(String[] args) {
		int score = 88;
		char grade;
		
		switch (score / 10) { //int 값이 들어옴
		case 10:
			grade = 'A' ;    break;
		case  9:
			grade = 'A' ;    break;	
		case  8:
		    grade = 'B' ;    break;
		case  7:    
		    grade = 'C' ;    break;
		case  6:   
			grade = 'D' ;    break;
		default:
			grade = 'F' ;
		}
		System.out.println( "학점은 " + grade );
	}
}

 

switch 옆 소괄호의 조건식에는 int, long, String의 자료형만 들어올 수 있다.

 

case 옆에는 해당하는 값을 적고 : 를 적은 후, 그 밑에 실행문을 구현한다.

중요한 점은 특수 제어문 break; 문으로 swtich-case문을 탈출하지 않으면 해당 케이스 밑 케이스들의 실행문도 

타버리기 때문에 주의해야 한다.

물론 무조건 break; 문을 써야하는 것은 아니다. 

 

default는 case의 어느 것에도 해당하지 않을 때의 실행문을 구현해준다. 없어도 무관하다.

 

 

11. 증감 연산자 (카운터 연산자)

 

증감 연산자 설명
a++ 후위 연산자, 1 증가
++a 전위 연산자, 1 증가
a-- 후위 연산자, 1 감소
--a 전위 연산자, 1 감소

 

더해지는 값은 무조건 1이어야 한다.

그 외의 값은 허용되지 않는다. 

그리고 바뀐 값은 해당 변수가 다시 가져가야 한다.

 

증감 연산자는 다른 연산자와 함께 사용될 때의 우선순위가 중요하다.

 

public class Ex07 {
	public static void main(String[] args) {
		int a = 10,  b = 10;
		
		System.out.println( "Before a : " + a
				+ ", b : " + b ); 
		System.out.println( "a++ : " +  a++ ); //a++은 후위연산자이므로 우선순위 가장 낮음
		System.out.println( "++b : " +  ++b ); //++b는 전위 연산자, 즉 단항 연산자이므로 결합 연산자보다 우선순위 높음
 		System.out.println( "After a : " +  a 
				+ ", b : " + b );
	}
}

 

다른 누군가와 함께 후위 연산자가 쓰이면 후위 연산자는 우선 순위가 가장 낮아서 제일 마지막이다.

먼저 계산을 진행하고 ;으로 문장을 끝내기 전에 후위 연산자를 진행한다.