묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 1편
IDE에서 equals를 생성하는 방식이 바뀐걸까요?
이전엔 자동 완성을 시키면 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; UserV2 user = (UserV2) o; return Objects.equals(id, user.id); }이 코드였던거같은데 현재는 이렇게 생성이 됩니다. @Override public boolean equals(Object object) { if (object == null || getClass() != object.getClass()) return false; UserV2 userV2 = (UserV2) object; return Objects.equals(id, userV2.id); } IDE 작동 방식에 변화가 생긴걸까요? 아니면 제가 설정을 무엇인가 잘못 건드린걸까요
-
미해결김영한의 실전 자바 - 중급 2편
섹션 6 -문제와 풀이 2 구조도 그림
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요!섹션 6 -문제와 풀이 2 에 나온 문제를 간략하게 그림으로 도식화해보았습니다.제가 이해하고 있는게 맞는지 확인 부탁드려도 괜찮을까요?감사합니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
count에 volatile을 붙이는 이유
문제가 되는 부분은 main 쓰레드와 work 쓰레드에서 flag 변경/확인 타이밍이 맞지 않아서인데 왜 count에도 volatile 키워드를 붙여주는 것인가요? flag에만 volatile을 붙인 경우에도 정상 동작하긴 합니다..
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ProductAdminEx | Switch 사용
package study.array.ex; import java.util.Scanner; public class ProductAdminEx { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] productNames = new String[10]; int[] productPrice = new int[10]; int productCount = 0; while (true) { System.out.println("1. 상품 등록 | 2. 상품 목록 | 3. 종료"); System.out.print("메뉴를 선택하세요 : "); int option = sc.nextInt(); sc.nextLine(); switch(option) { case 1: if(productCount != 10){ System.out.print("상품 이름을 입력하세요 : "); productNames[productCount] = sc.nextLine(); System.out.print("상품 가격을 입력하세요 : "); productPrice[productCount] = sc.nextInt(); productCount++; } else System.out.println("더 이상 상품을 등록할 수 없습니다."); break; case 2: if(productCount != 0) { for (int i = 0; i < productCount; i++) { System.out.print(productNames[i] + " -> " + productPrice[i]); System.out.println(); } } else { System.out.println("등록된 상품이 없습니다."); } break; case 3: System.out.println("프로그램을 종료합니다."); System.exit(0); } } } } 마지막 문제풀이때 for문을 사용하지 않고 switch문을 사용하여서 풀었는데 어떠한 상황에서 FOR문을 사용해야 더 개선된 코드인지 SWITCH문을 사용해야 더 개선된 코드인지 분별이 잘 안갑니다. 이런 문제풀이때는 어떤걸 사용해야 하나요??
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ArrayExRef6 코드 질문있습니다.
[질문 내용]여기에 질문 내용을 남겨주세요.package study.array.ex; import java.util.Scanner; public class ArrayExRef6 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("입력받을 숫자의 개수를 입력하세요:"); int[] numbers = new int[scanner.nextInt()]; System.out.println(numbers.length +"개의 정수를 입력하세요:"); // 입력 for (int i = 0; i < numbers.length; i++) { numbers[i] = scanner.nextInt(); } int min, max; min = max = numbers[0]; // 가장 작은 정수 for (int number : numbers) { if(min > number) min = number; } // 가장 큰 정수 for (int number : numbers) { if(max < number) max = number; } // 출력 System.out.println("가장 작은 정수: " + min); System.out.println("가장 큰 정수: " + max); } } 선생님의 기존 코드와 비교했을때 이런 로직으로 짜는것은 가독성이나 효율성(비효율적인 반복문 사용)이 떨어지는 코드일까요??
-
미해결김영한의 실전 자바 - 기본편
기본형&참조형 변수대입2
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예안녕하세요, 강의 너무 잘 보고 있습니다.Data dataA = new Data(); 부분에서 궁금한 점이 생겨 여쭤보게 되었습니다. dataA 라는 것은 저는 인스턴스가 생성될 때 인스턴스의 이름인 줄 알았는데 이것은 인스턴스의 이름이 아니라 참조 변수의 이름이 맞는지가 궁금합니다. 그리고, 실질적으로 인스턴스가 생성되는 부분은 dataA 부분이 아니라 new Data() 쪽에서 인스턴스가 생기는지와, 그렇게 되면 생성된 인스턴스 자체에는 이름이 없는지가 궁금합니다. 좋은 강의 제공해주셔서 항상 감사드립니다 !
-
미해결김영한의 실전 자바 - 중급 1편
날짜/ 시간 클래스 질문 서포터즈님들 답변좀요 ㅠ
[질문 내용]여기에 질문 내용을 남겨주세요. package time.test; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; import java.util.Scanner; public class TestCalendarPrinter { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[] dayOfWeeks = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"}; System.out.print("년도를 입력하세요: "); int year = scanner.nextInt(); System.out.print("월을 입력하세요: "); int month = scanner.nextInt(); LocalDate ldt = LocalDate.of(year, month, 1); int lastDay = ldt.with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth(); System.out.println("lastDay = " + lastDay); String firstDayOfWeek = String.valueOf(ldt.getDayOfWeek()); System.out.println("Su Mo Tu We Th Fr Sa"); int count = 0; for(int day=1; day<=lastDay; day++){ if(day == 1) { for (String dayOfWeek : dayOfWeeks) { if (dayOfWeek.equals(firstDayOfWeek)) { System.out.print(" " + 1); break; } System.out.print(" "); System.out.print(" "); count++; } System.out.print(" "); continue; } if(1<day&&day<10){ if(dayOfWeeks[0].equals(String.valueOf(LocalDate.of(year, month, day).getDayOfWeek()))){ System.out.println(); } System.out.print(" "+day); }else{ if(dayOfWeeks[0].equals(String.valueOf(LocalDate.of(year, month, day).getDayOfWeek()))){ System.out.println(); } System.out.print(day); } System.out.print(" "); //요일마다 한 칸 공백 } } } 달력문제 코드로 직접 구현해봤고, 답은 잘 나오는데 너무 뭔가 코드가 깔끔하지 않고, 지저분한 거 같은데, 별로같나요? 갈길이 먼거 같네요. 이런 상황에서 어떻게 스스로 리팩토링 하나요..? 강의는 날짜/시간 클래스 여기까지 배워서 뭐 스스로 리팩토링 하는 방법도 모르겠는데 그냥 진도 쭉쭉 나가면서 공부하다보면 자연스레 깨닫게 될까요? 뭐 지금 날짜/시간 연습문제 포함, 기초편부터 현재 진도까지 모든 연습문제를 답지 안보고 스스로 1~3문제 빼곤 다 풀었는데, 코드가 지저분하고 시간이 좀 오래 걸린게 마음에 걸리긴 합니다. 서포터즈님들의 답변 궁금합니다..
-
미해결김영한의 실전 자바 - 기본편
교재 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요.교재 판매는 없고, pdf파일 직접 프린팅 하는 것만 있는 거죠?
-
미해결김영한의 실전 자바 - 중급 1편
ChronoField질문
[질문 내용]여기에 질문 내용을 남겨주세요.이 사진 보면, LocalDateTime클래스에서 날짜와 시간만 정해준거뿐인데, ChronoField클래스에 언제 정보가 담겨서 저렇게 사용이 가능한건가요? 저런거까지 깊게 파고들기보다는 그냥 어떻게 사용하는지에 초점 잡아 공부하는게 나은거겠죠?
-
해결됨스프링 핵심 원리 - 기본편
configuration, bean 디버그 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.다른 파일들은 괜찮은데 @configuration, @bean을 작성한 파일과 메소드에 한해서 디버깅이 안됩니다...저렇게 재생 표시가 아니라 초록색 금지 표시가 뜨는데 어떻게 해결해야할까요?ㅠㅠ참고로 컴포넌트 스캔 쓰기 전부터 AppConfig 파일이 저래서 자동과 수동 중복 적용은 아닌 듯합니다...
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바 입문 강의: ScannerWhileEx3 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요, 자바 입문 강의를 수강하고 있는 병아리 입문자입니다. 일단 지나치게 기초적인 질문이라면 죄송합니다. 다만 강의와 수업 자료에 설명이 생략되어 있어 질문 드립니다. 자바 입문 강의의 ScannerWhileEx3 문제에서(7. 훈련 파트) int input에 scanner.nextint() 기능으로 사용자 입력을 받는다는 것은 이해했습니다. 그런데 어차피 매개변수 input에 사용자 값을 입력 받을 텐데 굳이 int input = 0;으로 초기화하는 이유는 무엇인가요? 강의를 듣기 전에 제가 input를 선언하기만 하고 바로 사용자 값 입력을 받았을 때는 무탈히 프로그램이 작동된 것 같아 더 의문이 듭니다. 답변 기다리겠습니다. 강의 잘 듣고 있습니다. 감사합니다!
-
해결됨진짜! 자바스크립트(Javascript) - 기초부터 고급까지
nvm 설치 오류입니다.
아래와 같이 에러가 납니다.
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
조합 관계에 대해 질문있습니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 안녕하세요.이번 강의에서 상속 구조를 조합으로 풀어내면 유연해진다고 하셨는데Cell의 공통 부분을 뽑아내서 CellState로 만들어서 EmptyCell, LandMineCell, NumberCell에서 사용하게 되는데 이러면 결국 CellState와 결합도가 높아지는 것 아닌가요??EmptyCell, LandMineCell, NumberCell과 CellState사이에 인터페이스를 만들지 않는 이상 Cell을 부모로 사용할 때와 큰 차이가 없는 것 같은데 ( 결국 CellState에서 변경이 일어나면 CellState를 사용하는 곳에서도 변경을 해줘야 하니까 부모인 Cell에서 변경이 일어나면 자식도 변경을 해줘야 한다는 것과 동일하다고 생각했습니다 )잘못 생각하고 있는 부분일까요..?
-
해결됨진짜! 자바스크립트(Javascript) - 기초부터 고급까지
console 이 안보입니다.
console 및 미리보기 hello world가 안보입니다.
-
미해결김영한의 실전 자바 - 중급 1편
중첩클래스 static
안녕하세요 . 중첩클래스 관련하여 NetworkMessage를 static으로 중첩클래스로 만들면 외부클래스와 논리적으로 엮인다는것은 이해했습니다. 다만 static영역으로 관리할시 NetworkMessage 안 인스턴스의 값이 공통으로 관리되는 것아닌가여? 즉 content의 값은 매요청마다 동일한 값을 공유하게 되는것 아닌가여??
-
미해결스프링 핵심 원리 - 기본편
3개 이상 다중 디비 연결
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]실무에서 데이터베이스가 3개 이상이고 로직 비율이 비슷할 때는 Primary와 Qualifier를 사용하나요?모두 Qualifier를 붙여주기는 귀찮아서 패키지 구조로 각 데이터 베이스를 호출하도록 나눠놨는데 더 좋은 방법이 있을까요?
-
미해결스프링 핵심 원리 - 기본편
AllBeanTest에서 @Autowired 유무
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]AllBeanTest 코드에서 DiscountService 생성자 위에 @Autowired를 쓰지 않아도 테스트가 정상적으로 실행되는데요,ApplicationContext 스프링 컨테이너가 생성되면서 DiscountService가 스프링 빈으로 등록되고, 이에 따라 스프링 빈의 경우 생성자가 하나이면, @Autowired를 명시하지 않아도 자동으로 주입되어 오류 없이 실행된 건가요?그렇다면 @Autowired를 명시하지 않아도 되는건가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
동기화
동기화 강의 중Room room = new Room(); Runnable cleaner1 = new Runnable() { @Override public void run() { System.out.println("-- 직원1 청소 시작 --"); for (int i = 1; i <= 5; i++) { room.clean("직원1"); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } if (i == 2) { throw new RuntimeException("못해먹겠다!!"); } } System.out.println("-- 직원1 청소 끝 --"); } }; Runnable cleaner2 = () -> { System.out.println("-- 직원2 청소 시작 --"); for (int i = 1; i <= 5; i++) { room.clean("직원2"); try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } } System.out.println("-- 직원2 청소 끝 --"); }; Thread cleanerThread1 = new Thread(cleaner1); Thread cleanerThread2 = new Thread(cleaner2); cleanerThread1.start(); cleanerThread2.start();수업에 사용한 위 코드가 10번방까지 출력이 되는 것은, for 반복문으로 1~5 까지 5개씩의 반복을 두 개 만들었기 때문에 자연적으로 10번까지 출력할 수 있는건가요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
Casting3 클래스에서 형변환 값이 수업과 다르게 나옵니다
[질문 내용]강사님이 말씀하신 것 처럼 오버플로우가 발생하지 않고 값이 그대로 출력됩니다 ㅠ*코드 입니다*컴파일 결과입니다
-
미해결김영한의 실전 자바 - 중급 2편
트리 구조의 구현에서의 노드 객체 필드
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]"트리 구조의 구현" 부분에서 Node0의 왼쪽 노드는 자신의 왼쪽 자손 노드, 오른쪽 노드는 자신의 오른쪽 자손 노드라고 할 때 Node 객체의 필드를 구성하는 prev, item, next에서 prev는 left, next는 right로 생각하면 될까요? 해당 교재 내용에서 Node 객체 필드가 prev, item, next라고 되어있어 질문드립니다.