국비학원 3일차 : 연산자, If문, Switch문

Digeut·2023년 2월 24일
0

국비학원

목록 보기
3/44

1. 연산자

프로그래밍의 모든 기준은 위에서 아래로, 좌에서 우로 진행된다

산술연산자

덧셈 연산자

//덧셈 연산자 : +
//좌항에 우항을 더한 값은 반환한다

int addResult = 8 + 3;
System.out.println(addResult); //11

뺄셈 연산자

//뺄셈 연산자 : -
//좌항에 우항을 뺀 값을 반환

int minusResult = 8 -3 ;
System.out.println(minusResult); //5

곱셈 연산자

//곱셈 연산자 : *
//좌항에 우항을 곱한 값을 반환

int multiResult = 8 * 3 ;
System.out.println(multiResult); //24

나눗셈 연산자

//나눗셈 연산자 : /
//좌항에 우항을 나눈 값을 반환 , 몫을 반환하는게 X 
//int 타입으로 진행시 정수만을 반환하는거지 실수가 사라지는게 아니다

float float1 = 2.6666F;
int number1 = (int) float1;
System.out.println(number1); //2

int divisionResult = 8 / 3 ; //int 타입이므로 정수형태로 출력
System.out.println(divisionResult); //2

double remainderResult2 = 8.0 / 3.0 ;
System.out.println(divisionResult2); //2.6666666666666665
//double 타입으로 연산시 실수로 출력된다.

나머지 연산자

//나머지 연산자 : %
//좌항에 우항을 나눈 나머지를 반환
int remainderResult3 = 8 % 3; 
System.out.println(remainderResult3); //2

정수와 정수를 연산하면 정수가 반환됨
실수와 정수를 연산하면 실수가 반환됨
실수와 실수를 연산하면 실수가 반환됨
결과를 받을적에 받아주는 타입이 어떻게 진행되는지 생각해서 지정해야한다

//계산 해보기
System.out.println("실수와 정수의 계산 값 결과는?");
double double1 = 8.0 / 3 ;
System.out.println(double1); //2.6666666666666665 실수부분까지 나온다

📌증감연산자

변수 자신을 1 증가 또는 감소 시키는 연산자

증가 연산자

//증가 연산자 : ++
//연산자의 좌항 혹은 우항의 값을 1 증가 시킴 (피연산자가 하나뿐이다)

int integer1 = 10;
++integer1; //증가시키는게 먼저 그 다음에 integer1읽기
System.out.println(integer1); //11

integer1++; //integer1을 읽고 나서 증가
System.out.println(integer1); //12

integer1 = 0;
System.out.println(integer1); //0
System.out.println(++integer1); //1

System.out.println(integer1++); //1
//integer1이 '읽힌' 다음 증가라서 다음에 integer1을 읽을때 +1이 되게 된다.
//지금 상황에서 integer1이 읽힐때는 증가 전이라 1로 반환된다.

System.out.println(integer1); //2

증감 연산자는 변수의 증감만을 연산 할 수 있다

final int NUMBER = 0 ;
NUMBER++; //오류 //상수는 증감 연산을 할 수 없다.
0++; //오류 //리터럴 상수도 증감 연산을 할 수 없다.

감소 연산자

//감소 연산자 : --
//연산자의 좌항 혹은 우항에 값을 1 감소 시킴
int integer2 = 10 ;
//--integer2 ;
System.out.println(--integer2); //9
// integer2--;
System.out.println(integer2--); //9
//integer2가 '읽힌' 다음 감소라서 다음 integer2을 읽을때 -1이 되게 된다.
System.out.println(integer2); //8

대입 연산자

좌항에 우항을 (누적)대입
좌항의 변수에 좌항과 우항을 연산한 값을 대입

// = : 좌항에 우항을 대입
int number4 = 10;

// += : 좌항에 우항을 더한 값을 좌항에 대입
number4 += 3; // number4 = 13
System.out.println(number4);
        
// -= : 좌항에 우항을 뺀 값을 좌항에 대입
number4 -= 6;
System.out.println(number4); // number4 = 7
        
// *= : 좌항에 우항을 곱한 값을 좌항에 대입
number4 *= 3;
System.out.println(number4); // number4 = 21
        
// /= : 좌항에 우항을 나눈 값을 좌항에 대입
number4 /= 5; // int 나누기 int = 정수부만 남게된다
System.out.println(number4); // number4 = 4
        
// %= : 좌항에 우항을 나눈 나머지를 좌항에 대입
number4 %= 3;
System.out.println(number4); // number4 = 1

