230315 - Java(3)

팝콘·2023년 3월 20일

Java

목록 보기
2/17

1. 연산자

  • 연산을 수행하는 기호를 말한다.
  • 연산자가 연산을 수행하려면 반드시 연산의 대상이 있어야하는데, 이것을 '피연산자' 라고 한다.

산술연산자

  • 사칙 연산과 나머지 연산(%)
  • 두 피연산자의 타입이 일치해야 연산이 가능하다.
+ - * / % 

double num3 = 0.1;
double num4 = 0.2;
double result6 = num3 + num4;
double result7 = num3 - num4;

System.out.println(result6);	// 결과 0.30000000000000004
System.out.println(result7);	// 결과 -0.1

double result8 = (num3*10 + num4*10)/10;	
// 실수에 적절한 10^n 값을 곱해서 소수점 부분을 없앤 후 연산을 수행

System.out.println(result8);	// 결과 0.3

대입연산자

  • 우변의 값을 좌변에 저장
=	+=	-=	*=	/=	%=

num1 += 3;	→ num1 = num1 + 3;
// +=을 이용하면 총합을 계산할 수 있다.
num2 -= 3;	→ num1 = num1 - 3;
num3 *= 3;	→ num1 = num1*3;
num4 /= 3;	→ num1 = num1/3;
num5 %= 3;	→ num1 = num1%3;

증감연산자

  • 피연산자에 저장된 값을 1 증가 또는 감소시킨다.
  • 증감연산자를 다른 연산자와 같이 사용할 때는 연산자의 위치에 따라서 결과값이 달라질 수 있다.
++	–

int num3 = 10;
int num4 = 10;

- 증감연산자
	int result3 = num3++;	
	// num3의 값을 result3에 대입하고, num3의 값을 1증가시킨다.
	int result4 = ++num4;	
	// num4의 값을 1증가시키고, num4의 값을 result4에 대입한다.

	System.out.println(result3);	// 10이 출력된다.
	System.out.println(num3);	// 11이 출력된다.
	System.out.println(result4);	// 11이 출력된다.
	System.out.println(num4);	// 11이 출력된다.
   
- 감소 연산자
	int result3 = num3--;
	// num3의 값을 result3에 대입하고, num3의 값을 1 감소시킨다.
	int result4 = --num4;
	// num4의 값을 감소시키고, num4의 값을 result4에 대입한다.

	System.out.println(result3);	// 10이 출력된다.
	System.out.println(num3);	// 9가 출력된다.
	System.out.println(result4);	// 9가 출력된다.
	System.out.println(num4);	// 9가 출력된다.

비교연산자

  • 크고 작음과 같고 다름을 비교한다. 주로 조건문과 반복문의 조건식에 사용된다.
  • 타입이 서로 다를 경우에는 자료형의 범위가 큰 쪽으로 자동 형변환된다.
  • 연산결과는 항상 boolean 타입의 값이다. (true 혹은 false)
>	>=	<	<=	==	!=

int num2 = 10;
int num3 = 20;

System.out.println(num2 > num3);	// 결과 false
System.out.println(num2 >= num3);	// 결과 false
System.out.println(num2 < num3);	// 결과 true
System.out.println(num2 <= num3);	// 결과 true
System.out.println(num2 == num3);	// 결과 false
System.out.println(num2 != num3);	// 결과 true

논리연산자

  • 논리 연산자의 사용목적은 2개 이상의 비교 연산식을 활용해서 더 복잡한 논리식을 구성하기 위해서 사용한다.
&&	||	!
  1. &&

    • &&는 논리곱(AND) 연산을 수행한다. 좌향과 우향의 값이 모두 true일 때면 연산 결과가 true다.
    • &&는 좌향의 값이 false로 판정되면 우향의 값을 확인하지 않고, 전체 연산 결과를 false로 판정한다.
  2. ||

    • ||는 논리합(OR) 연산을 수행한다. 좌향이나 우향의 값 중에 하나라도 true면 연산 결과가 true다.
    • ||는 좌향의 값이 true로 판정되면 우향의 값을 확인하지 않고, 전체 연산 결과를 true로 판정한다.
  3. !

    • !는 논리부정(NOT) 연산을 수행한다.

조건연산자

  • 조건식은 최종 결과가 true/false로 판정되는 식이다.
	조건식 ? 값1 : 값2

	- 값1은 조건식이 true일 때 이 연산식의 최종 결과가 된다.
	- 값2는 조건식이 false일 때 이 연산식의 최종 결과가 된다.
	- 값1과 값2는 같은 타입의 값이어야 한다.

