<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>moong's collage</title>
    <link>https://moongyuxx.tistory.com/</link>
    <description>빙글빙글 돌아가는 하루를 기록합니다.</description>
    <language>ko</language>
    <pubDate>Thu, 18 Jun 2026 03:22:09 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>뭉뭉규</managingEditor>
    <image>
      <title>moong's collage</title>
      <url>https://tistory1.daumcdn.net/tistory/7308647/attach/222f1b73906449ff94432d981a8814cf</url>
      <link>https://moongyuxx.tistory.com</link>
    </image>
    <item>
      <title>[정처기] 정보처기기사 25년 2회 필기 합격 후기 (벼락치기 공부방법)</title>
      <link>https://moongyuxx.tistory.com/5</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;25년 2회 정보처리기사 필기 시험을합격하고 나서, 누군가에게는 도움이 될까 싶어 후기를 남깁니다!&lt;br /&gt;아직 실기가 남았지만! 필기를 저처럼 벼락치기로 준비하는 분들 에게 딱 맞는 공부법일 수도 있어요 ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 제 배경을 소개하자면&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;전공:&lt;/b&gt; 인공지능 관련 학과라서&amp;nbsp; 컴퓨터는 조금 알지만 전공이라고 하기는 애매...&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정보처리기사 지식:&lt;/b&gt; 개념이 전부 초면이였어서&amp;nbsp;&lt;b&gt;노베이스&lt;/b&gt;라고 봐도 무방해요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;공부 기간:&lt;/b&gt; 일주일 (진짜 제대로 집중한 건 &lt;b&gt;3일&lt;/b&gt; 정도...)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제집 사용:&lt;/b&gt;&amp;nbsp; 사용 안 했습니다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;최종 점수:&lt;/b&gt; 평균 &lt;b&gt;80점&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BScOS/btsPgxUYFd0/BPV8HYnHwSzW1qwhE22Xb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BScOS/btsPgxUYFd0/BPV8HYnHwSzW1qwhE22Xb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BScOS/btsPgxUYFd0/BPV8HYnHwSzW1qwhE22Xb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBScOS%2FbtsPgxUYFd0%2FBPV8HYnHwSzW1qwhE22Xb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;316&quot; height=&quot;351&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부하면서 느낀 건 확실히 전공자한테 유리한 시험이긴 하겠지만, &lt;b&gt;필기는 전혀 상관없는 느낌&lt;/b&gt;이었어요.&lt;br /&gt;일단 기출을 왕창 돌리고 외우기만 하면 되는 느낌입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부방법은 정말 기출 돌리입니다. 인터넷에 떠도는 필기 요약본을 보려다가 포기했어요 ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 1회독 했다가는 기출 돌릴 시간이 없었기에...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기출을 푸시다가 안 외어지거나, 이건 암기해야겠다! 하는 부분이 있으면 찾아보는게 좋다고 생각합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;공부방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 &lt;b&gt;문제를 푸는 게 목적이 아니라, &amp;lsquo;답을 외우는&amp;rsquo; 게 목적&lt;/b&gt; 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 아예 개념을 모르기 때문에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1과목 당(20문제씩)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;1회독&lt;/b&gt;: 문제 읽고 &amp;rarr; 바로 해설 보고 &amp;rarr; 답을 암기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;2회독&lt;/b&gt;: &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;해설 안 보고 풀기 &amp;rarr; 틀린 문제&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;체&lt;/b&gt;크 -&amp;gt; &amp;nbsp;시험 전날 암기하기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1173&quot; data-start=&quot;1132&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 과목(20문제) 하나씩 2회독하고 &amp;rarr; 다음 과목으로 넘어가는 방식으로 공부했습니다.&lt;/p&gt;