대입연산자의 좌항에는 변수만 지정할 수 있다 (상수는 바뀔 수 없으므로)

(number4 %= 3;) == (number4 = number3 % 3); 
//단 역순은 성립하지 않는다 삼단논법 조심!

비교 연산자

좌항을 우항과 비교한 결과를 논리값(true, false)으로 반환

// ==
//좌항이 우항과 같다면, true 아니면 false 반환
boolean boolean1 = 10 == 12 ;
System.out.println(boolean1); //false

// !=
//좌항이 우항과 다르다면, true 아니면 false 반환
boolean boolean2 = 10 != 11 ;
System.out.println(boolean2); //true

// >(greater Then), >=
// 좌항이 우항보다 크면 true, 아니면 false 반환
// 좌항이 우항보다 크거나 같으면 true, 아니면 false 반환
boolean boolean3 = 10 > 10 ;
boolean boolean4 = 10 >= 10 ;
System.out.println(boolean3); //false
System.out.println(boolean4); //true
        
// <(less Then), <=
// 좌항이 우항보다 작으면 true, 아니면 false 반환
// 좌항이 우항보다 작거나 같으면 true, 아니면 false 반환
boolean boolean5 = 8 < 10 ;
boolean boolean6 = 8 <= 10 ;
System.out.println(boolean5); //true
System.out.println(boolean6); //false

논리 연산자

논리값을 연산하는 연산자 : 좌항과 우항 모두에 논리값이 와야한다.

//연산의 우선순위가 빠르더라도 ()로 묶어주면 보기 편하고 결과 출력값을 한눈에 볼 수 있다

// && : AND 연산
// 좌항과 우항이 모두 true일때 true, 아니면 false 반환 
// T&&T의 경우에만 true 나머지는 false
int number5 = 8;
int number6 = 3;
boolean boolean7 = 
	(number5 > number6) /*논리값이 와야한다*/ && true/*논리값이 와야한다*/;
    
// || : OR 연산
// 좌항과 우항이 중 하나라도 true 이면 true, 아니면 false // F||F의 경우에만 false 나머지는 true
boolean boolean8 = 
	false/*논리값이 와야한다*/ || false/*논리값이 와야한다*/ ; //false 출력
    
// ! : NOT 연산
// 논리값의 부정을 반환
boolean boolean12 = !(number5 > number6);
System.out.println(boolean12); //false

📌증감연산자와 비교연산자 &&, ||

boolean boolean9 = (number5 > number6) && (number6 > number5); //false
boolean boolean9 =  (number6 > number5) && (number5 > number6); //false
//이렇게 보면 단순히 코드를 읽을때 ;전까지 읽은뒤 결과가 출력되는것 같지만
// &&와 ||의 연산자에서 중요한 포인트가 있다!

int number5 = 8;
int number6 = 3;

boolean boolean10 = 
	(number6 > number5)/*이 부분에서 읽을때 false이므로 이 뒤는 읽지 않는다!*/ 
    && (number5++ > number6); //false
System.out.println(number5); //증가연산자가 읽히기 전에 종료되서 8로 출력된다

// ☆ && 연산자는 모두 True가 아닌 경우에 모두 False가 반환되므로 
//코드를 읽는 과정에서 첫번째 논리가 F인 경우 뒤는 읽지 않고 바로 False로 출력하게 된다.

boolean boolean11 =
	(number5 > number6)/*이 부분에서 읽을때 true가 되므로 이 뒤는 읽지 않는다*/ 
    || (number6 > ++number5); //true
System.out.println(number5); //증가연산자가 읽히기 전에 종료되서 8로 출력된다

// ☆ || 연산자는 모두 False가 아닌 경우에 모두 True가 반환되므로 
//코드를 읽는 과정에서 첫번째 논리가 T인 경우 뒤는 읽지 않고 바로 True로 출력하게 된다.

삼항 연산자

조건에 따라 다른 결과를 반환하는 연산자
삼항연산자 구성 : (조건(연산결과가 논리인 값) ? 참일때 결과 : 거짓일때 결과 ;)

String string1 = number5 > number6 ? "3보다 큽니다." : "3보다 크지 않습니다." ;
System.out.println(string1);

2. If문

조건(다이어그램 상에서 마름모)에 따라 실행시키고자 하는 로직(프로세스)이 다를 때 사용하는 구

단순 if문

// 조건이 true일 때 실행할 코드를 지정하는 구문
// 사용 방법 : if (조건) {조건이 true일 때 실행할 코드}

