묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 기본편
상속 관계에서 사용하는 this
package extends1.ex; class ClassA { String value = "A"; } class ClassB extends ClassA { String value = "B"; void printValue() { System.out.println(this.value); // this는 new ClassC()에 의해 생성된 참조로 접근하니 C가 나와야하는거아닌가? } } class ClassC extends ClassB { String value = "C"; } public class Main { public static void main(String[] args) { ClassC obj = new ClassC(); obj.printValue(); // B System.out.println(obj.value); // C } } this는 인스턴스 자기자신에 대한 참조입니다. 상속 관계에 있고 new ClassC()로 생성하였으니 this는 ClassC에 대한 참조라고 생각했습니다. main()의 obj.printValue()는 ClassC 부터 탐색하여 ClassB에서 발견되었습니다. 해당 메서드 안에서 this.value가 있는데 이 때의 this는 ClassC에 대한 참조로 접근해야하는거아닌가요? ClassB에 있는 value로 접근하는 이유가 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
"스프링이란"이라는 강의까지 듣고 질문 올려봅니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 스프링부트의 장점으로"단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성"이라는 말이 나오면서 톰캣같은 웹서버를 내장하고 있다고 해주셨는데,톰캣은 그러면 스프링부트에 내장된 “웹서버”이기도 하면서 “WAS”이기도 한 것일까요?아니면 톰캣은 "웹서버"만을 지칭하는 건가요?
-
미해결김영한의 실전 자바 - 중급 2편
add 문의 드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]LinkedList<Integer> bucket = buckets[hashIndex];으로 하셨는데 bukets[hashIndex].add(value); 로 하지 않은 이유가 있을까요? 참조값은 똑같은데 변수 선언을 한 이유가 궁금합니다
-
해결됨김영한의 실전 자바 - 기본편
static 상속
[질문 내용]강의 17:01, 메서드 오버라이딩은 인스턴스 메서드에 해당하는 내용으로 static 메서드는 해당하지 않는다고 하셨습니다. 별도로 예제를 작성해서 테스트해보았는데, 자식 클래스에서 부모 클래스의 클래스 메서드를 호출할 수 있었습니다. static 메서드 역시 상속은 되지만 오버라이딩 대상이 되지 않는다고 이해하면될까요? 감사합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
질문이 있습니다.
[질문 내용]여기에 질문 내용을 남겨주세요.int 형과 String 형을 더하면 int 형이 자동으로 문자형으로 변하고 합쳐진다고 하셨는데 int 형이 영구적으로 문자형으로 변하는건가요?아니면 그냥 임시로 바뀌는건가요?int num = 20; String str = "a + b = "; System.out.println(str + num); //num이 문자형으로 변환 System.out.println(num); // 변환된 후에 num은 계속 문자형인가요? 아니면 위에 초기화된 int 형인가요?
-
미해결김영한의 실전 자바 - 중급 2편
안녕하세요. 강의록 오타 제보입니다.
파일: 9. 컬렉션 프레임워크 - Map, Stack, Queue.pdf위치: 22페이지 최상단 그림 양쪽에 poll이 아닌 pool로 나와있습니다
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
[Title씬 구성 관련 질문 : 프리팹]
Title 씬 프리팹 관련 질문이 있습니다. Q1. 타이틀 프리팹에 별도의 UI만 보여주는 카메라를 만든 이유가 무엇인가요? (main 카메라가 아닌 별도의 카메라를 만들고 또 그것을 프리팹에 넣은 이유) Q2. Title의 경우 프리팹에 캔버스까지 있습니다. 궁금한 것은 InGame에서 각각 UI들도 프리팹으로 만들텐데, 다 이렇게 개별 UI 프리팹마다 캔버스를 만드는 것이 좋은가요? (프리팹 안에 캔버스를 넣는 이유와, 주의해야 할 사항)* ) 제가 예전에 작업을 할 때, 큰 UI 캔버스 만들고 하위로 캔버스를 가진 UI프리팹들을 넣으니까, 가끔 프리팹 창에서 수정할 때 UI들이 화면에 보이지 않았던 경험이 있어서 질문드립니다! 좋은 강의 감사합니다 🙂 남은 강의도 잘 챙겨 보겠습니다!
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[오타 의심 제보] 강의 6:11 부분
오타 여부가 확실하지는 않지만, 제가 생각했을 때 오타가 아닌가 싶어서 제보합니다.영상 위치: 6분 11초강의록 위치: p.24 - 스레드 종료 규칙오타 의심 내용:원본: 예를 들어, thread.join() 호출 전에 thread의 모든 작업이 완료되어야 하며, ...수정: 예를 들어, thread.join() 리턴 전에 thread의 모든 작업이 완료되어야 하며, ...의견: thread.join()을 호출하면, thread가 모든 작업을 마친 후에 void로 리턴하고 난 뒤에야 thread.join() 다음에 있던 코드들을 수행하는 것이니까 리턴이 적절한 단어 아닌가 싶습니다.
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[코드 공유] yield() 유무에 따른 체크 로직 수행 횟수를 확인할 수 있는 코드 공유합니다.
[비교 결론](맥북 프로 2018형 기준)yield() 사용 X: 체크 로직 319_216_379회 수행yield() 사용 O: 체크 로직 000_730_447회 수행[코드 사용법]체크로직 while loop에 있는 Thread.yield();를 주석처리 on/off 하면서 체크하시면 됩니다.프로그램 수행 -> a, b, c, d, e, q를 순서대로 입력위 두 동작을 주석처리 on/off한 후에 실행하는 두 경우 모두에서 비슷한 속도로 해 주시면 비교가 더 명확합니다. [코드 설명]MyPrinterV4 코드를 기준으로 하여 다음과 같이 체크 로직의 수행 횟수를 카운트할 수 있도록 개선했습니다. 러프하게 작성한 코드라서 세부적인 부분은 무시바랍니다.// 체크 로직의 수행 횟수를 기록하는 변수 private static int count = 0;while (!Thread.interrupted()) { if (jobQueue.isEmpty()) { count++; // 체크 로직 수행시 1회 추가 기록 Thread.yield(); // 여기를 On/Off하며 체크 continue; } }// 메인 함수의 마지막 부분에 추가한 코드 // q를 입력하여 프로그램을 종료했을 때까지 수행된 체크 로직의 횟수를 출력 System.out.println(count);[전체 코드]package thread.control.printer; import java.util.Queue; import java.util.Scanner; import java.util.concurrent.ConcurrentLinkedQueue; import static util.MyLogger.log; public class MyPrinterV4 { // 추가된 코드 private static int count = 0; public static void main(String[] args) { Printer printer = new Printer(); Thread printerThread = new Thread(printer, "printer"); printerThread.start(); Scanner userInput = new Scanner(System.in); while (true) { log("프린터할 문서를 입력하세요. 종료 (q): "); String input = userInput.nextLine(); if (input.equals("q")) { printerThread.interrupt(); break; } printer.addJob(input); } // 추가된 코드 System.out.println(count); } static class Printer implements Runnable { Queue<String> jobQueue = new ConcurrentLinkedQueue<>(); @Override public void run() { while (!Thread.interrupted()) { if (jobQueue.isEmpty()) { // 코드 추가된 부분(시작) count++; Thread.yield(); // 주석 on/off 하며 비교 // 코드 추가된 부분(종료) continue; } try { String job = jobQueue.poll(); log("출력 시작: " + job + ", 대기 문서: " + jobQueue); Thread.sleep(3000); log("출력 완료: " + job); } catch (InterruptedException e) { log("인터럽트 발생. message=" + e.getMessage()); break; } } log("프린터 종료"); } public void addJob(String input) { jobQueue.offer(input); } } }
-
미해결김영한의 실전 자바 - 중급 2편
배열과 비교한 리스트의 이점 중에서 itemCount가 size++랑 비슷한거 아닌가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]배열과 비교한 리스트의 이점으로 itemCount와 같이 배열에 몇 개의 데이터가 추가 되었는지 추적하는 변수를 제거할 수 있다고 했는데, MyArrayList calss에서 add(E e) 메서드를 보면 size++; 부분이 동일한 역할이을 하고 있는 것이 아닌가요?
-
미해결김영한의 실전 자바 - 기본편
메서드
[질문 내용]여기에 질문 내용을 남겨주세요. public class MemberThis { public String nameField; public void initMember( String nameParameter ) { nameField = nameParameter ; }} 위에서 public void initMember( String nameParameter ) 이 메서드를 선언하는거라고 생각했는데요. 왜 public이랑 void 사이에 static이 없는건가요? 왜 없어도 되는건지 모르겠습니다.
-
미해결김영한의 실전 자바 - 중급 2편
연결 리스트의 삭제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님 강의 항상 감사하게 보고있습니다연결리스트의 삭제에서 초기화를 시킨다고 했는데 참조값의 연결의 끊으면 사용되지 않으므로 gc대상이 되니 초기화는 안해도 되지 않나요?제가 놓친 부분이 있으면 말씀 부탁드리겠습니다 :)
-
미해결자바스크립트 비기너: 튼튼한 기본 만들기
섹션10 3. Object 프리미티브 값 구하기에서 질문있습니다.
안녕하세요 선생님 강의 잘 보고있습니다!제목에 작성한 강의의 7:56초에 "obj에 프리미티브 값으로 설정된 값을 반환"한다는 부분인데요.이전 강의에서도 오브젝트는 [[primitiveValue]] 가지지 않는다고 하셨는데, valueOf()를 쓰면 프리미티브 값을 반환한다는 표현이 잘 이해가 가지 않아서 질문드렸습니다. 저는 저 상황에서 참조값을 반환하는 것으로 알고있는데 혹시 JS 내부적인 처리 이후 평가된 값으로 생각해서 프리미티브 값이라고 표현을 하신걸까요...?
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
로컬라이즈 어셋 각 언어별 폰트적용
안녕하세요. Part1부터 수강중인 학생입니다!수업 잘 듣고 있습니다.로컬라이즈 어셋을 활용한 다국어 지원 시스템에서 각 언어마다 font를 다르게 지정할 수 있는 방법이 있나요? 구글링과 gpt를 사용하여 검색을 해보았지만 처리하기 어려워 질문을 남깁니다!
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
CSVReader 자세하게 설명 가능하신가요?
다른 프로젝트에서 사용하고 싶은데 자세하게 설명 가능하신가요?
-
미해결자바스크립트 비기너: 튼튼한 기본 만들기
섹션3의 1강 연산자, 표현식 강의에서 표현식 질문이 있습니다.
안녕하세요 강의 잘 듣고있습니다.1:56초쯤에서 헷갈리는 부분이 있어서 질문드립니다.var total도 표현식이라고 말씀하셨는데요. 제가 기존에 알고있는 개념은 "값으로 평가될 수 있는 문"을 표현식이라고 알고있습니다.따라서 var total은 "표현식이 될 수 없는 문"으로 이해하고 있었는데, 혹시 제가 잘못 이해하고 있는걸까요?
-
미해결김영한의 실전 자바 - 중급 2편
섹션4 강의 문의 입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님 강의 항상 잘 보고있습니다 🙂이번 강의에서 ArrayList 클래스를 직접 사용하지 않고, 별도로 클래스를 구현하여 기능을 설명해 주셨는데요.이전 강의에서는 직접 구현한 뒤 해당 클래스를 함께 활용하셨던 것으로 기억하는데,이번에는 ArrayList를 전혀 사용하지 않고 직접 구현만 하신 점이 궁금해서 문의드립니다.혹시 ArrayList를 사용하지 않아도 충분히 개념을 설명할 수 있어서 그렇게 진행하신 걸까요?아니면 별도로 구현하는 것이 ArrayList의 내부 구조를 더 잘 이해하는 데 도움이 되기 때문일까요? 강의 정말 유익하게 보고 있으며, 많은 걸 배워가고 있습니다!제 질문이 혹시 의도를 제대로 파악하지 못한 것이라면 너그럽게 이해해 주시면 감사하겠습니다. 😊
-
미해결김영한의 실전 자바 - 중급 2편
배열에 제네릭 타입을 사용하지 못하는 이유에 대한 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 1. 제네릭은 생성자를 통해 인스턴스를 생성하는 시점에 타입이 결정된다. 2. 코드로 타입 인자가 전달되면 자바 컴파일러는 제네릭 정보를 이용해서 해당 타입을 이해한다. 3. 자바 이레이져에 의해 컴파일 후 제네릭 정보가 사라진다 => 상한인 Object로 변경됨제네릭 적용이 이런식으로 진행된다고 이해를 했습니다.그러면 배열에 타입 인자를 적용하더라도 결국 상한인 Object로 변경되어서 코드가 돌아가지 않나요?private E[] elementData; public MyArrayListV4() { elementData = new E[DEFAULT_CAPACITY]; }자바가 E를 알 수 없어서 사용 불가능하다는 부분이 이해가 잘 안됩니다... 제가 어떤 부분을 놓치고 있는 걸까요?
-
미해결김영한의 실전 자바 - 중급 1편
TestString6 str.indexOf(Key, index + 1); 의 문장 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]While (index > = 0) 내부 코드에 궁금한 점이 있어서 질문을 드립니다. 제공해주신 코드 일부입니다. while (index >= 0) { index = str.indexOf(key, index + 1); System.out.println("index = " + index); count++; } System.out.println("count = " + count); } 결과를 보면,index = 18index = 32index = -1 이 순서대로 출력이 됩니다.궁금한점 입니다.1번 질문입니다. 18, 32, -1이 출력 된 뒤 count가 1씩 증가했습니다. 제가 생각하기에는 6, 18, 32가 출력이 되고 count = 3이 출력되어야 하지 않나 생각들었습니다. 제 생각이 맞는지 확인받고 싶습니다.2번 질문입니다.제가 수정한 코드의 일부입니다. 이 코드가 타당한지 검토받고 싶습니다. 감사합니다. while (index >= 0) { index = str.indexOf(key, index + 1); System.out.println("index = " + index); if (index == -1) { break; } count++; } System.out.println("count = " + count); }
-
미해결스프링 핵심 원리 - 기본편
MemoryMemberRepository를 2번 선언해도 테스트 결과가 정상인 이유?
[질문 내용]안녕하세요 '주문과 할인 도메인 실행과 테스트' 수강 도중 의문점이 생겨서 질문 남깁니다. MemberServiceImpl 과 OrderServiceImpl 에서 모두 new 생성자를 통해서 MemoryMemberRepository 를 생성하고 있습니다.이렇게 되면 MemberSerivceImpl에서 join 한 Member 객체는 MemberServiceImple 객체에 존재하는 MemoryMemberRepository에만 저장될 것 같아서 OrderServiceImpl에서 선언한 MemoryMemberRepository는 비어있는 상태일 것이라고 생각했습니다. 그런데 OrderServiceImpl에서 선언한 MemoryMemberRepository에서 findById()를 해도 join한 Member 객체를 조회할 수 있게 되는 이유가 무엇인가요?