2. 제어문(분기문)

if문

  • 조건식에 따라서 수행문의 실행여부를 결정하는 구문이다.
	if(조건식) {
		수행문1;
		수행문2;
	}

	- 조건식은 연산결과가 true/false인 연산식이다.
	- 수행문1과 수행문2는 조건식이 true로 판정될 때 실행되는 수행문이다.

if ~ else문

  • 조건식이 true로 판정될 때 실행할 수행문과 조건식이 false로 판정될 때 실행할 수행문을 지정할 수 있다.
	if(조건식) {
		수행문1;
		수행문2;
	} else {
		수행문3;
		수행문4;
	}

	- 조건식이 true로 판정되면 수행문1과 수행문2가 실행된다.
	- 조건식이 false로 판정되면 수행문3과 수행문4가 실행된다.

if ~ else if ~ else if ~ else문

  • 조건이 여러 개 일때는 if ~ else if ~ 구문을 사용한다.
	if (조건1) {
		수행문1;
	} else if (조건식2) {
		수행문2;
	} else if (조건식3) {
		수행문3;
	} else {
		수행문4;
	}

1) 조건식1이 true로 판정되면 수행문1을 실행하고, 제어문을 빠져나간다.
2) 조건식1이 false로 판정되면 조건식2을 검사한다.
3) 조건식2가 false로 판정되면 수행문2를 실행하고, 제어문을 빠져나간다.
4) 수행문4는 조건식1, 조건식2, 조건식3이 모두 false로 판정되면 실행된다.
5) 제시된 조건들은 절대로 true인 경우가 겹치지 않는다.

내포된 if문 (중첩 if문)

  • 경제적인 코딩을 위해서 사용되며 횟수에는 거의 제한이 없다.
  • if블록 혹은 else 블록은 if문을 포함할 수 있다.
	if (조건식1) {
		수행문1;
		if (조건식2) {
			수행문2;
		}
	}

1) 수행문1은 조건식1이 true로 판정되면 실행된다.
2) 수행문2는 조건식1이 true로 판정되고, 조건식2도 true로 판정되며 실행된다.

빠른종료(return)

  • 제어문의 조건식이 다양하고 복잡할수록 제어문의 구조도 같이 복잡해진다. 제어문의 구조가 복잡해지면, 코드의 가독성이 떨어지고 유지보수도 어려워진다.

  • 빠른 종료는 제시된 조건에 부합되지 않는 나쁜 경우를 먼저 찾아서 프로그램의 실행을 중단시키는 것이다.

  • 빠른 종료는 return 키워드나 throw 키워드를 이용해서 나쁜 경우를 만나면 프로그램의 실행을 즉시 중단 시킨다.

  • 빠른 종료를 활용하면 if문의 구조를 단순화시킬 수 있고, 다양한 조건을 내포된 if문 없이 작성할 수 있다.

  • 빠른 종료를 활용한 코드는 제어문의 구조가 단순하고, 코드 가독성이 높아지고, 유지보수도 쉽다.


3. 변수의 스코프

  • 변수의 범위는 가능하면 좁게 사용하는 것이 좋지만 프로그램의 효율적인 코딩을 위해 일부로 변수의 범위를 넓게 사용할 수도 있다.

코드 리팩토링

  • 작성된 코드에서 악취(중복이나 복잡한 코드 등등)를 찾아서 제거.
  • 코드에서 내용보다 괄호를 먼저 적기.
  • 초기화는 절대로 나올 수 없는 값으로 정한다.

4. Switch문

  • 조건식이 너무 많아 else-if문으로 처리하기 복잡할 때 사용한다.
  • 조건식을 먼저 계산한 다음, 그 결과와 일치하는 case문으로 이동한다. 이동한 case문 아래에 있는 문장들을 수행하며, break문을 만나면 전제 switch문을 빠져나간다.
  • 값은 타입은 정수, 문자, 문자열, enum만 가능하다.
	switch (조건식) {
		case 값1:
			수행문1;
			break;
		case 값2:
			수행문2;
			break;
		case 값3:
			수행문3;
			break;
		default
			수행문4;
	}

1) 수행문1은 값과 값1이 일치하면 실행된다.
3) 수행문2는 값과 값2가 일치하면 실행된다.
4) 수행문3은 값과 값3이 일치하면 실행된다.
5) 수행문4는 값과 일치하는 case가 없을 때 실행된다.
6) break는 switch문의 실행을 중단시키고 탈출한다.	

switch문의 제약조건

  • switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
  • case문의 값은 정수 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다.
profile
터짐

0개의 댓글