배운 내용 🏃
드디어 꽃인 조건문을 배운다.. 무섭다
조건문을 알아보자
Java 프로그래밍에서 특정 조건에 따라 다른 연산을 수행하고싶을때 조건문을 한다.
또는, 특정 조건에 따라 반복해서 동일한 연산을 수행하고 싶을때 반복문을 사용한다.
조건문❓ : “물이 끓으면 강불에서 약불로 줄여주세요.”
“물이 끓으면”이 조건이 만족하면 “약불로 줄이는” 연산을 수행하는 조건문 입니다.
반복문🔁 : “하얗게 색이 변하기 전까지 계속 저어주세요.”
“하얗게 색이 변하기 전” 조건이 만족할 동안 “저어주세요” 연산을 반복하는 반복문 입니다.
• 만약에 ❓ : 조건문 - if, switch
if 문
if (조건) 이란 ?
• 특정 조건에 따라 다른 연산을 수행하고 싶을때 사용하는 문맥
• 기본적인 조건에 따른 연산을 수행하기 위해 if(조건) { 연산 } 형태로 사용
• if 의 소괄호() 안의 조건이 boolean 값 true 를 만족하면 중괄호 {} 안의 연산을 수행
짧게 코드로 한번 알아보자.
// 조건문
boolean flag = true;
if (flag) {
System.out.println("flag 값은 true 입니다."); // flag 값은 true 입니다. 출력
}
if(조건)-else 이란?
• if문 조건이 거짓일 경우에 따른 연산을 수행하기 위해 else { 연산 } 형태로 사용
• if 의 소괄호() 안의 조건이 boolean 값 false 를 만족하면 else 의 중괄호 {} 안의 연산을 수행
짧게 코드로 보자
// 조건문 with else
boolean flag = false;
if (flag) {
System.out.println("flag 값은 true 입니다."); // 미출력
} else {
System.out.println("flag 값은 false 입니다."); // flag 값은 false 입니다. 출력
}
if(조건)-else if(조건) 알아보자
• if문 조건이 거짓일 경우에 다시한번 다른조건으로 체크해서 참일 경우에 연산을 수행하기 위해 else if(조건) { 연산 } 형태로 사용
• else if 의 소괄호() 안의 조건이 boolean 값 true 를 만족하면 else if 의 중괄호 {} 안의 연산을 수행
코드
// 조건문 with else if
int number = 2;
if (number == 1) {
System.out.println("number 값은 1 입니다."); // 미출력
} else if (number == 2) {
System.out.println("number 값은 2 입니다."); // number 값은 2 입니다. 출력
} else {
System.out.println("number 값은 모르는 값입니다."); // 미출력
}
중첩 if(조건) !
• if 문 에 else , else if 로 해결할 수 없는 복잡한 조건이 있을 수 있다
• 이럴때 중첩해서 if 문 또는 else if문 또는 else 문 안에 if 문 을 넣을 수 있다
// 중첩 조건문
boolean flag = true;
int number = 2;
if (flag) {
if (number == 1) {
System.out.println("flag 값은 true, number 값은 1 입니다."); // 미출력
} else if (number == 2) {
System.out.println("flag 값은 true, number 값은 2 입니다."); // flag 값은 true, number 값은 2 입니다. 출력
}
} else {
if (number == 1) {
System.out.println("flag 값은 false, number 값은 1 입니다."); // 미출력
} else if (number == 2) {
System.out.println("flag 값은 false, number 값은 2 입니다."); // 미출력
}
}
중첩 if 문 활용 - 가위바위보의 승자를 알려주는 프로그램 만들어 보기
입력 : 첫번째 입력 A유저가 낸 가위바위보 / 두번째 입력 B유저가 낸 가위바위보
출력 : 누가 이겼는지 출력
// 조건문으로 가위바위보 만들기
import java.util.Objects;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("A 입력 : ");
String aHand = sc.nextLine(); // A 입력
System.out.print("B 입력 : ");
String bHand = sc.nextLine(); // B 입력
if (Objects.equals(aHand, "가위")) { // 값을 비교하는 Obects.equals() 메서드 사용
if (Objects.equals(bHand, "가위")) {
System.out.println("A 와 B 는 비겼습니다."); // A 와 B 의 입력값을 비교해서 결과 출력
} else if (Objects.equals(bHand, "바위")) {
System.out.println("B 가 이겼습니다.");
} else if (Objects.equals(bHand, "보")) {
System.out.println("A 가 이겼습니다.");
} else {
System.out.println(" B 유저 값을 잘못 입력하셨습니다.");
}
} else if (Objects.equals(aHand, "바위")) {
if (Objects.equals(bHand, "가위")) {
System.out.println("A 가 이겼습니다.");
} else if (Objects.equals(bHand, "바위")) {
System.out.println("A 와 B 는 비겼습니다.");
} else if (Objects.equals(bHand, "보")) {
System.out.println("B 가 이겼습니다.");
}
} else if (Objects.equals(aHand, "보")) {
if (Objects.equals(bHand, "가위")) {
System.out.println("B 가 이겼습니다.");
} else if (Objects.equals(bHand, "바위")) {
System.out.println("A 가 이겼습니다.");
} else if (Objects.equals(bHand, "보")) {
System.out.println("A 와 B 는 비겼습니다.");
}
}
}
}
// 입/출력 예시
// A 입력 : 가위
// B 입력 : 보
// A 가 이겼습니다.
switch(피연산자) / case(조건)이란 ?
• switch 문은 case 문과 함께 사용하며 if문 보다 좀더 가독성이 좋은 조건문 표현식이다
• switch(피연산자) { case(조건): (연산) } 이러한 형태로 많이 쓰이며,
switch 피연산자 가 case 조건 을 만족하면 case: 뒤에 명시되어 있는 연산을 수행한다
• case(조건): (연산) 은 여러개를 설정이 가능하다
• 각 case 의 연산문 마지막에는 break; 를 꼭 넣어줘야 한다
• break;이 뭐냐 !? - break; 문은 해당 case의 연산문이 끝났다는것을 알려주어 switch 문을 종료 시킨다
• 만약 break;를 안쓴다면 ? - case 의 연산문이 안끝났기 때문에 블럭이 끝날때까지 실행된다
예시코드
// switch/case 문
int month = 8;
String monthString = "";
switch (month) {
case 1: monthString = "1월";
break;
case 2: monthString = "2월";
break;
case 3: monthString = "3월";
break;
case 4: monthString = "4월";
break;
case 5: monthString = "5월";
break;
case 6: monthString = "6월";
break;
case 7: monthString = "7월";
break;
case 8: monthString = "8월";
break;
case 9: monthString = "9월";
break;
case 10: monthString = "10월";
break;
case 11: monthString = "11월";
break;
case 12: monthString = "12월";
break;
default: monthString = "알수 없음";
}
System.out.println(monthString); // 8월 출력
스프링 부트는 무엇인가?
• 스프링 부트를 사용하면 "바로 실행"할 수있는 스탠드얼론 프로덕션급 스프링 기반 애를리케이션을 쉽게 만들 수 있다
• spring-boot-staterparent 의존성은 스프링 부트-기반 애플리케이션에 대한 의존성 및 플러그인 관리를 제공하는 부모 POM이다.
• spring-boot-dependencies는 스프링 부트가 사용하는 모든 의존성에 대한 기본 의존성 관리를 제공한다
의존성의 특정 버전을 덮어쓰려면 애플리케이션의 pom.xml 파이레 적절한 이름을 가진 등록정보를 제공해야한다.
여러 버전의 프레임워크 간 호환성은 개발자가 직면하고 있는 주요 문제중 하나다.
스프링의 특정 버전과 호환되는 최신 스프링 세션 버전은 어떻게 찾을까? 답은 문서를 읽는 것이다.
그러나 스프링 부트를 사용하면 spring-boot-staterparent의 해당 특정 버전의 사용하기 위해 애플리케이션을 업그레이드하면 모든 의존성이 새 스프링 버전과호환되는 버전으로 업그레이드하게 된다.
스프링 부트의 오해
• 스프링 부트는 코드 생성 프레임워크가 아니기 때문에 코드를 생성하지 않는다
• 스프링 부트 애플리케이션 서버, 웹 서버도 아니다. 다양한 애플리케이션 및 웹 서버의 통합을 제공한다
• 스프링 부트는 특정 프레임워크나 스펙을 구현하지 않는다
스프링 자동 설정
빈 | 설명 |
basicErrorController, hanlderExceptionResolver | 기본 예외 처리다. 예외가 발생할 때 기본 에러 페이지를 표시한다 |
beanNameHandlerMapping | 핸들러(컨트롤러)에 대한 경로를 확인하는 데 사용하면 된다 |
carcterEncodingFilter | 기본 문자 인코딩 UTF-8을 제공한다 |
dispacherSerlvet | DispacherServlet은 스프링 MVC 애플리케이션의 프런트 컨트롤러이다 |
jacksonObjectMapper | 객체를 XML 또는 JSON으로 또 그 반대로 변환하는 기본 메시지 컨버터다 |
mutipartResolver | 웹 애플리케이션의 파일 업로드 지원을 제공한다 |
mvcValidator | HTTP 요청의 검증을 지원한다 |
viewResolver | 논리적 뷰 이름을 물리적 뷰로 해석한다 |
restTemplateBuilder | REST 서비스를 호출하는 데 사용한다 |
마무리 🔥
조건문 if문에 대해 공부했다 if문은 자주 쓰니 잘 이해 해야 겠다
'TIL' 카테고리의 다른 글
TIL - 2024/04/29 (0) | 2024.04.29 |
---|---|
TIL - 2024/04/26 (0) | 2024.04.26 |
TIL - 2024/04/24 (0) | 2024.04.24 |
TIL - 2024/04/23 (0) | 2024.04.23 |
TIL - 2024/04/22 (0) | 2024.04.22 |