묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 1편
로또 메서드 문의
안녕하세요.궁금한 점이 있어 문의 드립니다.아래의 isUnique 메서드가 실행되었을 때를 가정해서 질문해보면 isUnique 매서드가 호출이 될 때 스택에 새롭게 할당이 되고 코드가 실행이 될텐데 이 때 이 새롭게 생성된 스택 영역 안에서 매개변수로 받은 number의 값 말고 나머지 바디에 있는 count 변수나 lottoNumbers 배열을 아는 건 메서드 영역의 클래스 영역에서 클래스 네임별로 구별이 되어 있고 그 클래스의 메서드를 가져다 쓰는 거니 메서드 내부의 변수들도 그 클래스에 해당한다는 걸 스택영역에서 알 수가 있는 거죠 ? 생각해보니 메서드 영역과 스택 영역은 분리되어 있고 메서드가 호출될 때 새롭게 스택 영역이 할당이 될텐데 어떻게 새롭게 할당된 공간 안에서 메서드 내부의 값들을 다 알까 싶어서요.감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
UnsatisfiedDependencyException & NoUniqueBeanDefinitionException 2
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [E:\java-spring-basic-review\myStudy\out\production\classes\hello2\myStudy\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello2.myStudy.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository ... Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello2.myStudy.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository질문 한 번 올렸는데 ai답변이 와서 거기서 본 링크쪽으로도 갔는데 문제를 모르겠습니다...3시간 동안 찾아보고 해결해보려하는데 되지 않습니다... 도와주세요.https://drive.google.com/file/d/1cBsUxNQ27kT1rdo6R-s0iuNEGOC7paFG/view?usp=drive_link혹시몰라 파일도 올립니다ㅠㅠ 정말 알 수가 없습니다...
-
해결됨스프링 핵심 원리 - 기본편
UnsatisfiedDependencyException & NoUniqueBeanDefinitionException
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [E:\java-spring-basic-review\myStudy\out\production\classes\hello2\myStudy\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello2.myStudy.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository ... Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello2.myStudy.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository 복습하는 중에 전체 테스트를 돌렸는데 MyStudyApplicationTests에서만 오류가 납니다.정말 해결하려 노력해보았으나, 머리박고 헤드뱅이 100바퀴 돌정도로 모르겠습니다.생각해봤을 때, appConfig와 AutoAppConfig에서 같은 타입의 빈이 2개 생성돼서 오류가 나는 거 같은데...정확히 어디가 잘 못된 건지 고칠 방법이 뭔지 알 수가 없습니다...도와주세욤....
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
문제 풀이 질문 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]여기에 질문 내용을 남겨주세요. 두번째 문제에 짝수를 출력하는 프로그램에서 강사님과 제 코드가 다른데 출력값은 같은데 저 처럼 풀어도 문제가 없는건가요? public static void main(String[] args) { // 처음 10개의 짝수를 출력하는 프로그램을 만들어보자. num변수 사용. int num = 2; while (num <= 20) { if (num % 2 == 0) System.out.println(num); num++; } } public static void main(String[] args) { for(int num = 2; num <= 20; num++){ if(num % 2 == 0){ System.out.println(num); } } }
-
미해결김영한의 실전 자바 - 기본편
메서드 시그니쳐 관련 질문
안녕하세요.메서드 관련 질문입니다.컴파일이 될 때 메서드 영역 > 클래스 영역 이 부분에 클래스의 관련 코드들이 다 들어가 있는 걸로 이해했는데 그러면 다음의 두 경우는 어떻게 이해하면 될까요 ? (두 경우 다 추상 클래스, 인터페이스에는 메서드의 바디가 작성되어 있지 않고 나중에 작성되는 경우) -> 메서드 영역의 클래스 영역에 처음에는 바디가 없으니 관련 정보가 전혀 없을 거 같은데 이와 같이 나중에 오버라이딩을 해주었을 때 메서드 영역의 클래스 영역에서 어떻게 되는지 궁금합니다. 새로운 클래스 영역에 메서드로 정의되는 부분이 아니라 기존에 클래스 영역에서 정의가 되어야 하는데 문제는 클래스 영역의 기존 메서드를 수정하자니 다음의 두 케이스는 해당 객체를 생성할 때에만 적용되는 일회성 코드라 ...2.1 AbstractAnimal은 추상클래스로 sound()가 추상 메서드입니다.AbstractAnimal animal = new AbstractAnimal() { @Override public void sound() { System.out.println("test"); }};2.2 InterfaceAnimal interface 입니다.InterfaceAnimal interfaceAnimal = new InterfaceAnimal() { @Override public void sound() { System.out.println("test"); } @Override public void move() { System.out.println("test"); } };추상 메서드의 경우 메서드 시그니처만 메모리에 로드되었다 실행시점에 구체화 시킨 클래스에서 구현된 메서드가 메모리에 로드된다고 하셨는데 위의 예제를 보면 상속받아 메서드를 오버라이딩 한 것이 아니라 기존에 메서드 시그니처만 존재하는 클래스에서 일시적으로 구현한 방식입니다.이럴 때에는 메모리 영역의 클래스 영역에서 어떤 로직이 수행되나요 ? (위의 예제처럼 실행될 때 익명객체 처럼 구현하여 객체 생성할 때)
-
해결됨김영한의 실전 자바 - 중급 1편
중급1편에서 String에 대해서 배우는걸로 아는데
StringBuffer,StringToken 이거뿐만 아니라 Math등도 알려주시는건가요?
-
미해결김영한의 실전 자바 - 중급 1편
래퍼 클래스 질문
안녕하세요.래퍼클래스 강의 중 궁금한게 있어서 문의드립니다. 래퍼 클래스 기본형 한계 얘기하시면서 값이 있으면 MyInteger객체를 반환해주고 없으면 null을 반환한다고 하셨는데, MyInteger는 toString을 재정의 해서 해당 클래스의 value를 String으로 출력하도록 되어 있어서 value가 나오는건 알겠는데 밑의 예시처럼 값이 없을 때에는 null 이 나오는데 이게 System.out.println(null)과 같은 뜻일텐데 따로 이런식으로 입력해보면 null이라고 안 찍히고 에러가 나더라고요. println 메서드 까서 봐도 밑과 같이 되어 있는데 String.valueOf(null)은 에러가 나고요.설명 부탁드립니다.System.out.println(findValue(arrInt, 100));public void println(Object x) { String s = String.valueOf(x);
-
미해결스프링 핵심 원리 - 기본편
테스트 로그
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.테스트를 실패하면 로그가 나오는데 성공하면 영상처럼 로그가 안나오는데 따로 설정이 필요한가요?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
3:24에 무슨 단축키 쓰신 지 알 수 있을까요?
3:24에 break; 에서 Enter 치면 break 이랑 같은 indent에 작성이 되는 데, 강사님께서는 순식간에 그 전 indent로 가시는 데 초록색 화면을 봐도 어떻게 하신 지 잘 모르겠어요 ㅠㅠ
-
해결됨김영한의 실전 자바 - 중급 2편
타입 매개변수 제한 강의 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.//문제 2: 개 타입 반환 //dogHospital.setAnimal(dog); Dog bigger = dogHospital.bigger(new Dog("멍멍이2", 400)); System.out.println(bigger);문제점 2번에서dogHospital.setAnimal(dog); 선언을 새로 한 이유가 있나요 ? 주석처리하고 컴파일해도 정상적으로 작동해서 여쭤봅니다.
-
해결됨김영한의 실전 자바 - 중급 1편
내부 클래스 질문입니다.
안녕하세요. 내부 클래스 관련하여 물어 볼게 있습니다. 외부 클래스 내의 내부 클래스가 있을 때 외부 클래스의 인스턴스만 생성할 때 메모리 구조가 궁금합니다. (외부 클래스만 생성하면 힙 메모리에는 외부 클래스만 생성 되는지, 내부 클래스는 클래스 정보가 있는 메소드 영역에 있는지, 내부 클래스가 생성 되어야만 힙 메모리에 생성 되는지)외부 클래스를 생성 후 참조 변수를 통해 내부 클래스를 생성하는데 내부 클래스의 인스턴스가 필요 없게 될 경우 힙 메모리에 있는 외부 클래스와 내부 클래스가 동시에 가비지 컬렉션이 삭제하는지 궁금합니다.감사합니다.
-
해결됨김영한의 실전 자바 - 중급 2편
다른 타입의 데이터 나머지 연산 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]해시 인덱스를 ([데이터 값] % [배열 크기])로 지정하는 원리라는 것을 알게 되었습니다.데이터 값이 Integer라서 나머지 연산이 가능했는데,데이터가 다른 타입이면 나머지 연산을 어떻게 하나요?
-
해결됨스프링 핵심 원리 - 기본편
섹션 5
@Test @DisplayName("싱글톤의 주의할 점") void statefulServiceSingleton() { ApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); StatefulService statefulService1 = ac.getBean("testConfig", StatefulService.class); StatefulService statefulService2 = ac.getBean("testConfig", StatefulService.class); statefulService1.order("userA", 10000); statefulService2.order("userB", 20000); assertThat(statefulService2.getPrice()).isSameAs(20000); } 오류 메시지 java.lang.AssertionError: Expecting actual: 20000 and: 20000 to refer to the same object이렇게 테스트 했더니 오류가 뜹니다!ㅠㅠㅠAssertions.assertThat().isSameAs()Assertions.assertThat().isEqualsTo()두 개의 차이점이 궁금합니다!
-
해결됨김영한의 실전 자바 - 중급 2편
클래스 작성 시 줄바꿈 질문
강의에서 클래스를 작성하실 때,public class Marine extends BioUnit { // 줄바꿈 public Marine(String name, int hp) { super(name, hp); } }다음과 같이 한 줄 띄고 작성을 하시는데 그 이유가 있나요? 어떤 특별한 컨벤션 같은게 존재하는건지 아니면 편의상 이렇게 작성하시는건지 해당 줄바꿈의 의도가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
jdk 오류 질문드립니다
섹션3 - 스프링으로 전환하기 부분 9:47[질문 내용]세팅에서 Gradle(Default)랑 Intellij IDEA 둘 다 변경해봤는데도 오류뜹니다도와주세요 ㅎ그흑
-
미해결김영한의 실전 자바 - 중급 1편
String 질문
안녕하세요.String을 구현한 클래스 설명해주신 부분에서 이해가 안가는 게 있어서 문의드립니다.StringBuilder와의 차이점에서 StringBuilder가 가변적일 수 있는 이유로 아래 필드가 final인지(String) 아닌지(StringBuilder)로 설명해주셨는데요.final byte[] value라면 value 변수는 참조변수 일꺼고 그렇기에 참조값만 변경이 되지 않으면 참조하고 있는 객체의 내부 상태들은 변경이 가능할텐데 예를 들어String a = newString("abc");여기에서 c를 d로 바꾼다 한들 value가 참조하는 내용이 아닌 참조값도 바뀌어야 하는 이유가 궁금합니다.StringBuilder의 경우에는 final 선언이 안 되어 있으니 value 필드의 참조값이 바뀌던 안바뀌던 상관 없을텐데 String 같은 경우에는 final이긴 하지만 value가 참조하는 내용을 바꿨다고 해서 참조값이 무조건 바뀌게 되는 이유가 궁금합니다.private final byte[] value;
-
미해결김영한의 실전 자바 - 중급 1편
AuthGrade 문제2 - 인증 등급 열거형 조회
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]문제2에서 AuthGradeMain1 클래스를 만들어서 코드를 작성하는 과정에서 for문 안에서 바로 출력을 하는 코드를 작성하셨는데, EnumRefMain3_4에서public static void main(String[] args) { int price = 10000; Grade[] grades = Grade.values(); for (Grade grade : grades) { printDiscount(grade, price); } } private static void printDiscount(Grade grade, int price) { System.out.println(grade.name() + " 등급의 할인 금액 : " + grade.discount(price)); }따로 print 메서드를 뽑아서 리팩토링 하셔서 제가 스스로 AuthGradeMain1 풀이할 때에도public static void main(String[] args) { AuthGrade[] grades = AuthGrade.values(); for (AuthGrade grade : grades) { printAuthGrade(grade); } } private static void printAuthGrade(AuthGrade authGrade) { System.out.println("grade = " + authGrade + ", level = " + authGrade.getLevel() + ", 설명 = " + authGrade.getDescription()); }이런 식으로 메서드를 뽑아서 풀었습니다. 결과는 결국 똑같이 나오겠지만 메서드를 뽑아서 print하는 코드와 for문에서 직접 print하는 코드 둘 중 어느 걸 사용하는 것이 좋은 건지 어떻게 알 수 있는 걸까요?
-
해결됨스프링 핵심 원리 - 기본편
섹션 4
public class ApplicationContextSameBeanFindTest { ApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); @Test @DisplayName("타입으로 조회 -> 같은 타입이 둘 이상 있으면 중복 오류 발생") void findBeanByTypeDuplicate() { MemberRepository bean = ac.getBean(MemberRepository.class); System.out.println("bean = " + bean); } @Configuration class SameBeanConfig { @Bean MemberRepository memberRepository1() { return new MemoryMemberRepository(); } @Bean MemberRepository memberRepository2() { return new MemoryMemberRepository(); } } }너....무 기본적인 질문같지만 아직 부족해서 질문드립니다!ㅠㅜ현재는 복습중입니다. 본문:이 테스트 코드를 실행하면 오류가 납니다.->UnsatisfiedDependencyExceptionApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); 여기서 중첩 클래스로 SameBeanConfig를 만들었습니다.그런데 SameBeanConfig에 static을 붙이지 않으면 왜 오류가 뜨는지 잘 모르겠습니다....이전 강의에서 만들었던 AppConfig는 static클래스가 아닙니다.그럼에도 AnnotationConfigApplicationContext()에 설정 정보로 넘겨줘도 실행하는데 지장은 없었습니다. 한 마디로 AppConfig도 객체를 따로 생성해서 넘긴 게 아니라 AppConfig.class로 넘겼습니다.그러면 SameBeanConfig.class도 정상 작동해야하는 게 아닌가...합니다....
-
미해결비전공자를 위한 자바
super 키워드
강사님 궁금한게 있습니다main( ) 메서드 에서 클래스를 만들고 부모 클래스에 있는 인스턴스를 . 을 이용해서 가져올때 부모와 자식 클래스에 이름이 같은 변수 를 가져올 때 main() 메서드 에서는 super 키워드 를 사용할수 있나요 ?
-
해결됨김영한의 실전 자바 - 기본편
자바 메모리 관련 질문
메서드 영역은클래스 정보static 영역런타임 상수 풀이렇게 세가지로 구성되어 있는걸로 알고 있습니다.static 메서드와 그냥 메서드 둘다 클래스 정보에 저장되는게 맞지만, 둘의 차이는 참조값(인스턴스) 없이 호출 가능하느냐, 아니냐의 차이가 맞을까요?만약 아니고 static 메서드는 static 영역에 저장된다고 한다면, static 영역에 있기 때문에 static 메서드는 참조값 없이 호출 가능한것 인가요?