묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 기본편
static method의 저장 위치에 관한 질문입니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]자바 메모리 구조에 관한 질문입니다!static method는 method 영역의 static 영역에서 static 변수와 함께 관리되나요?그게 아니라면, class 영역에서 instance method와 함께 관리되는 것인지 궁금합니다.
-
해결됨C개발자를 위한 최소한의 C++
접근제어와 관련한 질문입니다.
안녕하세요! 새해 복많이 받으십시오. 접근제어와 관련하여 강의내용 복습하며 생각해보다가 궁금한 점이 있어서 질문 남깁니다. C언어 클래스에서 private영역에 대해 접근제어에 대해직접 부르는 것만 막는 것인지클래스에 대한 포인터를 통해 접근제어까지 막는 것인지또는 메모리상의 주소를 알아내서 포인터로 변수로 직접 접근하는 경우(...)이 다음 디스포인터영상에서 였나 2번까지는 막고 있는 것을 보여주셨던 것이 기억나는데,3번은 과연 뚫리지 않을까... 생각이 들어서 그렇습니다. 진짜로 묻고 싶은 이유는,사실은 접근제어 라는 게 C++ 프로그래밍 문법상의 규칙으로 컴파일 타임에서 관리할 뿐, '런타임에서는 (C++에서 정해졌었던 문법이고 뭐고;)이걸 죄다 걸러내고 남은 기계어로만 돌아간다' 라고 이해해도 되는가 입니다.(CS지식이 일천한 상태에서 드리는 뇌피셜이라...^^;) 감사합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
단축키 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]선생님께서 알려주신 단축키들이 모두 유용해서 잘 사용하고 있습니다만 잘 되던 단축키가 안 될 때가 있습니다 ㅠ_ㅠCtrl + Shift + F10 누르면 실행이 되어야 하는데잘~ 되다가 갑자기 안 되고 윈도우 관련 치트키가 눌리는 것 같습니다.잘 되다가도 뭐가 꼬이는 건지 한 번 안 되기 시작하면 계속 안 되는데 잘 쓰던 단축키가 안 되니 좀 답답합니다ㅠㅠ제가 뭔가를 잘 못 누르는 걸까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바란? 7분 컴파일, 디컴파일 질문있습니다
강사님께서 out 폴더에서 디컴파일된 결과를 보여주시고 그 다음에 컴파일 결과인(?) bytecode를 보여주셨는데 이 bytecode는 어디서 확인할 수 있는지 알 수 있을까요 ???
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
섹션2 변수초기화 질문드립니다 (7분경)
변수를 초기화할 때, int a; 라고 하면 a가 메모리상 어딘가에 할당이 되어야하고, 여기에 어떤 값이 들어가있을지 모른다고 하셨는데... 그러면 모든 메모리는 꽉차있는 상태에서(?) 작업을 할 때 덮어 씌워지는 형태로 할당이 진행되나요 ?? 메모리에 올라가있는 값을 왜 안빼는지도 궁금합니다. 값을 삭제해주지 않으면 더 많은 메모리를 사용해야할 때 빈공간이 어딘지 몰라서 어렵지 않을까요 ??
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
productAdminEx문제를 if문 대신 switch로 풀어보았습니다.
작동은 잘 되는것 같은데 틀린부분이 있으면 피드백 부탁드려도 될까요?개인적으로 break나 continue사용에 부족한 부분이 있을 것 같습니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayEx7 문제를 풀었는데 정답과 코드가 다릅니다.
이렇게 풀었는데 결과는 똑같이 나옵니다! 비교해보니 국어,영어,수학 열 부분을 또 하나의 배열로 만들어서 반복문 처리한 것에 차이점이 있는 것 같은데 정답코드가 더 간결하다는 것만 차이가 있는 것 이겠죠??
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
protected, private 필드들의 getter...
선생님, 안녕하세요 10강 코틀린 상속 편 보다가 질문 드립니다.예제로 아래 JavaAnimail 클래스를 주셨고,public abstract class JavaAnimal { protected final String species; protected final int legCount; public JavaAnimal(String species, int legCount) { this.species = species; this.legCount = legCount; } abstract public void move(); public String getSpecies() { return species; } public int getLegCount() { return legCount; } }이와 동일한 코드로 아래 코틀린으로 변환했는데요,package com.lannstark.lec10; abstract class Animal( protected val species: String, protected val legCount: Int, ) { abstract fun move() } 위의 자바 코드는 getter들이 public 으로 열려있어서 외부에서 인스턴스 생성 시 cat.getSpecies(), cat.getLegCount()등이 호출되나, 아래 코틀린에서 자동생성되는 getter의 경우 protected로 cat.species, cat.legCount 에 대해 가시성이 없습니다. 그러면...클래스의 필드를 public으로 다 열고 a. val 는 더 이상 해줄 수 있는 것이 없음(어차피 생성자 초기화만 가능)class Animal2(val species: String, val legCount: Int)b. var는 private setter을 둔다.class Animal3(species: String, legCount: Int) { var species = species private set var legCount = legCount private set } 필드를 protected, private 으로 두고 별도의 public getter를 내부에 다시 만든다..(getter만 열 수도 없고, public으로 override도 안 되는 것 같습니다..!)class Animal4(species: String, legCount: Int) { private val species = species public get // ❌Getter visibilty 는 필드와 일치해야 함 override public get // ❌'override' is not applicable to 'getter' private val legCount = legCount fun getSpecies() = this.species; fun getLegCount() = this.legCount; } 😔...흠 어떻게 하는게 맞을까요.jpa 엔티티에서의 사용까지 생각하면 1-b가 가장 나을까요? 엔티티 필드들은 거의 var이기도 할테고요...자바에서 사용하는 스타일로 마음이 가장 안심(?)인 건 2번인데, 이렇게 하면 코틀린의 코드 간결성과 편리함을 엔티티 내부에서는 거의 사용하지 못하는 것 같아서 그나마 코틀린스럽게 코드를 사용할 수 있는 옵션이 1-b 인 것 같다고 생각했는데요...더 좋은 방법이 있는지... 어떻게 하는 것이 best practice인지, 또 선생님은 실무에서 어떻게 하시는지 궁금합니다!!
-
해결됨김영한의 실전 자바 - 기본편
추상 클래스 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]추상 클래스 1편 강의를 듣다가 배열과 for문을 이용했던게 생각나서 한 번 해봤는데 오류가 나지 않고 실행이 잘 되더라고요근데 추상클래스는 생성하면 안 된다고 말씀하셨는데 여기서 오류가 일어나지 않는 이유는 무엇인가요?? 궁금합니다
-
해결됨진짜! 자바스크립트(Javascript) - 기초부터 고급까지
클로저 스코프와 블록 스코프 질문드립니다.
const test1 = () => { let count = 0; const inner = () => { console.log(count); // closure }; inner(); }; test1(); const test2 = (initialValue = 0) => { let count = initialValue; const inner = () => { console.log(count); // block }; inner(); }; test2();test1의 inner에서는 count가 클로저 스코프를 갖는데, test2의 inner에서는 블록 스코프를 갖는 이유가 뭔가요?
-
미해결스프링 핵심 원리 - 기본편
서버객체 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다른분이 질문하신거 보고 서버, 클라이언트 객체간 의미는 파악했습니다.여기보면 DiscountPolicy를 서버 객체라고 하시는데new FixDiscountPolicy의 생성자 메소드를 호출했으면FixDiscountPolicy를 서버객체라고해야되는거 아닌가요?? 그리고 밑에서 int discountPrice = discountPolicy.discount(member, itemPrice); 이러한 코드에서 실제로 호출되는 메소드는 FixDiscountPolicy()의 메소드가 호출되는거잖아요? 근데 왜 인터페이스를 서버객체라고 하는거죠? (A객체가 B객체의 메서드를 호출하면 A클래스가 클라이언트, B클래스가 서버가 됩니다.)
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayEx6문제를 풀었는데 정답이랑 코드가 다릅니다
그런데 작동은 잘 됩니다배열0번째, 1번째1번째, 2번째2번째, 3번째..1번째, 2번째2번째,3번째 이런식으로 비교해나가면서 가장 큰 수를 앞으로 보내고 가장 작은 수를 뒤로 보냈어요그럼 배열의 가장 앞에 있는 숫자가 가장 큰 수 일 거고 가장 뒤에 있는 숫자가 가장 작은 수가 될 테니까요작동은 똑바로 되는거 같은데 피드백 부탁드립니다!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ScannerWhileEx4 문제를 switch문으로 풀어보았습니다
결과는 동일하게 나오는데 정확한가요??
-
미해결스프링 핵심 원리 - 기본편
스프링 부트를 쓰지 않는 단위 테스트의 모범 사례가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요. 김영한님의 강의를 들으며 스프링 부트를 활용한 웹 어플리케이션 개발을 진행하고 있는데, 단위 테스트 코드 작성 시 모범 사례(?)가 있는지 궁금해 질문하게 되었습니다. 영한님의 강의에서 "좋은 테스트는 단위 테스트부터 출발하며, 단위 테스트를 잘 만드는 것이 좋은 테스트의 출발이다."라는 의미의 말을 기억하며 단위 테스트 코드를 다음과 같이 작성해보았습니다. AppConfig 코드@Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } // ... } 단위 테스트 대상 (서비스 컴포넌트)@Component public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; @Autowired public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } // ... } 위 서비스 컴포넌트를 단위 테스트 하기 위해 아래와 같은 테스트 코드를 작성했습니다.class MemberServiceImplTest { @Test @DisplayName("사례1") void case1() { // @SpringBootTest를 사용하진 않지만 ApplicationContext를 사용 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); // Bean 가져오기 MemberService memberService = ac.getBean(MemberService.class); MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class); // 가져온 것 확인하기 Assertions.assertThat(memberService).isInstanceOf(MemberService.class); Assertions.assertThat(memberRepository).isInstanceOf(MemberRepository.class); } @Test @DisplayName("사례2") void case2() { // 순수 자바로 가져오기 MemberRepository memberRepository = new MemoryMemberRepository(); MemberService memberService = new MemberServiceImpl(memberRepository); // 멤버 서비스 테스트 세팅 Member newMember = new Member(1L, "Test", Grade.VIP); memberService.join(newMember); // 멤버 서비스 테스트 검증 Member findMember = memberService.findMember(1L); Assertions.assertThat(newMember.getId()).isEqualTo(findMember.getId()); } }// 두 테스트 모두 테스트를 통과합니다.제가 궁금한 것은사례1은 과연 유닛 테스트라고 할 수 있을까요? @SpringBootTest를 붙여주지 않았을 뿐이지 스프링 컨테이너를 사용하기 때문에 유닛 테스트가 아닌 스프링 부트를 사용하는 통합 테스트라고 봐야하는거 아닌지 궁금합니다.사례2는 순수하게 자바로 인스턴스를 생성해 테스트를 진행합니다. 따라서 완전히 스프링에서 독립된 유닛 테스트라고 볼 수 있을 것 같습니다. 그런데 이 경우, 스프링의 도움을 받지 않기 때문에 의존성 주입을 직접 해줘야 한다는 점이 걸립니다. 따라서 사례2 처럼 직접 인스턴스를 선언하여 생성자로 주입해주는 것이 좋은 코드인지 의문이 듭니다.MemberServiceImpl 코드를 보면 생성자에 자동 의존 주입이 명시되어있는데, 만약 사례2처럼 생성할때 직접 수동으로 삽입한다면 @Autowired는 무시되는 것인가요?
-
미해결스프링 핵심 원리 - 기본편
전체코드 어디서 볼 수 있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨김영한의 실전 자바 - 기본편
메서드 참조값 반환
안녕하세요.<기본형과 참조형> 강의에서 메서드 안에 객체를 생성하고 이후 메인 메서드에서 이 참조값을 받아 출력하는 부분에 대해서 공부하고 있습니다. 근데 기본형에서 메모리 낭비를 하지 않기 위해 매개변수를 다 회수하는 것처럼 이것도 똑같이 적용된다고 생각하니 좀 헷갈려서요. 메서드가 종료되면 참조형 변수만 사라지고 여전히 인스턴스는 존재하나요? 그렇기 때문에 여기서 반환되는 참조값을 통해 메인 메서드에서 student1이 접근할 수 있는 거겠죠? static Student CreateStudent(String name, int age, int grade) { Student student = new Student(); student.name = name; student.age = age; student.grade = grade; return student; }답변 미리 감사합니다!
-
해결됨김영한의 실전 자바 - 기본편
객체 지향 프로그래밍 문제와 풀이 1번 문제
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]저는 Rectangle 클래스 안에서 넓이랑 높이를 5와 8로 초기화해주고 메인 메서드에서 출력할 때 객체로 출력하였는데 이렇게 했을 때의 문제점이 있을까요??
-
미해결김영한의 실전 자바 - 기본편
다운캐스팅에 대한 질
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)강의에서 다운캐스팅에 관해 이야기를 해주셨습니다.부모 클래스인 Parent 타입의 변수에 Parent 인스턴스를 생성해서 참조값을 해당 참조변수에 넣고Child 타입의 참조변수에 다운캐스팅을 하고 나서 해당 child 메서드를 호출하려고 했을 떄 오류가 발생했습니다. 여기서 영한님이 말씀해주신대로 생각해보면 Parent 인스턴스를 생성했을 때, 해당 메모리 안에 Parent 타입의 클래스 정보만을 저장했을테고 자식에 대한 정보가 해당 메모리 주소값 안에 없다. 따라서 다운캐스팅을 해도 자식클래스 메서드를 호출하지 못한다 -> 라고 생각하면 되는 건가요? 그렇지만 다시 생각해보면 메서드는 메서드 영역 내에서 가져다가 호출하는 방식인데, 그렇게 된다면 자식 클래스의 메서드 또한 메서드 영역내에서 불러오면 되니까 호출이 가능한 게 아닐까요..?궁금하네요
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
[8.배열][문제와풀이1] 문제 3번
안녕하세요 선생님선생님께서 올려주신 코드와 다르게 하기 처럼 코드를 작성해도 되는 부분인지 궁금증이 생겨 질의드립니다! [선생님 코드][제 코드]System.out.println("출력"); for (int i = numbers.length - 1 ; i >= 0 ; i--) { System.out.print(numbers[i]); if (i != 0) { System.out.print(", "); }(1. int 범위는 numbers.length길이보다 1더 적다 // 2. i는 0과 같지 않다)
-
해결됨김영한의 실전 자바 - 기본편
인스턴스 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Data dataA = new Data();dataA.value = 10;Data dataB = dataA;에서요 세번째줄에... dataB는 new 선언을 안했는데 쓰일 수 있는건가요?잘 이해가 되지 않아서요Data dataB = new Data();dataB = dataA; 라고 해야하는걸로 알고 있었는데선생님 코드로 해도 잘 되서 혼란스럽네요 ㅠㅠ