묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 1편
instanceof
Instanceof 는 obj 가 어떠한 타입을 참조하고 있는지 알려줄 뿐만 아니라 자동으로 다운 캐스팅도 해주나요 ?아니면 if( obj instanceof Dog) 가 아니라 if (obj instanceof Dog dog) 여서 다운 캐스팅이 저 괄호 안에서 다 처리가 된건가요 ? (제가 첫번째 질문자인 것을 영광스럽게 생각합니다 ㅎㅎ...)
-
미해결자바스크립트 비기너: 튼튼한 기본 만들기
선생님 Objcet 질문 있습니다.
안녕하세요. 선생님대문자Object와 소문자objcet의 차이점에 대한 질문이 있습니다.네이티브 오브젝트가 대문자Object,호스트 오브젝트가 소문자 object인 것으로 이해 하였고Global 오브젝트는 네이티브 오브젝트에 포함되어 있다고 이해 하였습니다.섹션11 강의인 Global 오브젝트의 프로퍼티들은 전역 범위의 프로퍼티이고호스트 오브젝트에 소문자 Global objcet(window)도 전역 범위에 항상 존재하는데Global 오브젝트의 프로퍼티들이 소문자 Global objcet(window)에서 사용된다고 봐야할까요?아니면 네이티브 오브젝트의 전역 범위에서 Global 오브젝트의 프로퍼티들이사용되는 것 일까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
패키지 이동 했을 때 디버깅이 안됩니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]사진처럼 원래는 각각 패키지를 따로 만들었다가 이번에 인프런(inflearn)이라는 상위 패키지를 하나 만들고 그 아래로 다 이동시켰는데 갑자기 이렇게 뜨면서 디버깅 실행이 안되네요. 혹시 해결방안이랑 원인이 뭔지 알 수 있을까요?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Scanner에서 홀수 짝수 문제 오류 질문?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Scanner에서 두 번째 문제 홀수 짝수에서 음수를 입력해도 결과가 나옵니다.혹시 오류인 것인지?아니면 package scanner; import java.util.Scanner; public class ScannerEx2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("하나의 정수를 입력하세요: "); int num = scanner.nextInt(); while (true) { if (num % 2 == 0 && num >= 0) { System.out.println("입력한 숫자 " + num + "는 짝수 입니다."); break; } else if (num % 2 == 1 && num > 0) { System.out.println("입력한 숫자 " + num + "는 홀수 입니다."); break; } else { System.out.println("0이상의 정수를 입력해주세요"); System.out.print("하나의 정수를 입력하세요: "); num = scanner.nextInt(); } } } }위와 같이 하는 것이 맞을까요? ( 음수도 홀짝이 있나요..?)
-
미해결김영한의 실전 자바 - 기본편
섹션9상속-상속과 메모리 구조 질문있습니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 강사님! 강의 너무 잘 보고 있습니다 짱...섹션9상속-상속과 메모리 구조 10분 전후 내용에서 질문이있습니다!이 페이지에서 그림에서ElectricCar 부분에 move()가 없으니Car부분으로 가서 move()를 찾잖아요!(현재 타입에서 기능을 찾지 못하면 상위 부모 타입으로 가서 찾는다!) 만약에 Car에도 뭔가 상속이있었고,Car의 부모에도 상속이있었고.. 이처럼Car위에도 상속이 이어졌을경우 그림의 Car네모칸안에 위의 부모 객체들도 여러개 생성되는 건가요??(초록 = Car의 부모 'CCar 객체'회색 = CCar1의 부모 'CCCar2객체'.. )모든 기능을 이용 가능해야 하니까저는 위의 그림처럼 되어야 한다고 이해했는데맞는지 궁금해서 질문 올립니다!! 아직 뒤의 강의를 안봐서 중복된 내용일수도 있는점 미리 사과드립니당..//
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
피라미드를 찍을 때 for을 두개만 이용해서 가능하시다고 하셨는데
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]피라미드를 찍을 때 for을 두개만 이용해서 가능하시다고 하셨는데. 어떻게 해야하나요?처음에 for을 4개를 썼다가 강사님 말씀 듣고 for을 3개로 줄였는데, 도무지 2개로는 못하겠슴다...아래는 제가해본 코드입니다.package loop; public class LoopEx8 { /* public static void main(String[] args) { int rows = 9; for (int i = 1; i <= rows; i++ ) { for (int k = rows - i; k >= 1; k--) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("* "); } for (int h = 1; h <= i -1; h++) { System.out.print("* "); } System.out.println(); } } */ public static void main(String[] args) { int rows = 9; for (int i = 1; i <= rows; i++) { for (int j = rows; j >= i + 1; j--) { System.out.print(" "); } System.out.print("* "); for (int k = i; k >= 2; k--) { System.out.print("* * "); } System.out.println(); } } }
-
해결됨김영한의 실전 자바 - 기본편
static 메서드와 this 관련해서 질문이 있습니다.
public class DecoData { private int instanceValue; private static int staticValue; public static void staticCall() { System.out.println(this.instanceValue); } .... }안녕하세요! 강의에서 "static 영역 입장에서 힙 영역에 있는 인스턴스의 참조값을 몰라서 인스턴스 변수에 접근할 수 없다." 라고 얘기를 해주셨는데 그러면 this는 클래스 본인의 인스턴스 참조값이니 이 this를 이용하면 static 메서드에서도 인스턴스 변수에 접근할 수 있지 않을까? 라는 생각을 해서 코드를 짰는데 오류가 났습니다. 왜 static 메서드 영역에서 this를 사용해도 인스턴스 변수에 접근할 수 없나요?감사합니다.
-
미해결스프링 핵심 원리 - 기본편
스프링 빈 조회 관련 질문 있습니다
"스프링 빈 조회" 내용 중 질문 있습니다.아래는 제가 질문이 있는 코드 부분입니다.class ApplicationContextBasicFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("빈 이름으로 조회") void findBenaByName() { MemberService memberService = ac.getBean("memberService", MemberService.class); assertThat(memberService).isInstanceOf(MemberServiceImpl.class); } ,,, }여기서 빈을 조회할 때는 타입을 MemberService.class로 조회하는데 조회한 빈을 검증할 때에는 MemberServiceImpl.class 로 이 타입의 인스턴스 인지를 확인하는데 이렇게 하는 이유가 AppConfig에서 memberService() 메소드가 스프링빈으로 등록될 때 아래 처럼 반환하는 객체가 MemberServiceImpl 이라서 빈에 등록될 때 MemberServiceImpl 로 등록되어서 그런건가요??@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } ,,, }직접해보니 isInstanceOf(MemberService.class)도 되더라구요.제가 아직 배우는 단계라 살짝 헷갈려요 ㅠㅠ 문장이 너무 길지만 알려주시면 감사하겠습니다 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
Cannot invoke "hello.core.member.Member.getGrade()" because "member" is null
20번째 줄에서 오류가 발생합니다。멤버는 잘 등록된것을 확인 했습니다。discountPolicy에서 죽는것 같습니다。 관련 클래스입니다。아래 getGrage()에서 오류가 발생 하는듯
-
미해결김영한의 실전 자바 - 기본편
예외처리
학교 수업에서 예외처리를 먼저 진도 나가서 그러는데, 예외 처리의 경우에만 중급편 앞쪽 강의를 건너뛰고 예외처리 먼저 들어도 괜찮을까요? 그리고 고급편 강의에서는 어떤 것을 다뤄주실 예정이신지 대략적으로라도 여쭤볼 수 있을까요 ?!!!!
-
해결됨스프링 핵심 원리 - 기본편
공부법에 대해서 궁금해요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.현재 스프링을 공부중에 있습니다.김영한님의 커리큘럼 순서대로 가려고 하는데 궁금한 점은 1. 스프링 입문부터 스프링 부트 - 핵심 원리와 활용까지 그냥 쭉 한번 보면서 코드 따라 치고 다시 처음부터 복습하는 게 좋을까요? 2. 아니면 입문을 보고 다음으로 넘어가면서 새로운 거 학습 + 입문 복습 이렇게 하는 게 좋을까요?어떤 공부법이 더 좋을지 궁금합니다.제 상태는 거의 스프링 초보라고 생각하시면 됩니다.현재는 이해가 안되더라도 1번 형태로 쭉 한번 따라하고 2번째부터 2번 방식으로 할 예정입니다.
-
미해결스프링 핵심 원리 - 기본편
다형성
다형성 만으로는 구현 객체를 변경할 때 클라이언트 코드도 함께 변경된다 라고 하셨는데 이해가 안갑니다 ㅠㅠㅠㅠㅠㅠ
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
버전 21에서 Oracle OpenJDK21은 없습니다
[질문 내용]버전 21에서 Oracle OpenJDK21은 없습니다. 어떻게 해야하나요?
-
미해결김영한의 실전 자바 - 기본편
import관련 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.패키지 import를 할때 import는 하나만 할 수 있다고 하셨는데 a패키지와 b패키지에 클래스명이 User로 같아서 하나만 할 수 있다는건가요? 직접해보니까 c라는 패키지를 만들어서 클래스명을 User로 안하니까 import가 되더라고요 만약 그렇다면 강의에서 보통 자주쓰는 패키지를 임포트하고 다른 패키지는 풀네임으로 쓴다고 하셨는데 그냥 클래스명만 조금 바꾸고 둘다 임포트해서 쓰는게 더 낫지 않나요?
-
미해결김영한의 실전 자바 - 기본편
블로그 포스팅 관련 질문입니다.
안녕하세요 김영한 선생님.Node 계열로만 개발 하다가 Spring을 시작하게된 학생입니다.블로그에 정리를 하면서 수강을 할까 싶은데 강의 화면을 캡처해서 부연설명을 다는 식으로 포스팅을 하면 문제가 될까 싶어 먼저 여쭤봅니다..!
-
미해결김영한의 실전 자바 - 기본편
섹션2 문제와풀이 ProductOrderMain3 문제 이렇게 풀어보았습니다.
package ref.ex; import java.util.Scanner; public class ProductOrderMain3 { static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { System.out.print("입력할 주문의 개수를 입력하세요: "); int arrayLength = scanner.nextInt(); ProductOrder[] orders = createOrder(arrayLength); printOrders(orders); System.out.println("총 결제 금액: " + getTotalAmount(orders)); } static ProductOrder[] createOrder(int arrayLength) { ProductOrder[] orders = new ProductOrder[arrayLength]; for (int i = 0; i < arrayLength; i++) { orders[i] = new ProductOrder(); scanner.nextLine(); System.out.println((i + 1) + "번째 주문 정보를 입력하세요."); System.out.print("상품명: "); orders[i].productName = scanner.nextLine(); System.out.print("가격: "); orders[i].price = scanner.nextInt(); System.out.print("수량: "); orders[i].quantity = scanner.nextInt(); } return orders; } static void printOrders(ProductOrder[] orders) { for (ProductOrder order : orders) { System.out.println("상품명: " + order.productName + ", 가격: " + order.price + ", 수량: " + order.quantity); } } static int getTotalAmount(ProductOrder[] orders) { int totalAmount = 0; for (ProductOrder order : orders) { totalAmount += order.price * order.quantity; } return totalAmount; } }다 풀고 선생님 풀이 보니까 훨씬 간결하게 느껴지네요 ㅠㅠ 메인 메소드를 줄이려고 배열을 생성하고 사용자가 값을 넣는 부분을 메인 메소드 밖에 만드려고 시도하였습니다. 그러다보니 스캐너를 클래스범위에서 생성해야했었고 createOrder메소드의 타입과 매개변수도 바꾸는 등 대대적으로 다 바꾸는 고생을 해야 했습니다 하면서 사용자가 값을 입력하는 부분과 그걸 받아서 배열에 집어넣는 부분을 구분하여 메소드를 하나 더 만드는게 좋다고 생각했으나 하다보니 산으로 가버려서 createOrder메소드가 지나치게 많은 역할을 하고 커져버린 것 같습니다. 피드백 부탁드립니다!
-
미해결스프링 핵심 원리 - 기본편
설정 관련
강의 노트에서 build and run using과 run tests using 설정에서 spring3.2 이상부터는 Gradle을 설정하라고 하셨는데검색했더니 run tests using를 IntelliJ로 설정해야 테스트 코드를 실행했을 때 성공테스트 목록이 보인다고 하는데run tests using만 intelliJ로 설정해도 코드가 돌아가는데 이상이 없을까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
섹션2 변수 선언과 초기화
[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 선생님께서 컴파일 완료된 것들은 out 폴더에 보인다고 하셨는데 hellojava랑 main만 보이고 나머지도 모두 컴파일 완료 했는데 out 폴더에서 보이지 않습니다.왜 그런건가요?? 그리고 out 폴더에서 보이지 않는다면 문제가 있을까요?
-
미해결스프링 핵심 원리 - 기본편
request 스코프] CoreApplication 오류 납니다.
build.gradle에 웹 라이브러리 추가하고 dependencies { implementation 'org.springframework.boot:spring-boot-starter' implementation 'jakarta.inject:jakarta.inject-api:2.0.1' //web 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-web'CoreApplicaton을 돌렸더니, 아래와 같은 오류 메세지가 뜹니다. 대충 어떤 오류인지는 알겠는데.....어떻게 찾아서 고쳐야 할지는 모르겠네요? Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.Parameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found: - memoryMemberRepository: defined in file [C:\SpringBoot\core\out\production\classes\hello\core\member\MemoryMemberRepository.class] - memberRepository: defined by method 'memberRepository' in class path resource [hello/core/AppConfig.class]This may be due to missing parameter name informationAction:Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumedEnsure that your compiler is configured to use the '-parameters' flag.You may need to update both your build tool settings as well as your IDE.
-
해결됨스프링 핵심 원리 - 기본편
빈 생명 주기 콜백에서 생성자 주입 -> setter 주입으로 코드 변경 시 이벤트 라이프 사이클 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]해당 강의에서 섹션 8 부분 ( 빈 생명 주기 콜백 시작 ~ 애노테이션 @PostConstruct, @PreDestroy)를 수강하던 중에 궁금한 점이 생겼습니다. Q. 생성자 주입 방식에서 Setter 메소드 주입 방식으로 코드를 변경 했을 때강사님께서 말씀하셨던 스프링 빈의 이벤트 라이프 사이클 과실제 프로그램 실행 과정이 일치하는지 확인해보았는데일치하지 않는 것 같아서 관련 내용 문의 드립니다. ( 실제 강의에서는 setter 방식으로 변경하는 내용은 나오지 않았습니다.setter 메소드 주입으로 바꿨을 때 실제 라이프 사이클이 어떻게 돌아가는지 궁금해서제가 임의로 코드 변경하였습니다..혹시 이런 질문이 안된다면 글 삭제하겠습니다 ㅠㅠ참고로 setter 로 변경한 코드는 댓글에 남겨두었습니다.) [강사님께서 말씀하셨던 스프링 빈의 이벤트 라이프 사이클]스프링 컨테이너 생성 → 스프링 빈 생성 → 의존 관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료 [생성자 -> setter 로 변경 후 실행했을 때 결과값] 의존 관계 주입 되기 전에 초기화 콜백이 먼저 호출되는데 그러면 이벤트 라이프 사이클을 벗어나는 내용 아닌가요? 혹시 제가 setter 로 주입하는 코드를 제대로 구현하지 못해서 이런 일이 발생한 것일까요?ㅠㅠ ( + 사실 setter 방식일 때 의존 관계가 주입되는 시점이 정확히 어떤 부분인지에 대해서도 제대로 이해를 못한 것 같습니다. )