묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 기본편
static메서드와 인스턴스메서드
질문1.시점1에서 staticMethod()가 "메서드영역->static영역"에 이미 할당되어있는상태가 맞을까요? 질문2.시점1에서는 instanceMethod()가 할당되지 않았고시점2에서는 new Test()를 통해서 인스턴스를 생성했을 때 "메서드 영역-> 클래스정보" 에 instanceMethod()가 할당되는게 맞을까요? 질문3.메모리 할당위치가 아래와 같이 할당되는게 맞을까요? staticMethod(): "메서드 영역 -> static영역"instanceMethod(): "메서드 영역 -> 클래스정보 영역" 질문3.test1의 주소값이 x01,test2의 주소값이 x02 라고 가정하면test1, test2의 instanceMethod()는 동일한 클래스영역에 주소를 가리키고 있나요?? 질문4.test1, test2의 각 멤버변수를 instanceMethod()를 통해서 호출한다고 가정하면 test1.instanceMethod()test2.instanceMethod() 위와 같이 코드를 작성할텐데 이때 instanceMethod() 호출하는 과정을 살펴보면(1) test1.instanceMethod(), test2.instanceMethod()가 같은 주소의 "메서드 영역 -> 클래스 정보"에 있는 instanceMethod()로 찾아간다 (2)heap영역에 test1의 멤버변수, test2의 멤버변수의 값을 가지고 온다 질문4의 의도는 "같은 메서드 영역에 있는 instanceMethod()를 찾아가지만 각 인스턴스의 멤버변수는 heap영역에서 가지고 오느냐" 이것을 물어보려고 한 것입니다. 복습할겸 다시 보고 있는데 갑자기 혼란스러워서 질문하게 되었습니다. 질문이 많지만 답변부탁드려요!
-
미해결김영한의 실전 자바 - 중급 1편
참조값(사이드 이펙트) 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.영한님의 설명을 보면 자바 문법상 Address b = a 가 만들어저도 문제가 없다고 하였고,참조값을 공유해서 사이드 이펙트를 만드는 경우가 있다고 말하였습니다.여기서 갑자기 궁금해지네요. 여태 까지의 코드를 보면, 사이드 이펙트를 만드는 경우가 없었던 걸로 기억하는데..어는 경우 에서야, 사이드 이펙트를 활용하는지.예시를 알켜 주실수 있으실까요?답변 부탁 드립니다.
-
해결됨김영한의 실전 자바 - 중급 1편
주석 질문합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 좀 뜬금 없는 질문이지만. 주석을 쓰면서 갑자기 궁금한게 생겨서 질문을 남깁니다. 코드에 주석을 다는 경우가 있습니다.어떤 때는 코드를 다 쓰고 나서 우측편에 주석을 쓰는 경우가 있고.b.setValue("부산"); //b의 값을 부산으로 변경 해야함 어떤 때에는 코드 위에 주석을 붙이는 경우가 있습니다.// 참조형 변수는 하나의 인스턴스를 공유할 수 있다. Address a = new Address("서울"); Address b = a;주석이 붙일 경우에 어떤 때는 우측에,어떤때에는 위에 붙이는 경우가 보이는데, 어떤 때에는 위에 붙이고,어떤때에는 우측에 붙이는지 설명해 주실수 있으신가요?아니면 그냥 맘대로 주석을 붙여도 상관없는건가요?답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 중급 1편
섹션2 문제와 풀이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]section2 문제와 풀이를 다음과 같이 풀어보았는데, 결과는 맞지만 제 코드에서 부족한 부분이 있는지, 개선점은 없는지 한번 확인 부탁드립니다!
-
미해결김영한의 실전 자바 - 기본편
개인적인 공부 방향성 질문
안녕하세요. 코딩 질문과 직접적인 관련은 없지만 훌륭한 멘토분들의 조언 역시 엄청난 자산이라고 생각해서 조언을 얻고자 합니다. 현재 자바를 3개월정도 공부한 상황인데. 김영한 선생님의 고급까지 마무리 함과 더불어 spring framework 를 공부하는게 어떤 면에서 도움이 될까요? 일종의 알고리즘을 배우는 과정인건가요 ? 또는 Spring framework 이외에도 어떤 공부를 병행하면 좋을지 모르겠습니다. 도움주시면 감사드리겠습니다.
-
해결됨김영한의 실전 자바 - 중급 1편
섹션 7. 내부 클래스 질문
예를 들어public class Outer{ public class Inner{ } } 이렇게 바깥 클래스와 내부 클래스가 있을 때,Inner 클래스를 생성하려면 Outer 인스턴스를 생성하고 그 참조값을 받아서 Inner 인스턴스를 생성하는 건데,main 메서드에서 Outer객체를 생성하면 그 내부에 있는 Inner클래스는 같이 생성되서 따로 Inner클래스를 생성하지 않아도 되는 게 아닌가요??ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
혹시 스프링 시큐리티 관련 강의 계획이 있으신지 궁금합니다!
세션과 쿠키를 이용한 사용자 인증방식 이외에도스프링 시큐리티 관련하여 강의가 계획되어 있는 지 여쭤보고 싶습니다!
-
미해결김영한의 실전 자바 - 중급 1편
Long 참조변수 더하기 연산
public class WrapperVsPrimitive { public static void main(String[] args) { // wrapper class Long sumWrapper = 0L; /// Long = long (auto boxing) for (int i=0; i<iterations; i++) { sumWrapper += i; /// Long += long (auto boxing) } } }위 코드에서 'sumWrapper += i;' 부분이 이해가 되지 않는데요. 이전에 말씀해주셨듯이 참조형변수는 주소값을 가지고 있기에 참조변수를 통한 값 계산이 불가합니다. 그래서 참조변수 간 더하기 연산이 불가합니다.그런데, 이 코드는 long 타입인 i -> Long으로 auto boxing된 이후에 (Long 타입 참조변수) + (Long 타입 참조변수)인 것인데, String 타입 참조변수와 마찬가지로 자바에서 wrapper class 타입 참조변수 간 더하기 연산을 제공하는 것인가요?그렇다면 Long 타입 참조변수 간 더하기 연산이 일어나게 되면, Long 인스턴스가 내부적으로 가진 long에 더하기 연산이 적용되는 걸까요??
-
미해결김영한의 실전 자바 - 중급 1편
5. enum 열거형 문제와 풀이2 관련 질문
[질문 내용]문제와 풀이 해설이랑 조금 달라서 질문 남겨봅니다. 저는 이런식으로 작성하였는데 문제없이 잘 돌아가긴 했는데요 혹시 이렇게 작성하면 보이지 않는 다른 오류가 발생하는지 궁금합니다. 또, isSuccess() 메서드에서 findByCode()메서드를 호출하였는데 이런 방식을 실무에서도 많이 쓰는 편인가요??
-
해결됨김영한의 실전 자바 - 중급 1편
섹션 8. 람다
print(() -> { int random = new Random().nextInt(6) + 1; System.out.println("random = " + random);});는 함수를 인수로 전달한다고 하셨는데, 지금 print를 보면print(Piece piece)로 되어있습니다. 인수로 받을 수 있는 거는 Piece클래스인데 어떻게 인수만 넘긴 것으로 piece.value();가 작동이 되는지 의문이 들어서 질문 남깁니다!public class Ex1AnswerMain5 { public static void main(String[] args) { print(() -> { int random = new Random().nextInt(6) + 1; System.out.println("random = " + random); }); print(() -> { for (int i = 0; i < 3; i++) { System.out.println("i = " + i); } }); } private static void print(Piece piece) { System.out.println("프로그램 시작"); piece.value(); System.out.println("프로그램 종료"); }
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
파일오류
왼쪽에 목록이 main밖에 없는데 어떻게 해야하나요
-
미해결김영한의 실전 자바 - 중급 1편
concat()이 내부적으로 생성하는 String 인스턴스
public class StringImmutable2 { public static void main(String[] args) { String before = "hello"; String after = before.concat(" java"); System.out.println("before = " + before); System.out.println("after = " + after); } }자바 프로그램 로딩 시점에 문자열 리터럴이 문자열 풀에 보관된다고 알고 있는데요. 위 코드에서 "hello" 뿐만 아니라 " java"도 문자열 리터럴인가요? 그렇다면 " java"도 문자열 풀에 저장되는 것인가요? (제가 자바 기초 지식이 부족한 상태입니다)concat() 내부에서 생성하는 String 인스턴스는 문자열풀에 생성되는 것인가요? 아니면 문자열풀이 아닌 힙 영역에 생성되는 것인가요?
-
미해결김영한의 실전 자바 - 중급 1편
String이 불변 객체인 이유 질문
String이 불변 객체인 이유가 궁금한데요. String 내부에 문자열이 final byte[] value;에 저장되는데 참조변수 final에 들어있는 값(배열의 시작 주소값)이 변경될 수 없는 것이지 byte[] 배열 내부에 있는 원소는 변경 가능하다고 알고 있습니다.final char[] chArr = new char[] {'a', 'b', 'c', 'd', 'e'}; chArr[0] = 'k'; // 가능 System.out.println(chArr); chArr = new char[]{'A', 'B', 'C', 'D', 'E'}; // 불가능 byte[] 배열 내부에 있는 값이 변경 가능한데 String은 왜 불변 객체인 건가요? 혹시 내부적으로 모든 문자를 변경할 수 없도록 하는 어떠한 로직이 존재하는 건가요...?
-
미해결스프링 핵심 원리 - 기본편
객체 생성과 초기화의 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 이해한게 맞나 싶어서 질문드립니다. setter로 의존관계 주입을 완료까지 해야 스프링 빈 사용가능!!하지만 코드에서 보면 빈을 생성하는 과정에서 초기화(connect(); call("초기화 연결메세지");)를 진행하게됨 =>setter로 의존관계가 주입이 완료되지 않은시점에서 생성자에서 초기화를 진행해서 url이 없음 => 자동 의존관계가 주입된 시점을 알아야하 초기화를 진행 가능 그럼 언제 완료된지는 다음 강의의 콜백함수를 통해 알아보자
-
해결됨김영한의 실전 자바 - 중급 1편
섹션 7. 정적중첩클래스
제가 이해를 잘 못한 거 같아서 질문 드립니다!질문 1 : main에 NestedOuter outer = new NestedOuter();를 객체로 생성하면 내부에 있는 모든 것들이 생성되서 아래 올린 코드의 모든 것들이 저 객체 안에 생성되는 게 맞나요?outInstanceValue, Nested 클래스도 같이 포함되어서 생성되는 거 아닌가 해서요! 질문 2 : Nested는 static인데 객체를 생성할 수가 있나요? static이면 힙 영역이 아니라 메서드영역에 생성되어있는 거 아닌가요? 질문 3 : 질문 2에 이어서 든 생각으로 NestedOuter.Nested.print()로 바로 꺼내 쓸 수 있어야 된다고 생각했는데 왜 안 되는 건가요?ㅠㅠ public class NestedOuterMain { public static void main(String[] args) { NestedOuter outer = new NestedOuter(); NestedOuter.Nested nested = new NestedOuter.Nested(); nested.print(); System.out.println("nestedClass = " + nested.getClass()); } }public class NestedOuter { private static int outClassValue = 3; private int outInstanceValue = 2; static class Nested { private int nestedInstanceValue = 1; public void print() { // 자신의 멤버에 접근 가능 System.out.println("nestedInstanceValue = " + nestedInstanceValue); // 바깥 클래스의 인스턴스에 접근 불가 //System.out.println(outInstanceValue); // 바깥 클래스의 클래스 멤버에 접근 가능 System.out.println("outClassValue = " + outClassValue); } }
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자바 언어 없음
이런식으로 자바 언어가 없는데 어떻게 해야하나요
-
해결됨김영한의 실전 자바 - 중급 1편
Object 다형성 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. Object복습하다가 Parent와 child 클래스를 다형성 해보자 해서 만들었는데, 하다 보니까,원래 코드는 (이런식) 상속 관계 - Object - Parent - Childif (object instanceof Parent parent) { parent.parentMethod(); } else if (object instanceof Child child) { child.childMethod(); }else - if문에서 노란줄이 떠서이런식 으로 만들었는데 이런 식의 코드가 실무에서 있는지 갑자기 궁금해져서 질문을 남깁니다.답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 기본편
final 변수 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]객체 생성할 때 final을 붙여서 다른 참조값을 사용하지 못하게 했는데 실제로 이렇게 사용되는 예제가 어떤 게 있나요? 실제 적용 사례를 생각해보려 했는데 어떤 경우에 사용되는지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
springBoot가 실행이 안됩니다!..
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이렇게 뜨고 실행이 안됩니다.. 어떻게 해야 해결이 될까요?
-
해결됨김영한의 실전 자바 - 중급 1편
마지막 단에서 공통 처리할 때의 catch 부모 예외
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]5:50에서 공통 처리 catch를 최상위 예외인 Exception으로 잡았는데결국 해결할 수 없는 예외들은 언체크 예외들로 구성되어 있으니깐 RuntimeException으로 잡는게 낫지 않나요?다른 케이스가 있어서 그런건지 궁금해서 질문 남깁니다.