44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결김영한의 실전 자바 - 기본편
강의교안 생성자 파트 질문
new MemberConstruct("user1", 15, 90);강의 교안에 '여기서는 Member 인스턴스를 생성하고 바로 MemberConstruct(String name, int age, int grade) 생성자를 호출한다.'라고 나와있는데요. MemberConstruct 인스턴스를 생성하고 MemberConstruct(String name, int age, int grade) 생성자를 호출한다고 이해하면 되는걸까요?
- 해결됨김영한의 실전 자바 - 기본편
섹션2. 문제와 풀이
productOrderMain의 리펙토링 문제입니다.문제에서'static void printOrders(ProductOrder[] orders) 배열을 받아서배열에 들어있는 전체 ProductOrder 의 상품명, 가격, 수량을 출력합니다.'라고 하는데 배열을 받는 다는 게 뭔가요?매개변수 자리에 배열을 놓고 호출할 때도 배열 변수를 놓는 게 뭘 불러오고 대입이 되는 건지 이해가 되지 않습니다.ㅠㅠ저는 for each 문이 아니라 그냥 for문으로 풀어보려 했는데 메서드에 배열을 받는다는 게 뭔지 몰라서 그냥 for문으로 어떻게 풀어야할지 모르겠습니다.printOrders(orders);static void printOrders(ProductOrder[] orders) { for (ProductOrder order : orders) { System.out.println("상품명: " + order.productName + ", 가격: " + order.price + ", 수량: " + order.quantity); } }
- 미해결김영한의 실전 자바 - 기본편
하위 package 생성시 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]class1 패키지 하위로 ex패키지를 만드려 하는데 하위로 들어가는 게 아닌 별도로 따로 패키지가 생성되는데 어떤 항목을 재설정해야할까요??
- 해결됨김영한의 실전 자바 - 기본편
섹션2. 참조형과 메서드 호출 - 활용
package refMethod2에서 학생의 정보를 바로 입력하는 메서드를 만들어서 참조값을 반환해서 사용하신다고 했는데, 메서드를 호출하고 수행한 뒤에 끝나면 메모리에서 사라지는 거 아닌가요?ㅠㅠcreatStudent메서드를 호출하면Student 객체를 생성하고이름, 나이, 성적을 넣은 뒤Student 객체의 참조값을 반환하는데메서드가 종료돼서 Student의 객체는 사라져서 참조값이 있어도 사용하지 못하는 게 아닌가해서요... 입문편 메서드 pdf에 이렇게 써있어서요!'메서드 호출이 끝나면 더 이상 해당 메서드가 사용한 메모리를 낭비할 이유가 없다. 메서드 호출이 끝나면 메서드 정의 에 사용한 파라미터 변수인 int a , int b 는 물론이고, 그 안에서 정의한 int sum 도 모두 제거된다.'
- 미해결김영한의 실전 자바 - 기본편
List<String> list = new ArrayList<>(); 이와 같이 작성하는 이유를 알고 싶습니다.
다형성 부분을 배우다보니 비슷한 맥락일 것 같아서요.. 하지만 확실히 이해되지는 않습니다.보통 Map, List를 사용할 때 위와같이 작성하는데, 위와같이 작성할 경우 부모클래스에 있는 method만 사용가능하면서 오버라이딩된 형태로 쓰이잖아요. 그런데 왜 굳이 앞에 부모클래스를 적어주는 걸까요?
- 해결됨김영한의 실전 자바 - 기본편
패키지 생성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.선생님께서 패키지를 생성하실 때 com.helloshop이라고 생성하시면 인텔리제이에서 자동으로 com이라는 패키지를 만들고 그 밑에 helloshop이라는 패키지를 만들어 주던데 저는 그냥 com.helloshop이라는 패키지 생성됩니다.어떤 세팅을 바꿔야 하는지 알고 싶습니다!
- 미해결김영한의 실전 자바 - 기본편
Student 에 대한 질문이에요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. [질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요? Student class 의 Student변수 선언의 Student객체 생성의 Student각 Student는 의미가 다른데 교재에서 계속 변수, 클래스, 객체 'Student'로 반복되니까 엉키게 되네요 <질문>1. 위 3개는 같은 명으로 해야 하는 약속인가요?, 혹시클래스의 Student는 classStudent변수선언의 Student는 varStudent객체생성의 Student는 objStudent 식으로 구분하기 쉬운 명으로 변경해도 되나요?클래스와 객체생성의 Student는 같아야 할 것 같긴 한데..입문자 질문이라 양해 구합니다^^
- 미해결김영한의 실전 자바 - 기본편
Class 도입과정에서 오류가나타납니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.Student 클래스를 같은패키지 안에 여러번 다시만들어도 저렇게 인식을못하는데어디가 문제일까요? 인텔리제이 오류코드는C:\java_study\Java-basic\src\Class1\ClassStart3.java:7:24java: cannot find symbol symbol: class student location: class Class1.ClassStart3라고나옵니다.
- 미해결김영한의 실전 자바 - 기본편
Caw(X) Cow(O) 오타 수정할 곳이 많은데 어떡하죠?
제곧내
- 미해결김영한의 실전 자바 - 기본편
Arrays.sort
우리는 만약 int[] a = {1,3,2} ; 라고 주어졌다면 Arrays.sort(a) ; 를 하면 되는 것으로 알고 있습니다. 그런데 AudioBook 의 경우에는 사용자가 정의한 객체이기 때문에 sort 의 기준이 명확하지 않아 compareTo 메서드를 사용해야하는 것으로 알고 있어요. 그런데 여기서 AudioBook 객체가 Comparable class 를 반드시 implements 해야하는 이유는 그래야 Arrays.sort() 를 이용할 수 있기 때문인가요? 만약 implements 없이 그냥 사용하면 Arrays.sort() 에서는 compareTo 를 활용해야한다는 인식 자체를 못하는 건가요? 아래에는 제가 질문을 하게끔 만든 코드입니다. public class Books { //----------------------------------------------------------------- // Creates a AudioBookCollection object and adds some books to it. Prints // reports on the status of the collection. //----------------------------------------------------------------- public static void main (String[] args) { AudioBookCollection library = new AudioBookCollection(); library.addBook("The Kaiju Preservation Society", "John Scalzi", "Will Wheaton", 25.99, 482); library.addBook("Revenger", "Alastair Reynolds", "Clare Corbett", 22.94, 880); library.addBook("Klara and the Sun:A Novel", "Kazuo Ishiguro", "Sura Siu", 24.50, 616); library.addBook("Endurance: Shackleton's Incredible Voyage", "Alfred Lansing", "Simon Prebble", 21.83, 620); library.addBook("Barbarian Days: A Surfing Life", "William Finnegan", "William Finnegan", 21.99, 1088); System.out.println(library); library.sort(); System.out.println(library); } } import java.text.NumberFormat; import java.util.Locale; import java.util.Arrays; public class AudioBookCollection { private AudioBook[] collection; private int count; private double totalCost; /*----------------------------------------------------------------- * Constructor: Creates an initially empty collection. *----------------------------------------------------------------*/ public AudioBookCollection () { collection = new AudioBook[100]; count = 0; totalCost = 0.0; } /*----------------------------------------------------------------- * Adds an audio book to the collection, increasing the size of the * collection if necessary. *----------------------------------------------------------------*/ public void addBook (String title, String author, String readBy, double cost, int minutes) { if (count == collection.length) this.increaseSize(); collection[count] = new AudioBook(title, author, readBy, cost, minutes); totalCost += cost; count++; } /*----------------------------------------------------------------- * Returns a report describing the Book collection. *----------------------------------------------------------------*/ public String toString() { Locale usa = new Locale("en", "US"); NumberFormat fmt= NumberFormat.getCurrencyInstance(usa); String report = "~~~~~~~~~~~~~~Wow Cool~~~~~~~~~~~~~~~~~~~~~~~\n"; report += "My Audio Book Collection\n\n"; report += "Number of Books: " + count + "\n"; report += "Total cost: " + fmt.format(totalCost) + "\n"; report += "Average cost: " + fmt.format(totalCost/count); report += "\n\nBook List:\n\n"; for (int i = 0; i < count; i++) report += collection[i] + "\n"; return report; } public void sort() { Arrays.sort(collection,0,count); } //----------------------------------------------------------------- // Increases the capacity of the collection by creating a // larger array and copying the existing collection into it. //----------------------------------------------------------------- private void increaseSize () { AudioBook[] temp = new AudioBook[collection.length*2]; for (int i = 0; i < collection.length; i++) temp[i] = collection[i]; collection = temp; } } import java.text.NumberFormat; import java.util.Locale; public class AudioBook implements Comparable<AudioBook> { private String title, author, readBy; private double cost; private int minutes; //----------------------------------------------------------------- // Creates a new audio book with the specified information. //----------------------------------------------------------------- public AudioBook (String title, String author, String readBy, double cost, int minutes) { this.title = title; this.author = author; this.readBy = readBy; this.cost = cost; this.minutes = minutes; } //----------------------------------------------------------------- // Returns a string description of this audio book. //----------------------------------------------------------------- public String toString() { // for formatting money NumberFormat fmt= NumberFormat.getCurrencyInstance(Locale.US); // instead of using the ready-made Locale.US we could also create our own // Locale usa = new Locale("en","US") // try looking up country locale codes on the web! // for formatting strings String description; description = String.format(fmt.format(cost) + "\t" + minutes + "\t" + "%-20s" + "\t" + "%-50s",author,title); return description; } // compare based on book length public int compareTo(AudioBook other) { int answer = 0; if (this.minutes<other.minutes){ answer = -1; } if (this.minutes>other.minutes){ answer = 1; } return answer; } }
- 미해결김영한의 실전 자바 - 기본편
Static instance
이 강의를 보면 Data3 type 의 인스턴스가 3개 만들어지는 동안 count 는 단 하나의 인스턴스를 만든 것인가요?
- 미해결김영한의 실전 자바 - 기본편
접근제어자와 this
public class Ant { private int age ; public Ant(int age){ this.age = age ; // this 는 Ant 메서드를 부른 객체의 참조값 인데, x001.age 로 private 접근 제어자에 접근 불가 아닌가 ? } }this 는 Ant 메서드를 부른 객체의 참조값 이라고 알고 있습니다. 그렇다면 예를 들어 x001.age 와 같이 나타날텐데 private 접근 제어자라 필드 변수에 사실 접근할 수 없지 않나요 ? 생성자에서의 접근은 예외로 인정해주는 건가요 ?
- 미해결김영한의 실전 자바 - 기본편
super
만약 child 가 parent 를 상속받았을때 constructor 에서 super() ; 를 언급해줘야 하는데. 만약 child 가 기본 생성자이고, 부모의 생성자 역시 기본 생성자이면 굳이 명시적으로 적지 않아도 상관 없나요 ? Public class Parent{private int age ; } public class Child extends Parent{private int age ; } 이런 식으로만 작성해도 상관없나요 ?
- 미해결김영한의 실전 자바 - 기본편
Static
public class PrintWritterr { public static void main(String[] args) { int x = 5 ; int y = change(x) ; System.out.println(x); System.out.println(y); } public static int change(int x){ x= x + 5 ; return x ; } }여기에서 왜 x 의 값은 변하지 않나요 ? 저는 x 역시 10 이 출력될거라 생각했는데, 5가 출력되는 이유를 모르겠습니다. 제가 추측키로는 아래 public static int change(int x){ x= x + 5 ; return x ; } } 이거는 메서드 영역에서 관리되는데에 반해 메인 메서드의 x 는 다른 곳에서 관리되기 때문인가요 ? 예를 들면 우리는 public class Account { private int balance ; public void deposit(int amt ){ balance += amt ; } public void withdraw(int amt){ if(balance >=amt) { balance -= amt; } else{ System.out.println("잔액 부족"); } } public void getBalance(){ System.out.println("잔고: "+balance); } } 이 클래스에서는 메서드에 저장된 값이 balance 에 계속 영향을 준다는 것을 알고 있습니다.근데 윗 케이스는 아래 메서드가 영향을 주지 못하는 이유를 모르겠습니다
- 미해결김영한의 실전 자바 - 기본편
객체의 수
AudioBook[] a = new AudioBook[100] ; 이라고 할때, a[0], a[1] ,a[2] ... a[99] 전부 다 객체들인가요 ?그리고 이것을 object references 라고 부를 수 있나요 ?
- 미해결김영한의 실전 자바 - 기본편
명시적인 @Override 표시
안녕하세요 만약 자식 클래스가 부모클래스의 메서드를 Override 할때@Override 을 쓰지 않고 오버라이딩해도 문제가 없나요?눈으로는 발생하지는 않지만 혹시 제가 모르는 발생하는 오류가 있나요 ?
- 미해결김영한의 실전 자바 - 기본편
생성자의 역할에 대해 질문드립니다.
안녕하세요,자바 생성자에 대해서 궁금한게 있어서 질문드립니다.보통 생성자는 변수의 초기화를 해주기 위해서 많이 사용하는데요. 강의에서 배운것을 기준으로 하면public class A { private String a; private String b; public A(String a, String b) { this.a = a; this.b = b; } }이런식으로 초기화를 위해 생성자를 사용하는데, 혹시 이런 방식으로public class A { private String a; private String b; public A(String c, String d) { this.a = "new" + c; this.b = "apple" + d; } }매개변수로 a,b를 받아서 초기화하는게 아니라c,d와 같은 다른 변수를 받아서 새로운 것을 만들어줄때도 생성자를 사용하는지 궁금합니다!
- 미해결김영한의 실전 자바 - 기본편
reference values
이 배열 객체의 경우에는 해당 빨간줄을 실행하고나서는 객체값이 아직은 생성되지 않나요? 이 질문의 의도를 파악 못한거 같은데, 제대로된 질문이 되기 위해서는 book object references 가 아니라 temp의 모든 인덱스의 값들을 물어봐야하는거 아닌가요 ?
- 미해결김영한의 실전 자바 - 기본편
실무에서 상수 사용
1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.실무에서 상수를 사용하는 경우 예를 들어 상수만 모아놓고 필요할 때 사용할 클래스를 만들 경우 일반 클래스에 상수들을 정의해서 사용하나요 아니면 인터페이스의 멤버 변수로 사용하나요?인터페이스로 할 경우 인스턴스 생성을 막을 수 있어 괜찮을거 같은데 실무에서는 주로 어떤 방법을 사용하나요?
- 미해결김영한의 실전 자바 - 기본편
인스턴스 이해
안녕하세요. 애당초 static int x 는 변수 일뿐, instances 가 아니라 저 질문 자체가 잘못된거 아닌가요?