해결된 질문
작성
·
162
·
수정됨
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
안녕하세요. 궁금증이 생겨 질문을 남깁니다.
노드와 연결1 노드를 배우면서 스트링 빌더의 append메서드가 생각이 났습니다.
그래서 중급1편에 배운 append메서드에 대해서 찾아보고 작동 방법에 대해서 찾아보고 자기 자신을 참조해서 스트링 빌더가 돌아가는것을 확인을 할수가 있었습니다.
이런 것 을 보고 노드가 '스트링 빌더 에서 파생된 작품?(응용) 아닌가' 라는 생각이 듭니다. 그래서 여기서 질문이
첫 번째
노드가, 스트링 빌더나, 메서드 체인닝 기법에서 파생된 작품인가요?
두 번째
스트링 빌더의 apeend의 this와, node의 new의 차이점이라고 할까요? 이런 것이 어떻게 다른지 비교해서 가르켜 주시면 안될까요?
뭔가 대조 되는 게 있는 것 같아서, 혹 이 두가지 가 대조가 가능하다면 대조 설명을 해주시면 감사하겠습니다.
추가1
다음 강의 에서 toString할때 스트링 빌더 및 append메서드가 나와서.. 좀 당황스럽기는 한데. 이거 때문에. 생각 난 것은 아닙니다.
중급1편에서 스트링 빌더를 공부할 때
sb.append(내용).append(내용).append(내용);
first.next.next = new Node("C");
이거랑 비슷해서 생각이 난거 입니다. 그래서 중급1편의 코딩 내용들을 뒤져본거고, pdf도 뒤져봤습니다.
증거 사진 이요..
답변 부탁 드립니다.
답변 2
1
질문과는 별개의 내용입니다.
이전 강의에서 나온 배열은
기본 배열과 List배열입니다.
두 배열은 같은 특징을 갖고있지만 List 배열은 기본 배열의 단점을 해결하고자 나온 대안책이라고 느껴집니다.
이번 강의에서는 대안책으로 나온 List배열에서 조차 또다른 문제점을 갖고 있는데 이 문제를 해결하고자 새로운 배열을 제시한거 같습니다.
그리고 새로운 배열에서 사용하는 방식을 "노드"라는 개념을 통해 설명하시는거 같습니다.
즉, 노드는 그저 새로운 배열을 배우기 위한 선행 개념 같은 느낌으로 이해하면 될거같습니다.
그리고
질문 주신 내용에 대해서 답변드리자면,
[String 클래스] 에서 제시하는
자바의 "문자열"을 다루는 방법을 학습하는 내용과는 현 챕터는 완전 별개의 내용입니다.
또한 같은 강의 챕터에서 나왔지만 StringBuilder와 MethodChaining은 서로 상관 없는 내용입니다.
StringBuilder는 기존 String클래스의 단점을 보안하기 위해 나온 새로운 대안책이며, MethodChaining은 String과는 별개로 가독성을 증가시키기 위한 코드 작성 기법의 느낌입니다.
MethodChaining이 어떻게 이뤄지는지 이해하시면, 자연스럽게 Node와 StringBuilder가 어떻게 다른지 이해하실겁니다.
간단하게 설명하겠습니다.
핵심은 메서드에 있습니다. 메서드는 결과로 원하는 값을 리턴할 수 있습니다.
리턴이 없으면 void를 명시하고 리턴이 있으면 "타입"을 명시합니다.
append라는 메서드를 사용하면 String 타입의 객체를 리턴합니다.
여기서 메서드 체이닝 기법을 사용하여, 어차피 리턴되는 객체도 String타입이기 때문에 append를 사용할 수 있으니
그냥 append().append().append(). 이렇게 코딩하는 방법을 사용한거 뿐입니다.
node의 경우도 동일합니다. 단지 메서드를 사용하는게 아닌 필드값을 비슷한 코딩 방식으로 적어놓은거 뿐입니다.
" . " 이 기호는 포함 관계를 나타냅니다.
first.next는 first가 갖고있는 next 필드값을 나타냅니다.
메서드도 동일하게 사용가능합니다.
StringBuilder sb 라는 인스턴스가 있다고 합시다.
sb.append()는 sb라는 객체가 갖고있는 append() 메서드를 말합니다.
1
안녕하세요. 생각하는자님, 공식 서포터즈 David입니다.
노드는 자기 자신이 아닌 내부에 노드 필드(next)를 두고 이에 접근하여 다음 노드와 현재 노드를 연결하고 있습니다. 말씀하신 것들과는 무관하다 생각합니다.
append는 this를 반환함으로 동일한 StringBuilder를 반환하게 되고, Node의 next의 경우 현재 노드가 갖는 다음 노드를 반환하게 됩니다. 동일한 객체냐 아니냐 정도의 차이가 있다고 볼 수 있습니다.
아래 글도 참고하시면 좋을 것 같습니다:)
https://en.wikipedia.org/wiki/Method_chaining#cite_note-1
감사합니다.
David님 알켜 주시고, 가르쳐 주셔서 감사합니다.