&lt;p data-end=&quot;1269&quot; data-start=&quot;1175&quot; data-ke-size=&quot;size16&quot;&gt;저는 한 번에 100문제를 다 풀고 다시 2회독 하려고 하면, 앞에 푼 문제 기억이 안 나요ㅠㅠ&lt;br /&gt;그래서 &lt;b&gt;과목별 쪼개서 2회독&lt;/b&gt;했고, 이게 훨씬 효율적이였다고 생각합니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기출은 pdf로 다운받아서 2회독 때 틀린 문제를 시험 전날에 계속 다시 풀어보고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길 가면서, 시간날 때 CBT 사이트를 이용해서 폰으로 문제를 풀었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해설을 전부 암기하기하려는 생각보다는 그냥 이 문제의 답을 암기한다는 생각으로 기출을 빨리 돌리는게 좋다고 생각해요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 시간이 있다면 해설을 암기하는게 좋겠지만 , 시간이 없으신 경우 답 위주로 암기하고, 기출마다 계속 나오는 문제들은 해설을 암기하는게 현실적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 21년, 22년 기출은 전부 돌리고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;23년, 24년 기출은 시간이 부족해서 전부 돌리진 못했어요 &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그치만 여러분은 최신 연도부터 역순으로 돌리시길... !!&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;유용했던 사이트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시나공 홈페이지에서 기출 문제를 다운받을 수 있어요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.sinagong.co.kr/pds/001001001/past-exams&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.sinagong.co.kr/pds/001001001/past-exams&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1752348928660&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;시나공&quot; data-og-description=&quot;컴활, 정보처리, 워드프로세서 등 IT 자격증 전문. 해설 포함 CBT, 최신 기출 자료 무료, 실기 채점 프로그램 제공&quot; data-og-host=&quot;www.sinagong.co.kr&quot; data-og-source-url=&quot;https://www.sinagong.co.kr/pds/001001001/past-exams&quot; data-og-url=&quot;https://www.sinagong.co.kr&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Ct4Yn/hyZjcmiFBB/dXxTRD2yv0nuv9VyZEW9Ok/img.png?width=349&amp;amp;height=349&amp;amp;face=0_0_349_349,https://scrap.kakaocdn.net/dn/bXx9ZB/hyZjkLpQbe/yO6xdkurhQd3oJfNJHdeGk/img.png?width=349&amp;amp;height=349&amp;amp;face=0_0_349_349,https://scrap.kakaocdn.net/dn/z6F9P/hyZjwSJLZ4/kPv2TGRRl3BvZGxs78eJJ0/img.png?width=1504&amp;amp;height=588&amp;amp;face=0_0_1504_588&quot;&gt;&lt;a href=&quot;https://www.sinagong.co.kr/pds/001001001/past-exams&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.sinagong.co.kr/pds/001001001/past-exams&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Ct4Yn/hyZjcmiFBB/dXxTRD2yv0nuv9VyZEW9Ok/img.png?width=349&amp;amp;height=349&amp;amp;face=0_0_349_349,https://scrap.kakaocdn.net/dn/bXx9ZB/hyZjkLpQbe/yO6xdkurhQd3oJfNJHdeGk/img.png?width=349&amp;amp;height=349&amp;amp;face=0_0_349_349,https://scrap.kakaocdn.net/dn/z6F9P/hyZjwSJLZ4/kPv2TGRRl3BvZGxs78eJJ0/img.png?width=1504&amp;amp;height=588&amp;amp;face=0_0_1504_588');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;시나공&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;컴활, 정보처리, 워드프로세서 등 IT 자격증 전문. 해설 포함 CBT, 최신 기출 자료 무료, 실기 채점 프로그램 제공&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.sinagong.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CBT는 폰으로 보기 정말 좋습니다. 21년 이후부터 보세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.comcbt.com/xe/iz/5851061&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.comcbt.com/xe/iz/5851061&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1752348978316&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;정보처리기사 필기 기출문제 및 CBT 2022년 04월 24일(2회) - 정보처리기사 필기 기출문제 전자문제&quot; data-og-description=&quot;위 이미지를 클릭하시면 전자문제집 CBT 서버에 접속 됩니다. (해설, 모의고사, 오답노트, 워드, 컴활, 기능사 등 상설검정 CBT 프로그램 기능 포함) 전자문제집 CBT란? 인터넷으로 문제를 풀고 자동&quot; data-og-host=&quot;www.comcbt.com&quot; data-og-source-url=&quot;https://www.comcbt.com/xe/iz/5851061&quot; data-og-url=&quot;https://www.comcbt.com/xe/iz/5851061&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/JrnFM/hyZjga9LZy/WR1hUoclNemMPS3SC6z5a0/img.jpg?width=290&amp;amp;height=80&amp;amp;face=0_0_290_80&quot;&gt;&lt;a href=&quot;https://www.comcbt.com/xe/iz/5851061&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.comcbt.com/xe/iz/5851061&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/JrnFM/hyZjga9LZy/WR1hUoclNemMPS3SC6z5a0/img.jpg?width=290&amp;amp;height=80&amp;amp;face=0_0_290_80');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;정보처리기사 필기 기출문제 및 CBT 2022년 04월 24일(2회) - 정보처리기사 필기 기출문제 전자문제&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;위 이미지를 클릭하시면 전자문제집 CBT 서버에 접속 됩니다. (해설, 모의고사, 오답노트, 워드, 컴활, 기능사 등 상설검정 CBT 프로그램 기능 포함) 전자문제집 CBT란? 인터넷으로 문제를 풀고 자동&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.comcbt.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;정리&amp;nbsp;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;이론보다는&lt;/b&gt; &amp;rarr; &lt;b&gt;기출 위주로&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;틀린 문제는 캡처하고, &lt;b&gt;반복해서 다시 보기&lt;/b&gt;&lt;b&gt;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1320&quot; data-start=&quot;1291&quot;&gt;&lt;b&gt;1회독:&lt;/b&gt; 해설 보면서 빠르게 답 외우기&lt;/li&gt;
&lt;li data-end=&quot;1357&quot; data-start=&quot;1321&quot;&gt;&lt;b&gt;2회독:&lt;/b&gt; 문제 풀고 &amp;rarr; 틀린 문제 &lt;b&gt;캡처해서 저장&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1389&quot; data-start=&quot;1358&quot;&gt;&lt;b&gt;시험 전날:&lt;/b&gt; 캡처해둔 틀린 문제들만 집중 복습&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;최신 연도 기출부터!&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정처기 필기, 진짜 벼락치기로도 붙을 수 있습니다!!&lt;br /&gt;이제 실기를 봐야겠지만... 화이팅 하자구요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;궁금한 거 있으면 댓글 달아주세요~!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타 공부</category>
      <category>자격증</category>
      <category>정보처리기사</category>
      <category>정처기</category>
      <category>필기</category>
      <author>뭉뭉규</author>
      <guid isPermaLink="true">https://moongyuxx.tistory.com/5</guid>
      <comments>https://moongyuxx.tistory.com/5#entry5comment</comments>
      <pubDate>Sun, 13 Jul 2025 04:44:14 +0900</pubDate>
    </item>
    <item>
      <title>휴학을 하고 (중략) 학교로 복귀!</title>
      <link>https://moongyuxx.tistory.com/4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eeEH6S/btsO9cCOgOy/vaVTl8jUstJFFIsFy80Ngk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eeEH6S/btsO9cCOgOy/vaVTl8jUstJFFIsFy80Ngk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eeEH6S/btsO9cCOgOy/vaVTl8jUstJFFIsFy80Ngk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeeEH6S%2FbtsO9cCOgOy%2FvaVTl8jUstJFFIsFy80Ngk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;470&quot; height=&quot;228&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;후... 아무일도 없었다..^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 휴학을 했었고 (중략) 다시 학교로 돌아왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복귀까진 아니고 학연생을 하면서 복학 할지 말지 간을 보는중임(하기싫음)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;267&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCPb8D/btsO6y86PV6/dcgQUqmhCUzWgoS3JR7rKK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCPb8D/btsO6y86PV6/dcgQUqmhCUzWgoS3JR7rKK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCPb8D/btsO6y86PV6/dcgQUqmhCUzWgoS3JR7rKK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCPb8D%2FbtsO6y86PV6%2FdcgQUqmhCUzWgoS3JR7rKK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;402&quot; height=&quot;283&quot; data-origin-width=&quot;267&quot; data-origin-height=&quot;188&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;휴학을 하면서 인생을 어떻게 살아가야 할까 고민해보려 했는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각만 더 많아진 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 휴학하고 뭘 했냐 물어본다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 코드스쿼드 마스터즈&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 일본여행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 자격증 공부&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 학연생 ( ~ing..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기억에 남는 것들로만 적었다지만 생각보다 한게 없군..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 중간중간 국내 여행도 다녀왔다. 베스트 드라이버로 인정받은듯? (나에게)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무튼 이것들은 나중에 차차 블로그에 풀어보겠음!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 이렇게 불안한지 모르겠지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나영석pd의 20대에 인생이 불안하지 않다면 그게 비정상! 이라는 말을 믿고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;럭키 꼬순내나 맡아야지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_0204.jpg&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chf2Pi/btsO8nE55AJ/zWr81M8Oy7DpAiYSTI2Bw0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chf2Pi/btsO8nE55AJ/zWr81M8Oy7DpAiYSTI2Bw0/img.jpg&quot; data-alt=&quot;럭키 보고싶다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chf2Pi/btsO8nE55AJ/zWr81M8Oy7DpAiYSTI2Bw0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fchf2Pi%2FbtsO8nE55AJ%2FzWr81M8Oy7DpAiYSTI2Bw0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;564&quot; height=&quot;598&quot; data-filename=&quot;IMG_0204.jpg&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;럭키 보고싶다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>일상</category>
      <author>뭉뭉규</author>
      <guid isPermaLink="true">https://moongyuxx.tistory.com/4</guid>
      <comments>https://moongyuxx.tistory.com/4#entry4comment</comments>
      <pubDate>Mon, 7 Jul 2025 18:50:22 +0900</pubDate>
    </item>
    <item>
      <title>[Java 기초] HashMap 대신 왜 ConcurrentHashMap을 써야 할까?</title>
      <link>https://moongyuxx.tistory.com/3</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;`HashMap`은&amp;nbsp;자바에서&amp;nbsp;가장&amp;nbsp;많이&amp;nbsp;사용되는&amp;nbsp;자료구조&amp;nbsp;중&amp;nbsp;하나입니다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;하지만 단순히 데이터를 저장한다고 해서 항상 `HashMap`을 써도 되는 것은 아닙니다.&lt;br /&gt;&lt;br /&gt;만약 &lt;b&gt;여러 스레드가 동시에 접근할 가능성이 있는 상황&lt;/b&gt;이라면,&amp;nbsp;&amp;nbsp;&lt;br /&gt;`HashMap`&amp;nbsp;대신&amp;nbsp;반드시&amp;nbsp;&lt;b&gt;`ConcurrentHashMap`&lt;/b&gt;을&amp;nbsp;사용해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 ConcurrentHashMap이 필요한 이유, 그리고 HashMap과의 차이점을 정리해보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;HashMap은 멀티스레드 환경에서 위험하다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;HashMap&lt;/span&gt;은 기본적으로 &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;스레드 안전하지 않은&lt;/b&gt; 컬렉션&lt;/span&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 여러 스레드가 동시에 put(), get(), remove() 같은 작업을 하면 내부 데이터 구조가 꼬일 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 다음과 같은 코드가 있다고 가정해봅시다:&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;Map&amp;lt;String, Integer&amp;gt; countMap = new HashMap&amp;lt;&amp;gt;();

