묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
[코드]섹션 4 조건문_문제와 풀이1에 3번 풀이 궁금합니다.
안녕하세요 선생님.코드 작성에 궁금한 점이 있어 질문드립니다.하기 선생님께서 작성하신 코드는 int won을 else 블록으로 구별해서 진행하셨는데 제가 코드를 작성하다보니, int dollar 밑에 int won을 새로 작성, 표기하였습니다.해당 부분은 크게 상관이 없는 부분일까요? 궁금합니다! **선생님 작성 코드 public class ExchangeRateEx { public static void main(String[] args) { int dollar = 10; if (dollar < 0) { System.out.println("잘못된 금액입니다."); } else if (dollar == 0) { System.out.println("환전할 금액이 없습니다."); } else { int won = dollar * 1300; System.out.println("환전 금액은 " + won + "원입니다."); } } } **제가 작성한 코드public static void main(String[] args) { int dollar = 10; int won = 1300 * dollar; if (dollar < 0 ) { System.out.println("잘못된 금액입니다."); } else if (dollar == 0 ) { System.out.println("환전할 금액이 없습니다."); } else { System.out.println("환전 금액은 " + won + "원 입니다."); }
-
해결됨코틀린 고급편
제네릭 클래스를 정의하는 경우, 반드시 변성을 고려하는 것이 바람직한가요?
안녕하세요 강사님! 코루틴 강의를 너무 재밌게 들어서 고급편까지 오게 되었습니다. 지금 변성과 관련된 내용까지 수강하였고, 이 내용을 다음과 같이 이해하였습니다.변성은 타입 인자로 전달된 클래스 간의 상속 관계를 제네릭 클래스에도 적용하기 위한 개념이다.변성이 적용된 경우, 타입 안전성을 위해 생산자 또는 소비자 역할만을 수행할 수 있다. 그런데 저는 아직 개발 경험이 부족해서 그런지, 강의에서 보여주신 Cage<T>와 같은 상황이 발생할 수 있다는 점은 공감하지만 실제로 그런 상황을 마주한 적은 없던 것 같습니다. 아무래도 제가 작성했던 로직 상 타입 인자로 전달된 클래스의 상속 관계를 제네릭 클래스에도 적용해야 할 필요성을 느껴본 적이 없어서 그랬던 것 같은데, 이렇듯 로직 상 임의의 제네릭 클래스에 변성을 줄만한 이유가 없는 상황에서도 생산자 / 소비자의 역할을 고려하여 변성을 명시하는 것이 best practice인지 궁금합니다!
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
섹션 1 - 1 equals 재정의 하면 왜 hashcode도 재정의 해야하는지..
섹션 1 - 1 강의 내용.왜 equals 재정의 했다면 왜 hascode 도 재정의 해야하는지 이해가 되지 않습니다.
-
미해결스프링 핵심 원리 - 기본편
왜 순수한 자바로 테스트 해야 하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]1. 제목과 같은 내용입니다. 강의 어느 편인가 해당 내용에 대해서 짧게 답변 해주신 부분을 어렴풋이 본거 같은데 잊어서 질문 드립니다. 해당 질문에 대한 답변 또는 관련 영상을 혹시 아신다면 감사 드릴거 같습니다.2. 해당 질문에 대한 원인은 다음과 같습니다. 순수한 자바 코드가 스프링 프레임워크를 포함한 것보다 상대적으로 작은 범위여서 일단 공통 부분인 자바 파트에서 테스트를 하고 그 다음 스프링으로 가는 것이 맞겠다는게 처음 생각이었습니다. 근데 문득 이게 맞나 ? 명확한 근거가 아닌 저의 추측에 기반한 근거였기 때문에 1번의 설명과 같이 모호해서 질문을 드립니다.개발자인데 아직도 문서를 두서 없이 작성합니다.해당 부분에 있어 양해를 구합니다.읽어주셔서 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
Autowired 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]의존관계 자동주입에 대해 정리를 하던도 중 제가 이해한것이 맞는지 궁금하여 질문드립니다. 컨테이너에 빈을 등록하는 방법에는 대표적으로,1.컴포넌트 스캔을 통해 등록하는 방법2. 자바설정클래스를 통해 등록하는 방법3 xml 파일을 통해 등록하는 방법이 있고 이때 의존관계주입을 2번과 3번에서는 직접 구현체를 정의? 해주었지만컴포넌트 스캔을 사용할때 의존관계주입을 (OCP와 DIP 원칙을 지키며) 해주기 위해선 @Autowired 을 사용해야한다. 그리고 @Autowired 을 해주는 방법에는 아래와같은 방법이 있다.생성자주입필드주입setter 주입일반메서드 주입이렇게 이해하였는데 제가 이해 한 것이 맞나요?
-
미해결김영한의 실전 자바 - 기본편
자바 기초 이후 스프링
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 자바 입문부터 기초까지 전부 수강을 하였는데 이번 방학에 백엔드 커리를 타고 싶어서 중급, 고급편 나오기 전에 먼저 백엔드커리를 듣다가 중급,고급 나왔을 때 다시 와도되나요? 아니면 듣기전에 미리 선행해야하는 내용이 있을까요?
-
미해결스프링 핵심 원리 - 기본편
Test 오류..!
안녕하세요. 테스트 오류가 나서 질문 드립니다 !어디 부분을 수정해야 할지 모르겠습니다 ㅠㅠ package hello.core.order;import hello.core.acnnotation.MainDiscountPolicy;import hello.core.discount.DiscountPolicy;import hello.core.member.Member;import hello.core.member.MemberRepository;import lombok.RequiredArgsConstructor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Component;@Componentpublic class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository ; private final DiscountPolicy discountPolicy ; @Autowired public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } //테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; }}
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바로 개발하는 대부분의 메이저 회사들은 왜 Mac을 사용하나요?
인텔리제이와 이클립스는 둘 다 써보니 압도적으로 인텔리제이가 좋아 개발자들이 인텔리제이를 주로 사용하는 것을 이해했는데요. 맥이랑 윈도우는 똑같이 인텔리제이 사용하여 개발한다고 하면 단축키? 그런 것들 외에 크게 차이가 없는 것 같은데, 왜 대부분의 메이저 회사들은 맥을 사용하는 건가요?
-
미해결스프링 핵심 원리 - 기본편
request스코프와 컴포넌트 스캔
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 복습 중 궁금한 점이 생겨서 질문드립니다. 컴포넌트 스캔을 하게 되면 @component annotation이 붙은 객체를 스프링빈으로 등록해주는 것으로 알고 있습니다. 그런데 이 객체가 request 스코프일 경우 request요청이 있어야 스프링 빈으로 등록이 가능하다면 처음 스프링 애플리케이션을 실행할 때 @Component가 붙은 객체를 탐색하면서 @Scope("request")가 붙어있다면 스프링 컨테이너가 이 객체는 스프링빈으로 등록하지 않고 넘어가는 것인지 궁금합니다!
-
해결됨김영한의 실전 자바 - 기본편
객체지향 문제풀이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.문제풀이 1번 정사각형에 관한 질문을 드립니다.메서드의 반환타입을 다 작성하셨는데 꼭 작성을 해야하나요?void로 처리를 해도 상관없는거죠..?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
switch 문 break vs return
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Switch 문을 while 문 중간에 넣었을 때 break 는 중단되지 않았습니다. return 문은 프로그램을 종료시켰습니다. 왜 break 문은 쓸 수 없는지 궁금합니다!package method.ex; import java.util.Scanner; public class MethodEx4 { static Scanner sc = new Scanner(System.in); static int balance = 0; public static void main(String[] args) { while (true) { switch (chooseMenu()) { case 1 -> balance = deposit(); case 2 -> balance = withdraw(); case 3 -> checkBalance(); case 4 -> { printFooter(); return; // break 대신에 return 문 쓰기 } default -> printError(); } } } static int chooseMenu() { System.out.println("------------------------"); System.out.println("1.입금|2.출금|3.잔액 확인|4.종료"); System.out.println("------------------------"); System.out.print("선택: "); return sc.nextInt(); } static int deposit() { System.out.print("입금액을 입력하세요: "); int depositAmount = sc.nextInt(); balance += depositAmount; System.out.println(depositAmount + "을 입금하였습니다. 현재 잔액: " + balance + "원"); return balance; } static int withdraw() { System.out.print("출금액을 입력하세요: "); int withdrawAmount = sc.nextInt(); if (balance >= withdrawAmount) { balance -= withdrawAmount; System.out.println(withdrawAmount + "원을 출금하였습니다. 현재 잔액: " + balance + "원"); } else { System.out.println(withdrawAmount + "원을 출금하려 했으나 잔액이 부족합니다."); } return balance; } static void checkBalance() { System.out.println("현재 잔액: " + balance + "원"); } static void printFooter() { System.out.println("시스템을 종료합니다."); } static void printError() { System.out.println("잘못 번호를 입력하였습니다."); } }
-
미해결김영한의 실전 자바 - 기본편
대원칙... 값 변경 예제 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]VarChange1 예제에서 int b=a ; 일 경우a의 값이 20으로 변경되었다 해서a의 값만 변경되었기 때문에 b의값도 20으로 변경되지 않고 b=10 인 것으로 이해했습니다. 그런데 VarChage2 예제에서는 dataA의 값이 20으로 변경된 경우dataB의 값도 같이 20으로 변경 되었는데,VarChage1 의 예제와 차이점은 기본형과 참조형의 차이라고보면될까요? 참조형일 경우 같은 참조값을 바라보기 때문에 a의 값이 변경되면 b의값도 같은 값으로 불러온다고 이해하면될까요?
-
미해결스프링 핵심 원리 - 기본편
spring initializr 에서 자바 버전11이 없는데 어찌해야 하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]spring initializr 에는 자바 버전이 21과 17만 있던데요 다른 질문들 댓글 살펴봤더니 스프링부트 3버전으로 하면 17로 해도 된다던 댓글을 봤습니다. 정말 괜찮은건지 아니면 마이그레이션을 해서 부트 2버전대로 해야 하나요?감사합니다.
-
미해결김영한의 실전 자바 - 기본편
기본생성자 강의 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]만약 자바에서 '기본 생성자'를 만들어주지 않는다면 생성자 기능이 필요하지 않은 경우에도 모든 클래스에 개발자가 직접 기본 생성자를 정의해야 한다. 생성자 기능을 사용하지 않는 경우도 많기 때문에 이런 '편의 기능'을 제공한다.위 내용에 관한 질문입니다.생성자가 필요하지 않는 경우에도 생성자를 정의해야 된다는게 무슨말인지 이해가 안가서요 생성자 기능을 사용하지 않는 경우 생성자가 필요없다는 뜻 아닌가요?근데 왜 개발자가 직접 기본 생성자를 정의해줘야 하는거죠?문맥이 이해가 가질 않아서요
-
미해결스프링 핵심 원리 - 기본편
옵션 처리
안녕하세요.테스트 진행 중 setNoBean1메서드를 required = false로 처리한 경우 호출되지 않아야 하는데저는 호출 된 상태에서 null값이 나오고 Bean2메서드가 호출되지 않았습니다 ㅠㅠ어떤 게 잘못 된걸까요 ㅜㅜ?
-
해결됨스프링 핵심 원리 - 기본편
중복오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.중복 오류가 떠서 제가 생각할 때는 AutoAppConfig에서도 빈에 올리고 AppConfig에서도 빈에 올리니까 이중으로 올려서 그런 것 같습니다.그래서 중복으로 올리는 @Bean을 지워봤는데 rateDiscount에서도 오류가 뜹니다 코드에 잘못된 부분이 있을까요..? 코드는 아래에 있습니다.https://drive.google.com/file/d/1bkiOBsAqY9TZ0dZnuh6LmQXizHIcJryx/view?usp=sharing
-
미해결스프링 핵심 원리 - 기본편
request 스코프 질문입니다.
1.클라이언트 A가 HTTP request를 Controller에 요청한다.Controller은 request scope에 요청하여 빈 인스턴스가 생성된다.클라이언트가 동일한 HTTP request를 Service에 보내면 기존에 이미 만들어진 A 전용 빈 인스턴스를 사용한다.클라이언트 B가 HTTP request를 요청하면 마찬가지로 B 전용 빈 인스턴스가 만들어지고 위와 동일한 과정을 거친다.로 이해하면 될까요? 2.여기서 message가 하는 기능은 무엇이고, init()과 close() 메소드 내에서 this를 왜 넣어줬는지 궁금합니다. 3.여기서 provider이 왜 해결방법인지 이해가 안갑니다... provider가 DL기능을 하는 거로 아는데, 어차피 이때도 사용자의 요청을 받은 상태가 아니기 때문에 오류가 발생하는거라고 생각했습니다.
-
해결됨스프링 핵심 원리 - 기본편
Annotationconfigapplicationcontext 클래스의 생성자 설명
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]위와 같이 AnnotationConfigApplicationContext 클래스 내부 API를 보면 많은 생성자들이 오버로딩 되어있는데 각각의 생성자 기능이 정확히 어떤 건지 궁금합니다 !특히 그냥 설정 정보 클래스를 하나 지정했을 때와 여러 개의 클래스를 지정했을 때 어떤 차이가 있는지 궁금합니다!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ScannerWhileEx4 문제
int totalCost = 0; 을 왜 while문 안에 쓰면 안 되고(제가 주석 달아 놓은 부분) while문 밖에 써야 하나요?while문 안에 썼을 때 총 비용이 0으로 나오는 오류가 발생했는데 왜 그런 오류가 발생한 건지 모르겠습니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
변수의 값과 리터럴
변수타입 1 강의에서 7:20 쯤 설명하시는 리터럴에 대해 이해가 잘 되지 않는 점이 있습니다. 변수의 값은 변할 수 있지만 리터럴은 개발자가 직접 입력한 고정된 값이다. 따라서 리터럴 자체는 변하지 않는다. 라고 강의 내용과 강의자료에 설명이 되어있습니다. 위 내용이 무슨 뜻인지이해가 잘 안됩니다.개발자가 변수에 입력한 값이 리터럴 이고,, 리터럴을 수정하면 변수 값이 변하는 것 아닌가요?