int age = 12 ;
if (age > 19) {
	System.out.println("성인입니다.");
  }

if 문의 경우 코드 블럭에 오는 실행할 코드가 하나의 구문이면 {}를 제거하고 사용가능

if (age > 19) System.out.println("성인입니다"); //이 형태로도 가능

if - else 문

//조건이 true 일 경우와 false 일 경우를 실행되는 코드를 각각 지정한 구문
// 사용 방법 : if(조건){true일때 실행할 코드}
 			else {false일때 실행할 코드}
if (age > 19) {
	System.out.println("성인입니다.");
	} else {
	System.out.println("미성년자입니다.");
	}

if 문과 마찬가지로 else 문도 코드블럭에 오는 실행할 코드가 하나의 구문이면 {} 제거하고 사용 가능

if (age > 19) System.out.println("성인입니다.");
else System.out.println("미성년자입니다."); //이 형태로도 가능

중첩 if 문

어쩔 수 없는 경우를 제외하고, 사용하지 않는편이 좋다

// if 문 혹은 else 문의 코드 블럭 안에 if문을 작성
if (age <= 19) {
   if (age < 8) System.out.println("미취학 아동입니다.");
	else System.out.println("청소년입니다.");
} else {
	System.out.println("성인입니다.");
}

if (age > 19) {
	System.out.println("성인입니다.");
} else {
	if(age < 8) System.out.println("미취학 아동입니다.");
	else System.out.println("청소년 입니다.");
}

사용 지양해야 하는 이유 (->else if문이 된다)

if (age > 19) {
	System.out.println("성인입니다.");
} else /*{}구분하지 않고 한줄로 표현했을때 else if문이 되버린다*/
	if(age < 8) System.out.println("미취학 아동입니다.");
	else System.out.println("청소년 입니다.");

if - else if - else 문

중첩 if문의 응용
else 문의 코드블럭에 오는 코드가 한줄일때 {}을 제거 할 수 있음을 이용

if( age > 19) {
	System.out.println("성인입니다.");
} else if (age < 8) {
	System.out.println("미취학 아동입니다.");
} else {
	System.out.println("청소년입니다.");
}
//위 코드 모두 한 줄로 표현하기
if(age > 19) System.out.println("성인입니다.");
else if (age < 8) System.out.println("미취학 아동입니다.");
else System.out.println("청소년입니다."); //이것과 동일하다.

if문은 검증을 요하는 구문이기 때문에 비정상을 빼는 과정
큰 가지로 정상이 흐르게 하고, if문으로 비정상이 빠지는 흐름으로 잡는다.

3. Switch문

switch 조건문

비교할 변수를 case 값과 비교하여 같은 case를 찾아서
해당 case 구문부터 끝까지 실행
break 문으로 해당 switch를 종료
defalt 문으로 해당하는 case가 없을때 실행할 구문을 작성

//switch 사용 방법
switch (비교할 대상) {
case 비교할 값1 :
	비교할 값1과 비교할 대상이 같을 경우 실행 할 코드
case 비교할 값2 :
	비교할 값2와 비교할 대상이 같을 경우 실행 할 코드
	break; //break 구문으로 switch를 해당 위치에서 종료시킬 수 있음.
default :
	비교 할 대상과 일치하든 안하든 실행할 코드 //중요!
}

Switch 의 case 구문에 각각 break를 걸어서 if문처럼 사용하는건 지양하자
Switch 문은 조건에 따라서 코드 실행 범위를 지정하는 것

import java.util.Scanner;

public class Switch {

  public static void main(String[] args) {

  Scanner scanner = new Scanner(System.in);

  int chapter = scanner.nextInt();

  switch (chapter) {
  case 1 :
      System.out.println("기본 문법 공부");
  case 2 :
      System.out.println("제어문 공부");
      break;
  case 3 :
      System.out.println("객체지향 기본 공부");
  case 4 :
      System.out.println("객체지향 응용 공부");
  case 5 :
      System.out.println("자바 고급 공부");
      break;
  default :
      System.out.println("범위 초과");
  }
  
  //실행 후 1 입력시 
  	기본 문법 공부
    제어문 공부
    
 //실행 후 3 입력시
 	객체지향 기본 공부
    객체지향 응용 공부
    자바 고급 공부
    
//실행 후 6 입력시
	범위초과 가 출력된다.

📌if와 Switch 다이어그램 추가하기

profile
백엔드 개발자 지망생

0개의 댓글