// 스레드 A
countMap.put(&quot;user1&quot;, 1);

// 스레드 B
countMap.put(&quot;user1&quot;, 2);
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 동시 접근 상황에서 HashMap은 비정상 동작을 하거나, 심지어 무한 루프에 빠져 애플리케이션이 멈추는 경우도 발생할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;ConcurrentHashMap은 동시성 문제를 해결해준다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면, &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;ConcurrentHashMap&lt;/span&gt;은 이름 그대로 &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;동시 접근(Concurrency)&lt;/b&gt; 상황에서도 안전&lt;/span&gt;하게 동작하도록 설계된 Map입니다.&lt;/p&gt;
&lt;p data-end=&quot;1138&quot; data-start=&quot;975&quot; data-ke-size=&quot;size16&quot;&gt;Collections.synchronizedMap()과 같은 방법도 존재하지만,&lt;br /&gt;이 방식은 Map 전체에 synchronized 키워드를 걸기 때문에 &lt;b&gt;항상 한 번에 하나의 스레드만 접근할 수 있습니다.&lt;/b&gt;&lt;br /&gt;즉, &lt;b&gt;병렬 처리가 불가능하고 성능 저하가 발생할 수 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1138&quot; data-start=&quot;975&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1235&quot; data-start=&quot;1140&quot; data-ke-size=&quot;size16&quot;&gt;반면 ConcurrentHashMap은 내부적으로 키를 기준으로 데이터를 분산 저장하고,&lt;br /&gt;&lt;b&gt;필요한 영역에만 잠금을 걸기 때문에 병목이 적고 성능이 뛰어납니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;1235&quot; data-start=&quot;1140&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1398&quot; data-start=&quot;1237&quot; data-ke-size=&quot;size16&quot;&gt;Java 8 이전에는 내부적으로 Segment라는 구조를 사용하여 분할 락(Lock Striping)을 구현했지만,&lt;br /&gt;Java 8부터는 &lt;b&gt;세그먼트 없이도 CAS(Compare-And-Swap)와 synchronized 블록을 조합 (&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: start;&quot;&gt;각 테이블 버킷을 독립적으로 잠그는 방식)&lt;/span&gt;&lt;/b&gt;하여&lt;br /&gt;더 정교하게 병렬 처리를 수행합니다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;Map&amp;lt;String, Integer&amp;gt; countMap = new ConcurrentHashMap&amp;lt;&amp;gt;();

