묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
brew search jdk 에러
안녕하세요 선생님 유튜브 파이썬 강의 듣고 만족해 유튜브 자바 강의도 듣고 있습니다. 그러나 맥북 jdk설치 과정부터 막혀 도저히 진도가 나가질 않습니다.지식인에 물어보고 gpt에 물어보고 아무리 인터넷을 찾아서 따라해봐도 계속 에러가 납니다... 심지어 여기 커뮤니티에서 다른 사람이 질문했던거 따라해도 다시 에러가 나요 ㅜㅜㅜㅜ 다시 다 지우고 처음부터 해봤는데도 안되네요brew search jdk 이 과정만 입력하면 계속 같은 에러가 뜨네요..진짜 컴맹 코딩생초보라ㅜㅜ 어떻게 해야될지 모르겠어서 선생님께 직접 자문을 구하고자 결국 수강료 내고 여쭤봅니다... 자세하고 친절한 설명 부탁드립니다.. 번거롭게 해드려 죄송해요ㅜ
-
해결됨김영한의 실전 자바 - 기본편
밑의 참조 배열에 관한 질문 답변에 조금.. 이해가 안가서 다시 질문해요 ㅠㅠ.
이런식으로 Product라는 클래스를 만들고 컬렉션을 이용해서 products 변수를 만들어서 그 안의 객체를 생성해서 넣었습니다.그리고 또 다른 productTest라는 변수를 만들어서 이번에 products의 값들을 new ArrayList를 통해서 값을 전달했다고 한다면productTest의 배열의 첫번째 인덱스 값이 products의 첫번째 인덱스 값을 가리키는 것과 같은거 아닌가요? 그렇게 된다면 productTest에서 값을 수정한다면 원본 데이터 값에도 영향을 받아야 하므로 products.get(0).getName() 값도 결국 "테스트제품"으로 바꿔져야 하는데 원본 데이터는 영향을 받지 않더라구요... ㅠㅠ왜 이런건지 잘 모르겠습니다..참조 배열 안에 있는 값도 결국 객체의 메모리 주소값을 가리키게 된다면, 새로운 배열을 만들어서 값을 복사해서 대입하게 되더라도 해당 객체를 가리키는 메모리 주소값을 접근하는 것이 하나 더 생기는거 아닌가요?
-
해결됨김영한의 실전 자바 - 기본편
참조형 배열에 관한 질문!!
이 강의에서 배운 내용을 토대로 참조형 배열에 관해 궁금한 점이 있습니다. 참조형 배열도 결국 배열 안에 메모리 주소값을 저장하여 인덱스를 통해 메모리 주소값에 접근하는 방식인가요?예를 들어서 List<Item> items = new ArrayList<>(); 이런 식으로 Item 타입을 가지는 items라는 배열을 생성했다라고 하면, 이 안에 인덱스 번호를 통해 배열 안의 위치에 접근하면 Item 객체에 관한 메모리 주소값이 있을테고, 이 메모리 주소값에 접근하는 방식인가요? 만약 List<Item> item = new ArrayList<>(); 배열 변수를 선언하고 배열 안에 값을 넣었다고 생각을 한다면, 강의에서 말했듯, " 자바는 항상 변수의 값을 복사해서 대입한다 " 라는 말이 있는데 여기서 궁금한게, 또 다른 새로운 배열을 만들어서 해당 item을 복사해서 넣는다고 한다면 즉, List<Item> anotherItem = new ArrayList<>(item);이런식으로 item 안에 값들을 anotherItem으로 새로운 배열을 만들어서 집어넣는다면, anotherItem 안에 값들을 수정해도 item에는 영향을 미치지 않나요? 만약 영향을 미치지 않는다면 왜 그런지 궁금합니다.결국 객체의 메모리 주소에 접근할텐데.. (너무 헷갈립니다 ㅠㅠ)
-
해결됨김영한의 실전 자바 - 기본편
섹션 8. final pdf 내용 중 오타 발견하여 제보합니다.
안녕하세요. 영한님!스프링 강의에 이어 자바 강의까지 정말 재미있게 듣고 있습니다! ㅎㅎ다름이 아니라 섹션 8 final > final 변수와 상수 1 에서 오타를 발견하여 제보합니다.값은 이 제거되어야 할 것 같습니다. 😄영한님 덕분에 자바 모르고 지나쳤던 부분에 대해 짚고 넘어갈 수 있었습니다. 이후 공개될 자바 중급, 고급편도 무척이나 기대되네요! ㅎㅎ 항상 감사합니다. 연말 마무리 잘하시고 새해 복 많이 받으세요 🧧
-
미해결김영한의 실전 자바 - 기본편
계좌 예제문제
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 7강 예제문제 scanner 넣어서 만들다가 컴파일 돌리면 Process finished with exit code 0 이런 에러가 떠서 질문드립니다 .. 에러 뜨는 곳은 없는데 어디가 잘못되어서 컴파일이 안되는지 궁금합니다 .. 감사합니다
-
미해결김영한의 실전 자바 - 기본편
다형성과 인스턴스 생성 관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 이번 강의를 들으며 다형성과 추상클래스, 인터페이스 개념적인 부분 관련해서 이해가 잘 되었습니다.그런데 다형성 관련부분 들을때부터 의문이 들었던.. 메인 쪽에서 인스턴스 생성 부분이 이해가 가지 않아 질문 드립니다. 왜 InterfaceA a = new child() ; 처럼인스턴스를 생성해서 써야 하는건가요?Child a = new child() 로 생성해서메소드를 호출했을 때의 문제점이 뭔가요?문제점 보다는 코드 중복제거와 같은 효율성 때문인가요? 위의 인스턴스 대로라면,부모클래스의 메소드를 찾아서 해당 메소드가 자식 클래스에 있다면 자식 클래스를 우선 호출하거나, 부모클래스가 추상이나 인터페이스라면 오버라이딩 된 자식 클래스의 메소드를 호출할텐데, 인스턴스 생성시부터 부모 a = new 자식 으로왜 생성하는지가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
CoreApplication에 대한 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.CoreApplication의 @SpringBootAplication에는 @ComponentScan이 들어있다고 하셨습니다.그러면 스프링 빈 등록을 할 때 AutoAppConfig가 아니라 CoreApplication을 써도 될 것 같다는 생각이 들었습니다.그래서 방금 테스트한 코드를 이렇게 수정해보았습니다.public class AutoAppConfigTest { @Test void basicScan() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(CoreApplication.class); MemberService memberService = ac.getBean(MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); }}하지만 제가 @Component를 사용하지 않은 MemberService 도 같이 bean으로 등록되어 있어서 NoUniqueBeanDefinitionException이 발생했습니다. 왜 CoreApplicaion을 사용하면 이러한 오류가 나는 건지 궁금합니다. 그리고 이것이 AutoAppConfig의 역할을 대체할 수 있는지 궁금합니다
-
해결됨스프링 핵심 원리 - 기본편
Lombok testcode질문
Lombok설치이후 test를 전부 test했더니 오류코드가 발생합니다.. 어떤점이 잘못되었을까요? https://drive.google.com/file/d/1MuwBRL6nZkJ1fB3GokLDo3hEAufjOCHq/view?usp=sharing 또한 오류를 잡을때 아직 초보라그런지 어디에서 잡아야하고 어떤부분을 고쳐야하는지 감이오지를 않습니다 조언해주실수있으실까요?
-
해결됨스프링 핵심 원리 - 기본편
spring container 질문입니다
영한님 강의에 annotationconfigapplicationcontext이 스프링 컨테이너를 만들어주어 여기서 이제 관리한다고 알고있습니다.class OrderServiceImplTest { @Test void createOrder() { OrderServiceImpl orderService = new OrderServiceImpl(); orderService.createOrder(1L, "itemA", 10000); } } @Bean public OrderService orderService() { System.out.println("call AppConfig.orderService"); return new OrderServiceImpl(memberRepository(), discountPolicy()); // return null; }@Component public class OrderServiceImpl implements OrderService{ @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); } } 1 .여기 세개의 코드를 보면 첫번째에는 annotationconfigapplicationcontext 를 선언해주지않았는데 스프링컨테이너에 저장이될수있는건가요?Component는 클래스를 빈으로 등록해줘 ~ 라는느낌으로 알고있습니다. 첫번째코드를 실행시켰을때 두번째코드인 return new OrderServiceImpl(memberRepository(), discountPolicy()); 에서 에러가 발생합니다. 강의와 구글링을 검색했는데 @Component와 @Bean은 코드상의 유연함을 바탕으로 다르다고 알고있습니다. 왜 두번째에서 에러가나는지 궁금합니다
-
미해결김영한의 실전 자바 - 기본편
오타 제보 입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요."클래스가 필요한 이유" 강의중 코드작성때는int[] studentGrade = {} 로 작성하셨는데pdf 파일에는 int[] studentGrades ={} 로 작성 되어 있습니다..!
-
미해결스프링 핵심 원리 - 기본편
빈 중복 관련하여 질문이 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 일단 오류 로그는 이러한데 이 autowired를 통해 주입 받는 과정에서 @Autowired public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; }@Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepository(); }이 수동 빈의 등록과 @Component public class MemoryMemberRepository implements MemberRepository{ private static Map<Long, Member> store = new HashMap<>(); @Override public void save(Member member) { store.put(member.getId(),member); } @Override public Member findById(Long memberId) { return store.get(memberId); } }이 자동 빈의 등록이 중복이 되어 MemberRepository의 빈을 조회하여 주입할 때 2개의 빈 중복으로 해당 오류가 발생하는 것으로 이해하였는데 gpt의 의견으로 @primary를 사용하면 해결이 되는걸 확인을 했습니다만처음에 타입으로 조회 한 이후에 여러 개의 빈이 조회 된다면 memberRepository의 이름인 빈이 선택되어 오류가 나지 않아야 하는 것이 아닌가 하여 이해가 되지 않아 질문 드립니다.감사합니다.
-
미해결김영한의 실전 자바 - 기본편
private static int count 인 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.강의 내용에서 편의를 위해서public class Data3 { public String name; public static int count; public Data3(String name) { this.name = name; count++; } }count를 public으로 선언후에 Data3 인스턴스를 만들어서Data3.count에 접근하는 방식은 이해했습니다. 실제로 사용시에는 아래처럼 getCount()를 만들어서 사용해야 할까요?public class Data3 { public String name; private static int count; public Data3(String name) { this.name = name; count++; } public int getCount() { return count; } } 아니면 더 좋은 사용방법이 있을까요?
-
해결됨스프링 핵심 원리 - 기본편
UnsatisfiedDependencyException 질문입니다
https://drive.google.com/file/d/1Ilyl5R3LPq0dH7d2lsg0cwKXXNzxQsjj/view?usp=sharing 강의 내용과 똑같이 코드를 따라했는데 Autowired로 했을때 오류가나네요 ㅠㅠㅠ 어떤게문제일까요?
-
미해결김영한의 실전 자바 - 기본편
참조형과 매서드 호출 강의 중 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 강의 자료 중에 위 부분에서 질문이 있습니다.student1 과 student2가 다른 곳에 저장될 수 있는 이유는 student1이 매서드에서 생성되고 인스턴스에 저장된 후에 매서드의 매개변수 student가 지워져서 계속 매서드안의 인스턴스 student를 생성할 수 있는 건가요? 근본적인 질문은 student1과 student2가 매서드를 통해 생성이 되었는데 어떻게 다른 주소를 가지게 되는 지입니다.
-
미해결스프링 핵심 원리 - 기본편
DI 궁금증
@Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } 강의를 여러번봤는데 궁금증이 하나생겼습니다. @Bean으로 설정해주면 스프링컨테이너에서 라이프사이클을 관리해준다고 알고있습니다. 근데 결국은 new MemberServiceImpl에 memberRepository()가 들어간다는게 new MemberServiceImpl(new MemoryMemberRepository)랑 똑같은건데 직접주입하는거와 spring에서 관리하는거의 개념에만 차이가 있고 코드는 방금윗줄에서 설명한거랑 똑같은건가요?
-
해결됨스프링 핵심 원리 - 기본편
섹션5 싱글톤 컨테이너 인스턴스가 다릅니다.
강의내용과 똑같이따라했는데 서로다른 인스턴스가 나옵니다... 분명코드가 똑같은지 3번이나 비교했는데 다른거같아서 올려봅니다.
-
미해결스프링 핵심 원리 - 기본편
궁금한점이 있어 질문드립니다.
다름아니라 섹션 9를 공부하던중 Provider를 사용하던 프록시 객체를 사용하던 지연로딩이 제일 핵심이라고 하셨는데 그렇다면 해당 예제와같이 웹스코프말고 싱글턴의 스코프를 가진 객체를 지연로딩 생성후 의존성 주입을 해주는경우가 실무에서 사용하는경우가 있나요?
-
해결됨스프링 핵심 원리 - 기본편
섹션3 자동완성질문입니다
public class BeanDefinitionTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); void springContainer() { // AppConfig appConfig = new AppConfig(); ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);강의중에 class레벨에서 자동완성으로 코드작성할때는 변수 삽입 리팩토링은 현재 콘텍스트에서 지원하시 않습니다라고 나와있는데메소드안에서 선언될때는 바로 되더라구요 차이가 뭔지 알수있을까요?
-
미해결김영한의 실전 자바 - 기본편
String 타입 오류
왜 String타입 변수 정의할 때 빨간줄이 발생하는지 모르겠습니다. 이전까진 같은 방식으로 별 문제가 없었던 거 같은데.. 인텔리제이로 새 프로젝트를 시작하면서 뭔가 달라진 걸까요..?
-
해결됨김영한의 실전 자바 - 기본편
참조값 복사에 따른 인스턴스 동일성 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서(12:00부분) 참조값만 복사하고 인스턴스를 복사하는 것이 아니라는데, 결국 같은 인스턴스를 접근하게 되잖아요 그러면 위 뜻이 인스턴스가 동일해지는 것은 맞지만, 참조값을 복사하는 것이지 인스턴스를 복사하는 것이 아니라서 잘못 인지하지 말라는 뜻인가요? 아니면 인스턴스가 달라서 참조값만 복사한 것이기에 인스턴스를 복사하는 것이 아니라는 뜻인가요? Data dataA = new Data(); // 1.Data인스턴스 생성후 dataA에 참조값 넣음 dataA.value = 10; Data dataB = dataA; // 2.dataA 참조값을 복사하고 대입함 System.out.println("dataA.value = " + dataA.value); // 10 System.out.println("dataB.value = " + dataB.value); // 10 // 3.dataB는 dataA의 인스턴스에 동일하게 접근하게됨