44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨김영한의 실전 자바 - 기본편
오타있어요.
caw -> cow로 바꿔야할 것 같습니다. 교재랑 예제 파일 다 caw로 되어있어요.
- 해결됨김영한의 실전 자바 - 기본편
알고 있던 내용과 달라서 조금 혼동됩니다.
안녕하세요 영한님. 자바를 복습하고 있는 학생입니다. 이번 파트 정말 이해가 잘 되게 설명해주셔서 내용을 이해하는데는 어려움이 없었는데 기존에 알고 있던 지식때문인지 혼동되는 부분이 있어 질문드립니다. 기존에 알고 있는 지식은 자식 인스턴스 생성시 '부모의 필드 값과 가상 메서드 테이블 등의 메타 정보를 포함하는 하나의 인스턴스 생성'이었습니다. 그런데 이번 강의 내용에선 '외부에서 볼때는 하나의 인스턴스를 생성하는 것 같지만 내부에서는 부모와 자식 모두 생성되고 공간도 구분'이라고 하셨습니다. 그렇다면 이 문장을 '부모부터 자식 클래스까지의 모든 인스턴스를 생성'이라고 봐야하나요? 아니면 '부모부터 자식까지의 모든 메타 정보를 포함하는 하나의 인스턴스를 생성'이라고 봐야하나요? 뒤에서 배울 super()를 통해 자식 인스턴스 생성시 부모 생성자를 필수로 호출하므로 '모든 인스턴스'를 생성하는 것도 말이 될 거 같지만 만약 모든 인스턴스를 메모리에 생성한다면 메모리가 비효율적으로 사용되는 것도 같아 이 부분이 좀 헷갈립니다.
- 해결됨김영한의 실전 자바 - 기본편
다형성 문제 풀이2번 - 한번 봐주시면 감사하겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 저한테는 아직도 짜증이 나고 신경질 나게 하는, 다형성 문제 풀이 2번을 드디어 풀었는데.. 역시 코드 가 좋은 코드인지 안 좋은 코드인지 확인을 받고 싶은게 사람의 심리인가 봅니다. 혹 여기서 개선 할점 이나 나쁜게 보인다면 지적해 주시기 바랍니다.답변 부탁 드립니다.(해답 풀이는 안보고 Car를 좀 참고하기는 했습니다., 그리고 고수 분들에게는 꾸질수도 있으니 좀 양해 바랍니다.)-추가 그리고 80퍼 이해하면 프로그랭밍 적성이 맞는다고 하였는데 영한님 관점에서 80%입니까? 아니면 저희들이 이해하고 있는 관점에서 80%인가요...??
- 미해결김영한의 실전 자바 - 기본편
문제와풀이2번 출력
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.package poly.expay; public class PayService{ public void processPay(String name, int amount) { boolean result; System.out.println("결제를 시작합니다: " + "option = " + name + ", amount = " + amount); if(name.equals("kakao")) { KakaoPay kakaoPay = new KakaoPay(); result = kakaoPay.Pay(amount); } } }다름이 아니라 result값에 kakaoPay.Pay(amount)를 넣는건 알겠는데 그반환값도 true로 되구요 근데 왜 메인에서 출력이 되는건가여? 제가 생각하기로는 result = true라고 생각을 하였는데, 따로 출력을 하기위해선 kakaoPay.Pay(amount); 만 써야 출력이 되지 않나요? 아님 result에 값을 대입함과 동시에 출력도 되는지요.
- 해결됨김영한의 실전 자바 - 기본편
코드 이렇게 만들어도 되는지요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 복습을 하는 도중. animl들의 울음소리 행동 이런것들을 집어넣자??(정확히 기억이 안나네요 만드면서 까먹음..) 생각이 들어서 만들었는데, 이렇게 코드를 만들어도 되는지 확인을 받고 싶어서 이렇게 글을 남깁니다.(추가 쓰고 나서 생성자 막는게 생각나서. private 넘)이렇게 만들었는데 어떤가요? 답변 부탁 드립니다.
- 미해결김영한의 실전 자바 - 기본편
인스턴스 질문
public class Main { public static void main(String[] args) { Static11 peo1 = new Static11("one") ; Static11 peo2 = new Static11("two") ; Static11 peo3 = new Static11("three") ; } } public class Static11 { private String name ; public static int count ; public Static11(String name){ this.name = name ; count++ ; } } 이렇게 2개의 클래스가 있을때 , how many distinct instances of name, count 를 물으면 count 는 1개이고, name 은 3개인가요 ?
- 미해결김영한의 실전 자바 - 기본편
static 메서드의 존재 이유 및 인스턴스 메서드 참조값에 대한 질문입니다.
========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]클래스에 있는 모든 메서드들은 메서드 영역에 저장된다고 하셨습니다. 따라서 static 메소드와 일반 메소드 모두 메서드 영역에 저장되는 것으로 이해됩니다. 그렇다면 static 메서드의 존재 이유는 인스턴스 생성없이 메서드를 사용할 수 있게 하는 목적 하나뿐인가요?static 메서드안에는 static만 사용이 가능합니다. 이때 참조값의 문제때문에 인스턴스 영역을 사용할 수 없다고 하셨습니다. 그런데 클래스의 모든 매서드는 메서드 영역에 저장된다고 하셨습니다. 그렇다면 인스턴스가 생성될 시 인스턴스 매서드에는 어떤 참조값이 어디에 어떻게 저장이 되나요? 강의 너무 잘 듣고 있습니다. 감사합니다.
- 미해결김영한의 실전 자바 - 기본편
접근제어자 사용 - 필드, 메서드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.접근제어자 필드,메서드 부분 강의에 대해서 질문드립니다.다른 패키지 access.b에서 import 해서 access.a.AccessData 클래스를 가져온다고 하면, AccessData 내부에 private이나 default로 선언된 멤버변수 또한 사용할 수 있는게 아닌가요? import는 클래스 자체를 가져오는거로 이해했는데, 왜 패키지 이름이 다르다고 접근이 안되는지 잘 모르겠습니다. 그렇다면 public으로 선언되어있는 멤버변수나 메서드에만 접근할 수 있는걸까요?
- 미해결김영한의 실전 자바 - 기본편
자바 메모리 구조에 대해 질문드립니다.
안녕하세요 영한님. 항상 양질의 강의로 지식을 공유해주시는점에 우선 감사하다는 인사부터 올리겠습니다.자바 메모리 구조에 대해 강의를 들으면서 문득 궁금한 점, 스스로 지식 정리가 되지 않는 부분이 있어 질문드립니다. 우선 제가 알고 있는 사실입니다. JDK 스펙에서 메소드 영역의 구현 방식에는 제한하지 않기에 벤더마다 상이하다Java8 이전 오라클 핫스팟에선 이를 Permgen(Permanent Genration) 이라 명하였고 힙 메모리 안에 위치시켰다.우리가 일반적으로 아는 static 변수 및 메소드, 클래스 정보, 런타임 상수 풀, String Pool 등이 이 메소드 영역 (Permgen)에 저장되었다.하지만, Java8 이후 Permgen 의 고정된 메모리 이슈로(잦은 OOME) metaspace 라는 새로운 대체 공간을 만들고 이를 os영역인 Native memory 쪽에 두었다.java8 이후 현재, 기존의 Permgen 에 저장되던 클래스 메타 정보들 (constant pool)은 대체된 metaspace안에 저장되고 static 변수 및 메소드, String Pool(리터럴 String 및 interned String 저장 pool) 들은 Heap 영역으로 저장되게 변경되었다. 우선 제가 옳게 이해하고 있는지, 지식에 오류가 없는지 궁금하며 몇 가지 문의사항이 있습니다.위 내용중 2)에서 Permgen을 힙 메모리 안에 두었다고 하지만 heap / non-heap 으로 구분하여 Permgen 은 non-heap 에 속한다 라고 설명하는 레퍼런스가 많습니다. Permgen이 non-heap 이라고 하는 이유가 비록 Permgen 이 논리적으로는 힙 메모리 안에 위치하지만, 일반적으로 gc 대상에선 제외되기 때문에 그런건지 아니면 실제로 물리적으로 분리된 공간이어서 non-heap 이라는건지 궁금합니다.(+ 지속적으로 찾아보니 Permgen 은 Heap 영역안에 특별한 공간 정도로 이해하면 될 듯 합니다. GC(major/full GC) 또한 동작한다고 하네요..! 이것과 별개로 metaspace의 경우도 더이상 사용하지 않는 클래스에 대해 메모리 회수가 일어난다고 합니다. 근데 이 metaspace 는 navtive 영역에 있는데 이걸 "gc가 동작하여 최적화한다" 라고 말할 수 있는 건지 아니면 그냥 Metaspace 자체에서 메모리관리를 한다고 봐야할지 궁금합니다..!)궁극적으로 궁금한 부분인데요 메소드 영역 이라는 것에 대해 어떻게 이해하면 좋을지 의문입니다. 두 가지 정도로 생각하고 있는데,1. 메소드 영역 이라는 것은 JDK spec 에서 정의하고있는 하나의 추상화된 공간(인터페이스)이다. 이것이 과거엔 힙에 위치한 permgen으로 구체화 되었고 현재는 native 메모리에 위치한 metaspace로 구체화 되어 대체되었다. (메소드 영역이 상위 개념이다)2. 옛날 permgen, 현재의 metaspace 안에 특정한 데이터(클래스 메타데이터 같은)를 저장하는 별도의 공간이 있고 이를’ 메소드영역’ 이라고 한다.(메소드 영역이 하위 개념이다) 메소드 영역과 permgen, metaspace 이들간의 카테고리 상 포함관계가 어떻게 되는지 개념이 궁금합니다.(1 번과 2번중에 어떤게 맞는지)또한 현재 메소드 영역을 담당하는 metaspace 기준으로, static 변수, string pool 등은 Heap 영역에 저장되고(static 변수의 경우 heap 영역안의 static pool 안에) 클래스 정보, 런타임 상수 풀(constant pool) 등은 Metaspace 에 저장이 되는데 “메소드 영역에는 클래스정보, static 변수, 런타임 상수 풀이 저장된다” 라는 개념이 아직도 유효하고 옳은 개념인지 문의드립니다. 이게 말이 되려면 메소드영역이란 heap 영역의 일부 + metaspace 가 되어야 하기 때문입니다. 감사합니다.
- 미해결김영한의 실전 자바 - 기본편
상속
public class cd{public int amt ;........... } public class ab extends cd{public int count ;public void method(){count += amt ;}이 상황에서 class ab 는 cd 의 instance variable 인 amt 를 자유자재로 쓸 수 있나요? 그렇다면 위와 같이 그냥 amt 만 써야 하나요?마찬가지로 이 아래 BankAccount class 의 private double balance 가 아니라 public double balance 였다면 Checking class 에서 만약 withdraw method 를 public void withdraw{transcations ++ ;balance = balance + amt ; } 라고 해도 되는건가요 ?
- 미해결김영한의 실전 자바 - 기본편
JavaMemoryMain1
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.스택구조에 관하여 질문드립니다. m2사라지고 method2(cal)로 와서 저기 사라지고 다시 System.out.println("method1 start"); int cal = m1 * 2; 이 순서로 사라지는거 아닌가요 그러고 나서 메인에 있는 method1 로 가게 된다고 이해를 했는데 그렇다면 m1보다 메인함수가 먼저 사라지고 나머지 m1에 있는 System.out.println("method1 end");이게 마지막으로 사라지는거 아닌가요?
- 미해결김영한의 실전 자바 - 기본편
오버라이딩이 우선권을 갖는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 오버라이딩 된 메서드가 항상 우선권을 가지게 설계한 이유가 무엇인가요?
- 미해결김영한의 실전 자바 - 기본편
abstract클래스의 인스턴스 생성
[질문 내용]안녕하세요! 궁금한게 있어서 질문을 남깁니다. 자식클래스로부터 인스턴스가 생성되면 부모클래스의 인스턴스도 함께 생성되는 것으로 공부하였습니다. 추상 클래스는 실체인 인스턴스가 존재하지 않는다고 하였는데,추상 클래스를 상속 받은 자식 클래스로부터 인스턴스를 생성하면 왜 추상클래스 인스턴스도 함께 생성되는 것인가요?
- 해결됨김영한의 실전 자바 - 기본편
매개변수도 메서드 호출시 인스턴스가 만들어지는게 맞다면
안녕하세요? 자바를 복습하면서 강의를 듣고 있는 학생입니다. 지난 강에서 dataA의 필드 변경을 위해 changeReference라는 메서드를 사용하셨을 때, Data dataX를 파라미터로 사용했었는데 강의에선 dataA와 동일한 참조값을 갖는 dataX라는 인스턴스도 메모리 상에 생성되었습니다. 아직 진도가 나가진 않았지만 기존에 알고 있었던 제 지식으로는 changeReference 메서드 호출시 스택 메모리 상에서 dataX가 생성되고 메소드 종료시 dataX는 소멸되고 힙 메모리 상 변경된 값은 갱신되는 것으로 알고 있는데 이게 맞나요? 이게 맞다면 이번 강의의 createStudent 메서드 파라미터들도 메서드 호출시 스택 메모리 상에 각각 인스턴스(name이나 age 등)가 생성될텐데 그림에는 이 부분이 없어서요. 너무 그림이 산만해질까봐 넣지 않으신 것으로 예상하긴 하는데 제가 아는 바가 틀린 것이 아니라면 이 부분을 넣는 것이 처음 배우는 분들을 위해 도움이 되지 않을까해서 여쭤봅니다.
- 미해결김영한의 실전 자바 - 기본편
super2main에서 classB()생성자 안에 this(a, 0)말고 super()도 생략되어 있는거 아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 상속 강의 마지막 부분에 public class ClassB extends ClassA{ public ClassB(int a){ this(a, 0); // 기본 생성자 생략 가능 System.out.println("ClassB 생성자 a = " + a); } public ClassB(int a, int b){ super(); // 기본 생성자 생략 가능 System.out.println("ClassB 생성자 a = " + a +" b = " + b); } } 여기서 ClassB(int a) 생성자에 super()가 생략되어 있는거 아닌가요? public class Super2Main{ public static void main(String[] args){ ClassB classB = new ClassB(100); } }제가 이해한 바로는new ClassB(100) 호출시 ClassB(int a) 안에 생략된 super()가 호출되고 this(a, 0)이 실행되고 ClassB(int a, int b)안에 super()가 실행되고 나머지 실행되고 ClassB(int a)에 나머지 코드가 실행돼서 "ClassA 생성자"가 두번 호출되어야하는게 아닌가 해서요.
- 미해결김영한의 실전 자바 - 기본편
한글 깨짐 현상
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.메인클래스 실행 시 사진과 같이 한글이 깨져서 나옵니다.구글링 해서 나온 방법대로 해봐도 안돼서 질문 드립니다.수정할 때마다 인텔리제이 재접속도 해봤습니다.혹시 몰라 수업자료 받은 파일도 실행해봤는데 똑같이 깨져서 나왔습니다.
- 미해결김영한의 실전 자바 - 기본편
this()에 관하여 질문 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이 부분에서 this()는 생성자 내부에서 자신의 생성자를 호출할 수 있다. this는 인스턴스 자신의 참조값을 가르킨다고 했는데 위의 생성자가 메인메소드에서 호출될때랑 밑에 생성자가 호출될때는 생성되는 객체가 다르고 결국 참조값도 다르잖아요? 그러면 여기서 궁금한게생성자 내부에서 자신의 생성자를 호출하는게 밑에 매개변수로 3개를 받는 생성자를 말하는건가요?자신의 참조값이라는게 밑에 생성자가 호출되면서 생성되는 객체의 참조값을 말하는건가요?
- 해결됨김영한의 실전 자바 - 기본편
다형성 문제풀이 2번 다른 풀이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하십니까! 두번째 정주행을 통해서 다형성에 대해서 이해하고 문제풀이까지 완료했습니다. 처음 봤을땐 아무것도 손댈수 없었지만 다시 보니 막힌 혈이 뚫리는 기분이였습니다.김영한 강사님께서 설명해주신 풀이로 푸는것은 이해했지만 다른 문제 풀이 방법을 보고 참고할까합니다! 직접 해보고 검색해보며 찾아보려했으나 나오지않아 질문 올립니다!
- 해결됨김영한의 실전 자바 - 기본편
오탈자가 있는 거 같아서 말씀드립니다.
[질문 내용]안녕하세요. 수업 항상 잘 듣고 있습니다.다름이 아니라 강의 자료에 오타가 있는 거 같아서 글을 남깁니다.오타의 내용은 강의자료 22pg 변수와 생명주기 -> 클래스 변수의 설명 세 번째 줄의"생명주기가 어어진다" -> "생명주기가 이어진다."로 오타가 수정되어야 할 것 같습니다. 감사합니다.
- 미해결김영한의 실전 자바 - 기본편
자바 메모리에 대해서 질문이 있습니다.
안녕하세요 영한님의 자바 기본편 강의를 듣다가 궁금한 점이 생겨서 아래와 같이 질문을 남겼습니다. 자바 메모리에서 메서드는 스택 영역에 스택 프레임으로 쌓여서 호출한다고 말씀해주셨습니다. 다음 설명에서는 결국 메서드 영역의 있는 메서드 코드를 호출한다고 말씀해주셨는데 그렇다면 스택 영역은 메서드 영역 안에 있는 것인가요??