// 스레드 A
countMap.put(&quot;user1&quot;, 1);

// 스레드 B
countMap.put(&quot;user1&quot;, 2);

// 스레드 C
Integer value = countMap.get(&quot;user1&quot;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 여러 스레드가 동시에 접근해도 문제 없이 안전하게 작동합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;언제 ConcurrentHashMap을 써야 할까?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전역 저장소에 데이터를 저장할 때&lt;/li&gt;
&lt;li&gt;웹 서버에서 요청 처리 시, 여러 사용자의 세션을 Map에 저장할 때&lt;/li&gt;
&lt;li&gt;캐시(Cache)나 공유 상태를 저장하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 사용자의 데이터를 저장하거나 관리하는 &lt;b&gt;공용 저장소를 직접 구현&lt;/b&gt;할 때는,&lt;br /&gt;동시에 여러 스레드가 접근할 수 있으므로 HashMap 대신 ConcurrentHashMap을 사용해야 합니다.&lt;/p&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;private static Map&amp;lt;Long, Member&amp;gt; memberStore = new ConcurrentHashMap&amp;lt;&amp;gt;();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 스레드에서 동시에 이 저장소에 접근할 수 있고,&lt;br /&gt;싱글톤처럼 한 저장소를 공유할 의도라면 반드시 static이어야 합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;동시에 접근할 수 있는 상황 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;이라면 ConcurrentHashMap을&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 데이터를 저장한다고 무조건 HashMap을 써서는 안 됩니다.&lt;br /&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;동시에 접근할 수 있는 상황&lt;/b&gt;&lt;/span&gt;이라면 (특히, 실무에서는)&amp;nbsp; &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b&gt;ConcurrentHashMap&lt;/b&gt;&lt;/span&gt;을 써야 합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단일 스레드 &amp;rarr; HashMap&lt;br /&gt;멀티 스레드 &amp;rarr; ConcurrentHashMap&lt;/p&gt;
&lt;/blockquote&gt;</description>
      <category>Java</category>
      <category>ConcurrentHashMap</category>
      <category>HashMap</category>
      <category>동시성</category>
      <category>멀티스레드</category>
      <author>뭉뭉규</author>
      <guid isPermaLink="true">https://moongyuxx.tistory.com/3</guid>
      <comments>https://moongyuxx.tistory.com/3#entry3comment</comments>
      <pubDate>Mon, 7 Jul 2025 18:26:58 +0900</pubDate>
    </item>
    <item>
      <title>[Java 기초] 인터페이스란 무엇인가? 왜 구현 클래스가 필요할까</title>
      <link>https://moongyuxx.tistory.com/2</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Java를 배우다 보면 &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;interface&lt;/span&gt;라는 키워드를 자주 보게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 인터페이스를 처음 접하면 이런 생각이 들 수 있다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&quot;이거 클래스랑 뭐가 다르지?&quot;&lt;br /&gt;&quot;왜 굳이 인터페이스를 쓰는 거지?&quot;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 인터페이스의 개념과 역할, 그리고 구현체(구현 클래스)가 왜 필요한지를 쉽게 정리한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;인터페이스란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터페이스는 흔히 &quot;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;설계도&lt;/span&gt;&quot;에 비유된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;어떤 기능을 제공해야 하는지 이름만 정의&lt;/b&gt;해둔 것으로 실제 동작은 아무것도 구현하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 아래 코드를 보면&lt;/p&gt;
&lt;pre id=&quot;code_1746363080449&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public interface MemberRepository {
    void save(Member member);
    Member findById(Long memberId);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;save()&lt;/span&gt; 와 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;findById()&lt;/span&gt; 라는 메서드가 필요하다는 &lt;b&gt;규칙만 정의&lt;/b&gt;되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떻게 저장할지는 아직 결정하지 않는다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;구현 클래스가 필요한 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터페이스는 말 그대로 &quot;규칙&quot;만 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인터페이스만으로는 객체를 만들 수 없고, 실행할 수도 없다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 반드시 인터페이스를 구현한 &lt;b&gt;구현체(구현 클래스)&lt;/b&gt;가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 위 인터페이스의 구현체는 아래와 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1746363288136&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class MemoryMemberRepository implements MemberRepository {
    private Map&amp;lt;Long, Member&amp;gt; store = new HashMap&amp;lt;&amp;gt;();

    @Override
    public void save(Member member) {
        store.put(member.getId(), member);
    }

    @Override
    public Member findById(Long memberId) {
        return store.get(memberId);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 클래스는 MemberRepository를 implements해서 기능을 직접 구현 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 실제로 사용할 수 있는 객체가 된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;인터페이스 + 구현체 구조의 장점&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 유연한 코드 구조&lt;/h4&gt;
&lt;pre id=&quot;code_1746363390677&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MemberRepository repository = new MemoryMemberRepository();&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나중에 DbMemberRepository로 교체해도 인터페이스만 맞으면 상관없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1746363432920&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MemberRepository repository = new DbMemberRepository();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 구현체만 바꿔도 전체 코드를 고치지 않아도 되고, 이는 OCP(개방-폐쇄 원칙)를 자연스럽게 만족하게 해 준다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 테스트가 쉬워짐&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테스트할 땐 MemoryMemberRepository를 사용하고,&lt;/li&gt;
&lt;li&gt;실제 배포에선 DbMemberRepository 사용할 수 있다.&lt;/li&gt;
&lt;li&gt;코드 변경 없이 주입만 바꿔주면 가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. OCP(개방-폐쇄 원칙) 만족&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&quot;기능을 추가하되, 기존 코드는 건드리지 말 것&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Spring 에서도 인터페이스 구조는 핵심&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Spring에서는 대부분의 서비스와 저장소가 인터페이스 + 구현체 구조로 구성되어 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Spring이 DI(의존성 주입)를 통해 구현체를 인터페이스에 넣어주는 방식이기 때문에,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;인터페이스는 테스트 용이성 + 유지보수성 측면에서 큰 장점을 제공한다.&lt;/p&gt;</description>
      <category>Java</category>
      <category>Implements</category>
      <category>Interface</category>
      <category>Java</category>
      <category>구현체</category>
      <category>의존성 주입</category>
      <category>인터페이스</category>
      <author>뭉뭉규</author>
      <guid isPermaLink="true">https://moongyuxx.tistory.com/2</guid>
      <comments>https://moongyuxx.tistory.com/2#entry2comment</comments>
      <pubDate>Sun, 4 May 2025 22:09:47 +0900</pubDate>
    </item>
    <item>
      <title>[Java 기초] 생성자란? this 키워드는 왜 필요할까?</title>
      <link>https://moongyuxx.tistory.com/1</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Java 에서 클래스를 만들다 보면 자연스럽게 만나게 되는 문법이 바로 &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;생성자&lt;/span&gt;와 &lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;this&lt;/span&gt; 키워드이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 아래 코드가 있다고 하자.&lt;/p&gt;
&lt;pre id=&quot;code_1746361278510&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Member {
    private Long id;
    private String name;
    private Grade grade;
	
    //생성자 정의
    public Member(Long id, String name, Grade grade) {
        this.id = id;
        this.name = name;
        this.grade = grade;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;생성자란 무엇인가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자는&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt; 객체를 만들 때 초기값을 설정해주는 메서드&lt;/span&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java에서 객체를 만들 때는 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;new&lt;/span&gt; 키워드를 사용한다.&lt;/p&gt;
&lt;pre id=&quot;code_1746361480437&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Member member = new Member(1L, &quot;Moong&quot;, Grade.VIP);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;Member&lt;/span&gt; 클래스의 생성자가 자동으로 호출되며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체 내부의 필드(&lt;span style=&quot;background-color: #dddddd;&quot;&gt;id&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;name&lt;/span&gt;, &lt;span style=&quot;background-color: #dddddd;&quot;&gt;grade&lt;/span&gt;)에 우리가 전달한 값이 들어가게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 생성자는 객체가 만들어질 때 필드에 값을 넣어주는 메서드라고 보면 된다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;생성자를&amp;nbsp; 왜 쓸까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java는 생성자를 생략하면 기본 생성자를 자동으로 만들어준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 &lt;b&gt;객체를 만들 때 값을 반드시 넣도록 강제&lt;/b&gt;하고 싶을 땐, 아예 생성자에 매개변수를 넣는 방식이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;this 키워드는 왜 쓸까?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자 안을 보면 아래처럼 this.id = id; 와 같은 코드가 반복된다.&lt;/p&gt;
&lt;pre id=&quot;code_1746361703437&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public Member(Long id, String name, Grade grade) {
    this.id = id;
    this.name = name;
    this.grade = grade;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;this는 현재 객체 자기 자신을 가르키는 키워드로, 주로 필드와 매개변수 이름이 같을 때 구분용으로 사용한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;왜 이렇게 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;this.&lt;/span&gt; 를 붙일까?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java에서는 &lt;b&gt;변수 이름이 같을 때 우선순위&lt;/b&gt;가 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성자 안의 id는 &lt;b&gt;매개변수&lt;/b&gt;를 의미한다.&lt;/li&gt;
&lt;li&gt;그래서 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;id = id;&lt;/span&gt; 라고 쓰면 &lt;b&gt;자기 자신한테 복사&lt;/b&gt;하는 셈이 되어 아무 의미가 없다. (둘 다 매개변수 id를 가르킨다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 오른쪽 id(매개변수)를 왼쪽 필드 &lt;span style=&quot;background-color: #dddddd;&quot;&gt;this.id&lt;/span&gt;에 넣기 위해 this를 붙여줘야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1746361986870&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;this.id = id; // 오른쪽 id(매개변수)를 왼쪽 필드 this.id에 넣음&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;this.id&lt;/span&gt; 는 현재 객체의 필드&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;id&lt;/span&gt;는 생성자의 매개변수&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 해야 비로소 필드에 값이 제대로 들어가게 된다.&lt;/p&gt;</description>
      <category>Java</category>
      <category>Java</category>
      <category>this</category>
      <category>생성자</category>
      <author>뭉뭉규</author>
      <guid isPermaLink="true">https://moongyuxx.tistory.com/1</guid>
      <comments>https://moongyuxx.tistory.com/1#entry1comment</comments>
      <pubDate>Sun, 4 May 2025 21:36:39 +0900</pubDate>
    </item>
  </channel>
</rss>