혼자서 새벽에 공부하다가 <div>다른분의 블로그 포스팅 보면서 그 포스팅이 잘못 기재한 것 같아서 질문 드립니다. </div> <div><br></div> <div>포스팅에서는 두 경우 모두 call by value라고 적혀 있습니다. </div> <div>하지만, 제 생각에는 첫번째 경우에는 p라는 reference는 전달되었지만, name이 갖고있는 value가 바뀌어서 (value가 바뀐 것이 맞다고 생각합니다.) </div> <div>두번째는 p레퍼런스를 보냈지만, p의 기존 레퍼런스를 끊어서 새로운 레퍼런스와 연결했기 때문에 </div> <div>블럭단위의 CallByValue의 내부에 있는 p와 연결이 끊어진 것이 아닌가 합니다. 그래서 두번째 경우는 CallByVaule의 내부의 p는 'wonwoo'를 </div> <div>프린트할 수밖에 없다고 생각합니다.</div> <div><br></div> <div><br></div> <div>블럭단위의 언어환경에서는 즉 Clss CallByValue의 내부의 p는 <span class="hljs-keyword" style="color:#a71d5d;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">new</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> Person(</span><span class="hljs-string" style="color:#df5000;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">"wonwoo"</span><span class="hljs-string" style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><font color="#333333">)만 바라보고 있는 것</font></span></div> <div><span class="hljs-string" style="font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><font color="#333333">그래서 두번째 경우는 연결이 끊어져서 </font></span><span style="font-size:9pt;">Clss CallByValue의 내부의 p는 어쩔 수 없이 wonwoo를 바라봐야하는 것이 아닌가요?</span></div> <div><span style="font-size:9pt;">그럼 이제 새로 바뀐 kevein 의 p는 어디서 찾아볼 수 있을까요?</span></div> <div><span style="font-size:9pt;"><br></span></div> <div><span style="font-size:9pt;"><br></span></div> <div><br></div> <div>/* 첫<span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">번째 경우</span><span style="font-size:9pt;">call by value */</span></div> <div><span class="hljs-keyword" style="color:#a71d5d;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">public</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> </span><span class="hljs-class" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;">class</span> <span class="hljs-title" style="color:#795da3;">CallByValue</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ </span></div> <div><span class="hljs-function" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;"><span style="white-space:pre;"> </span>public</span> <span class="hljs-keyword" style="color:#a71d5d;">static</span> <span class="hljs-keyword" style="color:#a71d5d;">void</span> <span class="hljs-title" style="color:#795da3;">main</span><span class="hljs-params">(String[] args)</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>Person p = </span><span class="hljs-keyword" style="color:#a71d5d;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">new</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> Person(</span><span class="hljs-string" style="color:#df5000;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">"wonwoo"</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">); </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>System.out.println(</span><span class="hljs-string" style="color:#df5000;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">"p.name: "</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> + p.name); </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>callByValue(p); </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>System.out.println(</span><span class="hljs-string" style="color:#df5000;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">"p.name: "</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> + p.name); </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>} </span></div> <div><span class="hljs-function" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;"><span style="white-space:pre;"> </span>public</span> <span class="hljs-keyword" style="color:#a71d5d;">static</span> <span class="hljs-keyword" style="color:#a71d5d;">void</span> <span class="hljs-title" style="color:#795da3;">callByValue</span><span class="hljs-params">(Person p)</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ <b> </b></span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><b><span style="white-space:pre;"> </span>p.name = </b></span><span class="hljs-string" style="color:#df5000;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><b>"kevin"</b></span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><b>;</b> </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>} </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">} </span></div> <div><span class="hljs-class" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;">class</span> <span class="hljs-title" style="color:#795da3;">Person</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>String name; </span></div> <div><span class="hljs-function" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;"><span style="white-space:pre;"> </span>public</span> <span class="hljs-title" style="color:#795da3;">Person</span><span class="hljs-params">(String name)</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ </span><span class="hljs-keyword" style="color:#a71d5d;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">this</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">.name = name; } </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">}</span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><br></span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><br></span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">/*두번째 경우 call by value */</span></div> <div><div><span class="hljs-keyword" style="color:#a71d5d;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">public</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> </span><span class="hljs-class" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;">class</span> <span class="hljs-title" style="color:#795da3;">CallByValue</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ </span></div> <div><span class="hljs-function" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;"><span style="white-space:pre;"> </span>public</span> <span class="hljs-keyword" style="color:#a71d5d;">static</span> <span class="hljs-keyword" style="color:#a71d5d;">void</span> <span class="hljs-title" style="color:#795da3;">main</span><span class="hljs-params">(String[] args)</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>Person p = </span><span class="hljs-keyword" style="color:#a71d5d;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">new</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> Person(</span><span class="hljs-string" style="color:#df5000;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">"wonwoo"</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">); </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>System.out.println(</span><span class="hljs-string" style="color:#df5000;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">"p.name: "</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> + p.name); </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>callByValue(p); </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>System.out.println(</span><span class="hljs-string" style="color:#df5000;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">"p.name: "</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> + p.name); </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>} </span></div> <div><span class="hljs-function" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;"><span style="white-space:pre;"> </span>public</span> <span class="hljs-keyword" style="color:#a71d5d;">static</span> <span class="hljs-keyword" style="color:#a71d5d;">void</span> <span class="hljs-title" style="color:#795da3;">callByValue</span><span class="hljs-params">(Person p)</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ <b> </b></span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><b><span style="white-space:pre;"> </span></b></span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><b>p = </b></span><b style="font-size:9pt;"><span class="hljs-keyword" style="color:#a71d5d;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">new</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"> Person(</span><span class="hljs-string" style="color:#df5000;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">"kevin"</span></b><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><b>);</b></span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>} </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">} </span></div> <div><span class="hljs-class" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;">class</span> <span class="hljs-title" style="color:#795da3;">Person</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span style="white-space:pre;"> </span>String name; </span></div> <div><span class="hljs-function" style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;"><span class="hljs-keyword" style="color:#a71d5d;"><span style="white-space:pre;"> </span>public</span> <span class="hljs-title" style="color:#795da3;">Person</span><span class="hljs-params">(String name)</span> </span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">{ </span><span class="hljs-keyword" style="color:#a71d5d;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">this</span><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">.name = name; } </span></div> <div><span style="color:#333333;font-family:Menlo, Monaco, Consolas, 'Courier New', monospace;font-size:13px;white-space:pre-wrap;">}</span></div></div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.