<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발 공부</title>
    <link>https://it-story1.tistory.com/</link>
    <description>it-story1 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Fri, 24 Jul 2026 17:27:15 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>gravity251</managingEditor>
    <item>
      <title>멀티캠퍼스 자바 풀스택 개발자 과정 수료 후기</title>
      <link>https://it-story1.tistory.com/24</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;멀티캠퍼스 - [현대이지웰] 자바 풀스택 개발자 과정 6회차를 수료하며&lt;/h3&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;생각보다 6개월은 금방 흘러갔고,&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;기초적인 html, css로 시작해서 Java, Spring boot, Oracle DB, React 등을 배웠다.&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;&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;아주 방금 들은 내용이라고 하더라도 직접 써보지 않으면 며칠 뒤, 몇 주 뒤에는 정말 생각이 나지 않는다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;노트.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9fTzW/dJMcagKVC7q/RLvnk8po7jYrpkoEVg42S1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9fTzW/dJMcagKVC7q/RLvnk8po7jYrpkoEVg42S1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9fTzW/dJMcagKVC7q/RLvnk8po7jYrpkoEVg42S1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9fTzW%2FdJMcagKVC7q%2FRLvnk8po7jYrpkoEVg42S1%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;1280&quot; height=&quot;720&quot; data-filename=&quot;노트.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&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;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;팀프로젝트&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;접근성 중심의 중개형 쇼핑몰&quot; 이라는 주제를 잡고 5명의 팀프로젝트를 수행하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;442&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p69Hj/dJMcaa4Z8wf/MHCzFb7T3lSXNslUvf14fK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p69Hj/dJMcaa4Z8wf/MHCzFb7T3lSXNslUvf14fK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p69Hj/dJMcaa4Z8wf/MHCzFb7T3lSXNslUvf14fK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp69Hj%2FdJMcaa4Z8wf%2FMHCzFb7T3lSXNslUvf14fK%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;687&quot; height=&quot;329&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;442&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oAKv0/dJMcaaDV1z0/7ewJ1ImfpQymxIA520q1n1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oAKv0/dJMcaaDV1z0/7ewJ1ImfpQymxIA520q1n1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oAKv0/dJMcaaDV1z0/7ewJ1ImfpQymxIA520q1n1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoAKv0%2FdJMcaaDV1z0%2F7ewJ1ImfpQymxIA520q1n1%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;670&quot; height=&quot;375&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;427&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;1062&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvt7N9/dJMcacuZewG/gDMCvsNlchnmCHyEqAEaLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvt7N9/dJMcacuZewG/gDMCvsNlchnmCHyEqAEaLK/img.png&quot; data-alt=&quot;와이어프레임&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvt7N9/dJMcacuZewG/gDMCvsNlchnmCHyEqAEaLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvt7N9%2FdJMcacuZewG%2FgDMCvsNlchnmCHyEqAEaLK%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;1062&quot; height=&quot;660&quot; data-origin-width=&quot;1062&quot; data-origin-height=&quot;660&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;내가 담당한 것은 db 스키마 초기 설계, 와이어프레임 설계, 회원 / 접근성 기능 설계 정도가 있다.&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;접근성 쪽으로는 기존의 웹 사이트를 보고 연구하기도 했고, WCAG(웹 콘텐츠 접근성 지침)을 참고하거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'UI/UX 사용자를 생각하게 하지마!' 그리고, '웹 접근성 바이블'이라는 두 권의 책을 읽고 적용해보기도 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J9CWI/dJMcaaKHEAo/CAsPgRBiBMGSsKDMAFse11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J9CWI/dJMcaaKHEAo/CAsPgRBiBMGSsKDMAFse11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J9CWI/dJMcaaKHEAo/CAsPgRBiBMGSsKDMAFse11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ9CWI%2FdJMcaaKHEAo%2FCAsPgRBiBMGSsKDMAFse11%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;918&quot; height=&quot;459&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;/li&gt;
&lt;li&gt;기본대비&lt;/li&gt;
&lt;li&gt;스마트 대비&lt;/li&gt;
&lt;li&gt;링크 강조&lt;/li&gt;
&lt;li&gt;글자 크기&lt;/li&gt;
&lt;li&gt;자간간격&lt;/li&gt;
&lt;li&gt;커서 강조&lt;/li&gt;
&lt;li&gt;텍스트 정렬&lt;/li&gt;
&lt;li&gt;행 높이&lt;/li&gt;
&lt;/ul&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. local Storage를 활용해 비로그인 사용자가 창을 껐다 켜도 편리하게 적용될 수 있도록 화면 하단에 플로팅 된 버튼을 클릭하면 언제든지 조정할 수 있게끔 하였고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 추가로 로그인한 회원에 한해서 접근성 프로필을 따로 세팅하여 db에 저장하여 저장하기/불러오기 기능을 쓸 수 있도록 하였다.&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;445&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5jb5Z/dJMcagc5ImR/ImT9dLK3C8up1w1CoSIvok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5jb5Z/dJMcagc5ImR/ImT9dLK3C8up1w1CoSIvok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5jb5Z/dJMcagc5ImR/ImT9dLK3C8up1w1CoSIvok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5jb5Z%2FdJMcagc5ImR%2FImT9dLK3C8up1w1CoSIvok%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;921&quot; height=&quot;445&quot; data-origin-width=&quot;921&quot; data-origin-height=&quot;445&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;473&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cszEXj/dJMcagjQA1j/NUXisVxToTfvqOkGAjfTHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cszEXj/dJMcagjQA1j/NUXisVxToTfvqOkGAjfTHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cszEXj/dJMcagjQA1j/NUXisVxToTfvqOkGAjfTHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcszEXj%2FdJMcagjQA1j%2FNUXisVxToTfvqOkGAjfTHK%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;797&quot; height=&quot;415&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;473&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;&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;또 좋았던 점은 기술 교육 말고도 실제 취업과 실무를 고려한 다양한 특강이 함께 제공되었다는 점이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이력서와 포트폴리오 작성, 개발자 취업 트렌드, 기업의 개발 문화, msa(마이크로서비스 아키텍처) 등등 실무 중심 특강이 너무 만족스러웠다.&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택</category>
      <category>#부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/24</guid>
      <comments>https://it-story1.tistory.com/24#entry24comment</comments>
      <pubDate>Wed, 31 Dec 2025 10:04:28 +0900</pubDate>
    </item>
    <item>
      <title>Java 기초(11) - 예외처리</title>
      <link>https://it-story1.tistory.com/23</link>
      <description>&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에러(Error)란 자바 프로그램 실행 시 의도하지 않게 발생하는 문제점을 말한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;크게 두 가지로 나뉘는데, &amp;rarr; &lt;b&gt;에러(error)와 예외(exception)&lt;/b&gt;&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;&lt;b&gt;에러&lt;/b&gt; : 실행 시 중요 기능 수행을 불가능하게 할 수 있는 큰 문제, 프로그래머가 해결할 수 없다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;예외(버그)&lt;/b&gt; : 에러보다 상대적으로 작은 문제. 프로그래머가 &lt;b&gt;해결할 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;예외 처리&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예외 처리의 &lt;b&gt;목적&lt;/b&gt; : 예외 발생 시 &lt;b&gt;비정상 종료되는 것을 막고&lt;/b&gt; &lt;b&gt;예외와 관련 없는 기능은 정상 작동&lt;/b&gt;하도록 처리하는 작업&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;빠르게 디버깅할 수도 있다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예외 처리 &lt;b&gt;방법&lt;/b&gt; :&amp;nbsp;&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;프로그램 실행 시 발생하는 예외들을 각각의 Exception 클래스로 제공한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;해당 예외가 발생하면 JVM이 해당 예외에 대한 클래스 객체를 만들어서 프로그램으로 전달&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로그래머는 해당 예외 객체를 받아서 예외 처리&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예외 클래스들의&amp;nbsp;&amp;nbsp;계층 구조&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1236&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BwZuS/dJMcaiIHlj2/bO8REtJgKiHNq4rGvjaDsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BwZuS/dJMcaiIHlj2/bO8REtJgKiHNq4rGvjaDsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BwZuS/dJMcaiIHlj2/bO8REtJgKiHNq4rGvjaDsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBwZuS%2FdJMcaiIHlj2%2FbO8REtJgKiHNq4rGvjaDsk%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;783&quot; height=&quot;580&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1236&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;color: #000000;&quot;&gt;Exception 이 예외 클래스의 최상위 클래스&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Exception 클래스 객체 생성 시&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생성자&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;Exception() : 예외 메세지 없이 객체를 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Exception(String message) : 예외 생성시 예외 메시지를 예외 객체에 전달&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Exception(String message, Throwable casue) : 예외 생성시 메시지와 원인을 예외 객체에 전달&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;메서드&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;public String getMessage() : 예외 발생 시 전달된 메시지를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public Throwable getCasue() : 예외 발생 시 전달된 예외 원인을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public void printStackTrace() : 예외 발생 시 예외 발생 이력(backgrace)을 출력, 주로 개발 시 디버깅용으로 사용&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 예외 종류&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴파일러 검사 유무에 따른 예외 종류&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 일반 예외(checked Exception) &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: 코드 작성 시 반드시 예외 처리해주어야 한다.&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;&amp;nbsp;ClassNotFoundException : 객체 생성 시 해당 클래스가 존재하지 않으면 발생&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;InterruptedException : 스레드 실행 중 발생하는 예외&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;IOException : 자바 입출력 작업 도중 발생하는 예외&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;FileNotFoundException : 입출력 작업 시 해당 파일이 존재하지 않을 때 발생하는 예외&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SQLException&amp;nbsp; : 데이터베이스 연동 작업 시 발생하는 예외&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;color: #000000;&quot;&gt;2. 실행 예외(Unchecked/RuntimeException) &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: 예외 처리 생략 가능(JVM이 자동으로),&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;java.lang.RuntimeException 클래스를 상속 받는 예외 클래스&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;ArrayIndexOutOfBoundsException : 배열 선언 시 생성된 요소보다 큰 요소에 접근 시 발생&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ArithmeticException : 수치 타입 데이터를 0으로 나눌 때 발생하는 예외&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;NullPointerException : 변경하려는 문자열이 수치형 데이터 형태가 아닐 때 발생하는 예외&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ClassCastException : 인스턴스와 다른 종류의 클래스로 캐스팅 시 발생하는 예외&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 예외 처리 방법&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;try-catch &lt;/b&gt;문으로 예외 처리&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;try {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//예외 발생 코드 (1) &amp;rarr; JVM (2)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} catch(예외클래스 변수) { &amp;larr; (3)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;//예외 처리 코드(4)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;//예외와 관련없는 코드(5)&lt;/span&gt;&lt;/blockquote&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예외가 발생하는 JVM에게 예외를 던진다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JVM은 발생한 예외를 분석한 후, 해당하는 예외 객체(인스턴스)를 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JVM은 생성한 예외 객체를 예외가 발생한 곳으로 돌려준다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JVM이 던진 예외를 catch문에서 받아서 예외를 처리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예외를 처리한 후, 다른 코드는 정상 실행된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qfPal/dJMcafFfwUX/VfwrWfnP69AxHk5OeYMLn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qfPal/dJMcafFfwUX/VfwrWfnP69AxHk5OeYMLn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qfPal/dJMcafFfwUX/VfwrWfnP69AxHk5OeYMLn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqfPal%2FdJMcafFfwUX%2FVfwrWfnP69AxHk5OeYMLn1%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;848&quot; height=&quot;512&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다중catch문&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한 번에 여러 예외 처리&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;try {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//실행문1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//실행문2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//실행문3&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} catch(FileNotFoundException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//예외 처리1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} catch(IOException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//예외 처리2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} catch(Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//예외 처리3&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다중 catch문은 순서대로 예외를 검사하므로 상위 예외 클래스 매개변수 타입에 업캐스팅이 적용될 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주의! 상위 클래스 타입매개변수를 가지는 catch문을 뒤에 위치시켜야 한다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;멀티 catch 기능&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JDK7부터 &lt;b&gt;하나의 catch 블록에서 여러 개의 예외를 동시에 처리&lt;/b&gt;할 수있는 멀티(multi) catch 기능이 추가됨&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;ldquo;|&amp;rdquo; 연산자로 여러 개의 예외 클래스를 나열&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;566&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsjgS9/dJMcag5eCYb/OyUOhkDOqOCi0iNMdRL7ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsjgS9/dJMcag5eCYb/OyUOhkDOqOCi0iNMdRL7ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsjgS9/dJMcag5eCYb/OyUOhkDOqOCi0iNMdRL7ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsjgS9%2FdJMcag5eCYb%2FOyUOhkDOqOCi0iNMdRL7ok%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;922&quot; height=&quot;566&quot; data-origin-width=&quot;922&quot; data-origin-height=&quot;566&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;finally 문&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예외가 발생하든, 하지 않든 반드시 실행해야하는 기능에 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주로 외부 장치 연동 후 마무리 작업 시 주로 사용&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;try {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;//실행문1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;//실행문2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;//실행문3&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} catch(FileNotFoundException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//예외 처리1&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} catch(IOException e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//예외 처리2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} catch(Exception e) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//예외 처리3&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} finally {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;//실행 코드&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자동 리소스 닫기&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바에서 외부 장치 연동 시 반드시 예외 처리를 해주어야 한다. 연동이 끝나면 관련된 자원을 해제해야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이때 자동 리소스 닫기 기능(try-with-resources)을 사용하면 이런 작업을 try-catch문이 알아서 해준다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;파일, 소켓, 데이터베이스 연결 같은 &lt;b&gt;리소스를 자동으로 닫아주는 try문&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;671&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gnhvl/dJMcahiK34P/CoA3w9liB9Lz4a0HbU42l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gnhvl/dJMcahiK34P/CoA3w9liB9Lz4a0HbU42l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gnhvl/dJMcahiK34P/CoA3w9liB9Lz4a0HbU42l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGnhvl%2FdJMcahiK34P%2FCoA3w9liB9Lz4a0HbU42l1%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;1054&quot; height=&quot;671&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;671&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYAKxB/dJMcadN8p9d/IWecMXiawfnWN8MBH8c9iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYAKxB/dJMcadN8p9d/IWecMXiawfnWN8MBH8c9iK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYAKxB/dJMcadN8p9d/IWecMXiawfnWN8MBH8c9iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYAKxB%2FdJMcadN8p9d%2FIWecMXiawfnWN8MBH8c9iK%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;939&quot; height=&quot;417&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;try() 괄호 안에 넣은 &lt;b&gt;리소스는 자동으로 닫힌다.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;별도로 finally 블록에서 close() 안 해도 된다&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;단, 자동 리소스 닫기 기능을 사용하려면 클래스는 FileInputStream클래스처럼 반드시 Autocloseable 인터페이스의 close() 추상 메서드를 구현해야한다.(java.lang.AutoCloseable)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;AutoCloseable&lt;/b&gt; 또는 &lt;b&gt;Closeable&lt;/b&gt; 인터페이스를 구현한 클래스만 가능&lt;/span&gt;&lt;/div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;인터페이스&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;설명&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Closeable&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;java.io에 있음. I/O용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AutoCloseable&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;java.lang에 있음. 일반용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정리&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바에서 파일, 소켓, DB 연결 같은 &lt;b&gt;리소스는 사용 후 반드시 닫아야&lt;/b&gt;&amp;nbsp;한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그걸 매번 finally에서 close() 쓰지 않고,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자동으로 처리해주는 문법이 try-with-resources&lt;/b&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;자동 닫힘의 기준은 AutoCloseable 구현 여부&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;대표적으로 AutoCloseable 구현한 클래스들&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;입출력 관련 (java.io, java.nio)&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;text-align: start;&quot;&gt;클래스&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;text-align: start;&quot;&gt;설명&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;FileReader&lt;/b&gt;&lt;b&gt;,&amp;nbsp;&lt;/b&gt;&lt;b&gt;FileWriter&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;파일 읽기/쓰기&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;BufferedReader&lt;/b&gt;&lt;b&gt;,&amp;nbsp;&lt;/b&gt;&lt;b&gt;BufferedWriter&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;버퍼로 읽기/쓰기&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;InputStream&lt;/b&gt;&lt;b&gt;,&amp;nbsp;&lt;/b&gt;&lt;b&gt;OutputStream&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;바이트 기반 입출력&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;PrintWriter&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;텍스트 출력 스트림&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;파일 채널/버퍼 (java.nio)&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;text-align: start;&quot;&gt;클래스&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;text-align: start;&quot;&gt;설명&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;FileChannel&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;파일 채널&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Scanner&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;입력 스트림 스캐너&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;네트워크/DB 관련&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;클래스&lt;/span&gt; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;text-align: start;&quot;&gt;설명&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Socket&lt;/b&gt;&lt;b&gt;,&amp;nbsp;&lt;/b&gt;&lt;b&gt;ServerSocket&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;네트워크 소켓&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Connection&lt;/b&gt;&lt;b&gt;&amp;nbsp;(JDBC)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;DB 연결 객체&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;PreparedStatement&lt;/b&gt;&lt;b&gt;,&amp;nbsp;&lt;/b&gt;&lt;b&gt;ResultSet&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;SQL 실행/결과&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Throws를 이용한 예외 처리 방법&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 메서드 호출 과정&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;JVM은 현재 실행 중인 메서드명을 메모리의 스택(stack) 영역에 저장해둔다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(후입선출)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rcRH2/dJMcabJCQnM/UxwVchlVY4pb22fRi6jZq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rcRH2/dJMcabJCQnM/UxwVchlVY4pb22fRi6jZq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rcRH2/dJMcabJCQnM/UxwVchlVY4pb22fRi6jZq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrcRH2%2FdJMcabJCQnM%2FUxwVchlVY4pb22fRi6jZq0%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;683&quot; height=&quot;330&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(stie &amp;rarr; method)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;throws로 예외 처리하는 방법 :&amp;nbsp;메서드 호출 과정에서 예외가 발생하면 &lt;b&gt;예외를 메서드를 호출한 곳으로 떠넘기는 방법&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;try-cath문으로 예외 처리 시 메서드의 기능이 많아지면 코드가 복잡해질 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; 이때 throws로 예외 처리 가독성을 높일 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public 리턴타입 메서드명(&amp;hellip;) throws 예외클래스1, 예외클래스2 {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/blockquote&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;color: #000000;&quot;&gt;RuntimeException(실행예외) 계열은 throws를 생략해도 된다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;831&quot; data-origin-height=&quot;798&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdTS3c/dJMcafSMOuq/vRf3IQDZ4eAmXrhqc7uekk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdTS3c/dJMcafSMOuq/vRf3IQDZ4eAmXrhqc7uekk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdTS3c/dJMcafSMOuq/vRf3IQDZ4eAmXrhqc7uekk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdTS3c%2FdJMcafSMOuq%2FvRf3IQDZ4eAmXrhqc7uekk%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;831&quot; height=&quot;798&quot; data-origin-width=&quot;831&quot; data-origin-height=&quot;798&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;erlang&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;점수를 입력하세요.
hello
숫자만 입력 가능합니다.
프로그램 종료&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;명시적 예외 처리 방법&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;지금까지 사용한 예외는 자바 자체의 문제에 의해 발생했다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근데 정상적으로 실행되고 있는 상태임에도 임의로 예외를 발생시켜야하는 경우 &amp;lsquo;throw&amp;rsquo;키워드를 통해 명시적으로 예외를 발생시킨다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;throw new 예외클래스생성자([매개변수, &amp;hellip;])&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예제)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1174&quot; data-origin-height=&quot;526&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oeLNS/dJMcaf6jvqP/J505blDwmtQwvQkleQZJc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oeLNS/dJMcaf6jvqP/J505blDwmtQwvQkleQZJc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oeLNS/dJMcaf6jvqP/J505blDwmtQwvQkleQZJc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoeLNS%2FdJMcaf6jvqP%2FJ505blDwmtQwvQkleQZJc0%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;1174&quot; height=&quot;526&quot; data-origin-width=&quot;1174&quot; data-origin-height=&quot;526&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BGaHT/dJMcacV26Hn/wwkhpTzmKJDiLfkwKQtrNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BGaHT/dJMcacV26Hn/wwkhpTzmKJDiLfkwKQtrNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BGaHT/dJMcacV26Hn/wwkhpTzmKJDiLfkwKQtrNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBGaHT%2FdJMcacV26Hn%2FwwkhpTzmKJDiLfkwKQtrNk%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;1070&quot; height=&quot;434&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;stylus&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;call() 메서드 시작
배열크기가 2
프로그램 종료&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;num[2] = 3; 을 주석처리 해제했을때 실행결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;stylus&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;call() 메서드 시작
java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
	at ch16/sec05.ex01.ThrowTest.call(ThrowTest.java:12)
	at ch16/sec05.ex01.ThrowTest.main(ThrowTest.java:23)
프로그램 종료&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용자 정의 예외 사용 방법&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용자 정의 예외 클래스 : 프로그래머가 프로그램에서 특정한 상황 발생 시 예외로 인식하기 위해 만든 클래스&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;일반 예외의 경우 Exception 클래스를 상속 받고, 실행 예외의 경우 RuntimeException 클래스를 상속 받아서 만든다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예외 클래스 이름은 &amp;hellip;Exception이라고 짓는다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;public class 예외클래스명 extends [Exception | RuntimeException] {&lt;br /&gt;&amp;emsp;public 예외클래스명 () { }&lt;br /&gt;&lt;br /&gt;&amp;emsp;public 예외클래스명(String message) {&lt;br /&gt;&amp;emsp;&amp;emsp;super(message)&lt;br /&gt;&amp;emsp;};&lt;br /&gt;}&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;예외 발생 시 &lt;b&gt;예외 발생 시각와 메시지를 출력&lt;/b&gt;해 주는 사용자 정의 예외 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;bash&quot; data-code-language=&quot;java&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;import java.util.Calendar;

public class UserDefinedException extends Exception {
		//사용자 정의 예외 클래스는 반드시 Exception 클래스를 상속받아야한다.
	public UserDefinedException() {}
	
	public UserDefinedException(String message) {
		super(message);
	}
	
	//예외 발생 시각과 예외 메시지를 출력하는 메서드
	public String getUserExceptionInfo() {
		String errMsg = &quot;예외 발생 시간: &quot; + showTime() + &quot; 예외 내용: &quot; + super.getMessage();
		return errMsg;
	}
	
	//예외 발생 시각을 출력하는 메소드
	public static String showTime() {
		String date = null;
		String time = null;
		Calendar cal = Calendar.getInstance();
		int hour = cal.get(Calendar.HOUR);
		int min = cal.get(Calendar.MINUTE);
		int sec = cal.get(Calendar.SECOND);
		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH);
		int day = cal.get(Calendar.DATE);
		date = year + &quot;-&quot; + month + &quot;-&quot; + day;
		time = hour + &quot;:&quot; + min + &quot;:&quot; + sec;
		return date + &quot; &quot; + time;
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;bash&quot; data-code-language=&quot;java&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class ScoreTest {
	public static int calcScore(int score) throws UserDefinedException {
		//예외 발생 시 예외를 호출한 곳으로 떠넘긴다.
		
		if(score &amp;lt; 0 || 100 &amp;lt; score) {
			throw new UserDefinedException(&quot;정확한 점수를 입력하세요.&quot;);
			//범위를 벗어난 점수를 입력하면 강제로 사용자 정의 예외 발생
		}
		
		return score;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println(&quot;시험 점수를 입력하세요&quot;);
		
		int score = sc.nextInt();
		
		try {
			score = calcScore(score);
			System.out.println(&quot;입력한 시험 점수는 &quot; + score + &quot;입니다.&quot;);
			
		} catch(UserDefinedException e) {
			System.out.println(e.getUserExceptionInfo());
			
		} catch(Exception e) {
			e.printStackTrace();
		}
		
		System.out.println(&quot;프로그램 종료&quot;);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택/JAVA</category>
      <category>#부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/23</guid>
      <comments>https://it-story1.tistory.com/23#entry23comment</comments>
      <pubDate>Wed, 31 Dec 2025 09:23:22 +0900</pubDate>
    </item>
    <item>
      <title>Java 기초(10) - util 클래스와 객체 리턴</title>
      <link>https://it-story1.tistory.com/22</link>
      <description>&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;java.util 패키지의 클래스들&amp;nbsp;&lt;/span&gt;&lt;/h1&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;color: #000000;&quot;&gt;&lt;b&gt;StringTokenizer&lt;/b&gt; : 문자열을 구분자로 분리하는데 사용되는 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Calendar&lt;/b&gt; : 운영체제의 날짜와 시간 관련된 기능을 제공하는 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Date&lt;/b&gt; : 날짜와 시간 관련딘 기능을 제공하는 클래스&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1 StringTokenizer&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String 클래스에서 사용한 spli() 메서드와 동일한 기능&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;메서드&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;int countTokens() : nextToken() 메서드가 호출될 수 있는 횟수를 계산&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;boolean hasMoreTokens() : StringTokenizer 객체에서 token이 있는지 확인&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Object nextToken() : StringTokenizer 객체에서 token을 얻는다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;StringTokenizer 객체 생성 시 내부적으로 포인터가 생성되어 첫 번째 토큰 앞에 위치한다.&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;StringTokenizer 객체 생성시&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;---&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&amp;emsp;2033&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&amp;emsp;05&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&amp;emsp;22&lt;/span&gt;&lt;/blockquote&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;color: #000000;&quot;&gt;nextToken() 메서드를 호출하면 포인터 다음의 토큰을 리턴한 후 포인터 이동&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;---&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&amp;emsp;05&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&amp;emsp;22&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJUFA9/dJMcacn8cmK/uFg5K3Kw3n3FKK0TVyX5KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJUFA9/dJMcacn8cmK/uFg5K3Kw3n3FKK0TVyX5KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJUFA9/dJMcacn8cmK/uFg5K3Kw3n3FKK0TVyX5KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJUFA9%2FdJMcacn8cmK%2FuFg5K3Kw3n3FKK0TVyX5KK%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;1030&quot; height=&quot;708&quot; data-origin-width=&quot;1030&quot; data-origin-height=&quot;708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;사과
바나나
수박
참외

2033
05
22&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) DecimalFormat 클래스&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;숫자 포맷 형식은 API 문서 참고&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DecimalFormat df = new DecimalFormat(&amp;rdquo;$#,###.#&amp;rdquo;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String strNum = df.format(1222333.44);&amp;emsp;//$1,222,333.4&lt;/span&gt;&lt;/blockquote&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&amp;nbsp; Date 클래스&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Calendar 클래스가 나오기 전 시간과 날짜 정보를 얻었지만 지금은 &lt;b&gt;운영체제에서 제공하는 현재시간 정보&lt;/b&gt;를 얻는 목적으로 주로 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SimpleDateFormat 클래스를 사용하여 원하는 날짜 형식으로 출력&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SimpleDateFormat() dateForm = new SimpleDateFormat(pattern);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;dataForm.format(new Date());&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;메서드&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;long getTime() : Date 객체의 시간을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;void setTime() : Date 객체의 시간을 매개값으로 받은 시간으로 변경&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;날짜 형식(pattern) : 더 많은 형식은 API 문서 참고&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;import java.text.SimpleDateFormat;&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;&amp;lsquo;yyyy.MM.dd G &amp;lsquo;at&amp;rsquo; HH:mm:ss z&amp;rdquo; :&amp;nbsp; 2001.07.04 AD at 12:08:56 PDT&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;ldquo;EEE, MMM d, &amp;ldquo;yy&amp;rdquo; :&amp;nbsp; Wed, Jul 4, &amp;lsquo;01&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;ldquo;h:mm a&amp;rdquo; : 12:08 PM&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;ldquo;yyyyy.MMMMM.dd GGG hh:mm aaa&amp;rdquo; : 02001.July.04 AD 12:08 PM&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;헷갈리는 문자, 소문자 vs 대문자&lt;/span&gt;&lt;/div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;패턴&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의미&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;설명&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;M vs m&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;월 vs 분&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;M은 Month, m은 minute&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;H vs h&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;24시간 vs 12시간&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;H: 13, h: 1 (1시)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;a&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AM/PM&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오전/오후 구분&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;z&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시간대(TimeZone)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예: KST, GMT&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;lsquo;&amp;nbsp; &amp;lsquo;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문자 그대로 출력&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;G&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;연호(Era) : AD,BC&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Gregorian&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EK15Z/dJMcadgdM7d/n4divjWgG7NsQOLQCM6IyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EK15Z/dJMcadgdM7d/n4divjWgG7NsQOLQCM6IyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EK15Z/dJMcadgdM7d/n4divjWgG7NsQOLQCM6IyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEK15Z%2FdJMcadgdM7d%2Fn4divjWgG7NsQOLQCM6IyK%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;929&quot; height=&quot;818&quot; data-origin-width=&quot;929&quot; data-origin-height=&quot;818&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;25. 6. 15. 오전 3:33
2025. 06.15
УУУУ
06
15
2025년 06월 15일
03시 33분 21초&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;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3 Calendar 클래스&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Date 클래스의 단점 보완&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시간과 날짜 정보를 얻거나 특정 나라의 특정 지역별(TimeZone) 시간 정보를 얻을 때 Calendar 클래스 이용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;추상 클래스로 정의되어 있으므로 객체를 얻을 때는 getInstance() 정적 메서드를 호출해서 얻는다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Calendar cal = Calendar.getInstance();&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;상수&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;AM : AM(오전) 표시 여부 설정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AM_PM : AM(오전), PM(오후) 표시 여부 설정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DATE : 달(Month)에서의 날짜(day)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HOUR_OF_DAY : 하루(Day) 기준의 시간&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DAY_OF_WEEK : 주(Week)에서의 요일&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DAY_OF_YEAR : 연(Year)을 기준으로 지난 일수&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;HOUR : 오전 또는 오후 기준에서 지난 시간&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;get() 메서드 호출 시 각각의 상수를 매개값으로 전달해서 날짜와 시간 정보를 얻는다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Calendar 클래스에서 1월(month)은 0부터 시작하므로 1을 더해서 출력해야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAUb5O/dJMcahiFOO1/cKsz3jJJBTRXHiY8XmxoKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAUb5O/dJMcahiFOO1/cKsz3jJJBTRXHiY8XmxoKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAUb5O/dJMcahiFOO1/cKsz3jJJBTRXHiY8XmxoKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAUb5O%2FdJMcahiFOO1%2FcKsz3jJJBTRXHiY8XmxoKk%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;1015&quot; height=&quot;549&quot; data-origin-width=&quot;1015&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;823&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cX4OPo/dJMcafSHeml/5zm6GARpahLaNsYlLgpUwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX4OPo/dJMcafSHeml/5zm6GARpahLaNsYlLgpUwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX4OPo/dJMcafSHeml/5zm6GARpahLaNsYlLgpUwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX4OPo%2FdJMcafSHeml%2F5zm6GARpahLaNsYlLgpUwK%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;872&quot; height=&quot;823&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;823&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;현재 날짜 : 2025년 6월 15일
현재 시간 : 4시 17분 43초
오늘의 요일: 일요일&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+)자바에선 기존의 Date 클래스와 Calendar 클래스의 단점을 보완하기 위해 java.time 패키지의 LocalDate, LocalTime, LocalDateTime 클래스를 제공&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참조 타입 배열과 객체를 리턴하는 메서드&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참조 타입 배열&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본 타입 배열에는 기본 타입 데이터가 저장됐다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참조 타입 배열에는 클래스의 객체가 저장된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Product 클래스 타입으로 배열을 선언하면 Product 클래스 객체만 저장할 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAm5yB/dJMb99St0RX/0HRFP2fgTllPE4Z9Ik6iA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAm5yB/dJMb99St0RX/0HRFP2fgTllPE4Z9Ik6iA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAm5yB/dJMb99St0RX/0HRFP2fgTllPE4Z9Ik6iA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAm5yB%2FdJMb99St0RX%2F0HRFP2fgTllPE4Z9Ik6iA1%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;1046&quot; height=&quot;678&quot; data-origin-width=&quot;1046&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOex16/dJMcacaAN0q/nHrBmwWVF8U4C9mRf7KIik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOex16/dJMcacaAN0q/nHrBmwWVF8U4C9mRf7KIik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOex16/dJMcacaAN0q/nHrBmwWVF8U4C9mRf7KIik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOex16%2FdJMcacaAN0q%2FnHrBmwWVF8U4C9mRf7KIik%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;808&quot; height=&quot;523&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;asciidoc&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;배열에 저장한 제품 정보 출력
---------------------------
제품 번호: 0001
제품 이름: 스마트폰
제품 색상: 블랙
제품 수량: 100

제품 번호: 0002
제품 이름: 스마트 TV
제품 색상: 흰색
제품 수량: 200

제품 번호: 0003
제품 이름: 노트북
제품 색상: 은색
제품 수량: 100&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;메서드 매개변수로 참조 타입 배열 사용&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Product 클래스 타입 배열이 메서드의 매개변수로 사용되는 예제&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;710&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Rt2mh/dJMcabJxkCN/HkfciGzkLYQvNKvRKK4Ts1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Rt2mh/dJMcabJxkCN/HkfciGzkLYQvNKvRKK4Ts1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Rt2mh/dJMcabJxkCN/HkfciGzkLYQvNKvRKK4Ts1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRt2mh%2FdJMcabJxkCN%2FHkfciGzkLYQvNKvRKK4Ts1%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;1009&quot; height=&quot;710&quot; data-origin-width=&quot;1009&quot; data-origin-height=&quot;710&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Object 클래스 타입 배열&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 클래스의 최상위 클래스인 Object 클래스는 모든 클래스 객체를 업캐스팅으로 받을 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다시 Object 타입 배열에 접근해서 클래스 객체를 얻으려면 각각의 하위 클래스 타입으로 다운캐스팅해야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(타입이 다른 클래스로 다운캐스팅 할 시 ClassCastException 예외 발생)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;769&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjskpg/dJMcagjK72N/m7K5SZAIApgtvFmkhghpqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjskpg/dJMcagjK72N/m7K5SZAIApgtvFmkhghpqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjskpg/dJMcagjK72N/m7K5SZAIApgtvFmkhghpqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjskpg%2FdJMcagjK72N%2Fm7K5SZAIApgtvFmkhghpqk%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;908&quot; height=&quot;769&quot; data-origin-width=&quot;908&quot; data-origin-height=&quot;769&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;442&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bogzq3/dJMcaiV8IKJ/JwnkmzAQ6efNrL3JhkIyC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bogzq3/dJMcaiV8IKJ/JwnkmzAQ6efNrL3JhkIyC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bogzq3/dJMcaiV8IKJ/JwnkmzAQ6efNrL3JhkIyC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbogzq3%2FdJMcaiV8IKJ%2FJwnkmzAQ6efNrL3JhkIyC0%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;910&quot; height=&quot;442&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;442&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;asciidoc&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;Object 배열에 저장한 정보 출력
-----------------------------
홍길동

제품 번호: 0001
제품 이름: 스마트폰
제품 색상: 블랙
제품 수량: 100

제품 번호: 0002
제품 이름: 스마트 TV
제품 색상: 흰색
제품 수량: 200

제품 번호: 0003
제품 이름: 노트북
제품 색상: 은색
제품 수량: 100

123&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;&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;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;객체를 리턴하는 메서드&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;메서드는 호출한 곳으로 한 개의 값만 리턴한다. 여러 개의 값을 리턴하고 싶다면 클래스 객체의 각각의 필드에 값을 세팅해서 리턴하면 된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예제)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTFENM/dJMcafLVpOD/qHFfEwT1zYnrhe4gEFtS10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTFENM/dJMcafLVpOD/qHFfEwT1zYnrhe4gEFtS10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTFENM/dJMcafLVpOD/qHFfEwT1zYnrhe4gEFtS10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTFENM%2FdJMcafLVpOD%2FqHFfEwT1zYnrhe4gEFtS10%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;578&quot; height=&quot;563&quot; data-origin-width=&quot;578&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행클래스&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b68EOx/dJMcajncG7D/jJHAg0TodScHTdkeikNkyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b68EOx/dJMcajncG7D/jJHAg0TodScHTdkeikNkyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b68EOx/dJMcajncG7D/jJHAg0TodScHTdkeikNkyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb68EOx%2FdJMcajncG7D%2FjJHAg0TodScHTdkeikNkyK%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;737&quot; height=&quot;615&quot; data-origin-width=&quot;737&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;이순신의 시험 점수
국어: 80, 영어: 90, 총점: 170
홍길동의 시험 점수
국어: 70, 영어: 83, 총점: 153&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;열거 타입&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;열거 타입 정의 : 여러 개의 상수들을 모아서 만든 객체&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;여러 상수를 편리하게 관리&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ordinal() 메서드를 이용해서 상수 순서(index)를 얻을 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;상수 인덱스는 0부터 시작&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;열거타입 선언 : ,(콤마)로 구분&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;접근제한자 enum 열거타입명 {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;상수명1, 상수명2, 상수면3, &amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;열거 타입 사용&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;열거타입명 변수 = 열거타입명.상수명&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Day 예제)&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;bash&quot; data-code-language=&quot;java&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;public enum Day {
	SUN, MON, TUE, WED, THU, FRI, SAT	//나열한 순서대로 인덱스 저장, 첫 번

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;bash&quot; data-code-language=&quot;java&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;public class DayTest {
	//public static final String SUN = &quot;sun&quot;;	//상수가 많을 경우 불편하다
	
	public static void main(String[] args) {
		System.out.println(Day.SUN);
		System.out.println(Day.SUN.ordinal());	//상수의 index
		System.out.println(Day.MON.ordinal());
		
		Day day = Day.WED;	//Day 열거 타입 변수를 선언
		System.out.println(day.name());// name 메서드로 상수명 얻기
		
		switch(day) {
			case SUN:
				System.out.println(&quot;일요일&quot;);
				break;
			case MON:
				System.out.println(&quot;월요일&quot;);
				break;
			case TUE:
				System.out.println(&quot;화요일&quot;);
				break;
			case WED:
				System.out.println(&quot;수요일&quot;);
				break;
			case THU:
				System.out.println(&quot;목요일&quot;);
				break;
			case FRI:
				System.out.println(&quot;금요일&quot;);
				break;
			case SAT:
				System.out.println(&quot;토요일&quot;);
				break;
		}
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) 스레드 상태를 열거 타입에 선언한 후 스레드 상태를 출력하는 코드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바에서는 스레드 상태도 열거 타입으로 제공된다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public enum &lt;i&gt;ThreadState&lt;/i&gt; { &lt;b&gt;&lt;i&gt;NEW&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;RUNNABLE&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;WAITING&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;TIMED_WAITING&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;BLOCKED&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;TERMINATED&lt;/i&gt;&lt;/b&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택/JAVA</category>
      <category>#부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/22</guid>
      <comments>https://it-story1.tistory.com/22#entry22comment</comments>
      <pubDate>Wed, 17 Dec 2025 11:44:30 +0900</pubDate>
    </item>
    <item>
      <title>Java 기초(9)-필수 사용 클래스(String과 그 외)</title>
      <link>https://it-story1.tistory.com/21</link>
      <description>&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String 클래스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바에서 가장 많이 사용되는 데이터는 문자열&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. 같은 &lt;b&gt;문자열로 초기화&lt;/b&gt;했을때 : String은 위치를 가리키는 참조변수로 같은 &lt;b&gt;문자열의 &amp;lsquo;위치&amp;rsquo;&lt;/b&gt;을 가리킨다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String city1 =&amp;rdquo;서울시&amp;rdquo;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String city2 = &amp;ldquo;서울시&amp;rdquo;;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;city1&amp;nbsp; &amp;rarr;&amp;nbsp; &amp;ldquo;서울시&amp;rdquo; &amp;larr;&amp;nbsp; city2&lt;/span&gt;&lt;/b&gt;&lt;/div&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;color: #000000;&quot;&gt;2. &lt;b&gt;new 연산자&lt;/b&gt;로 객체를 생성해서 문자열을 가리켰을 경우 각각의 객체를 가리킨다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String city1 = &lt;b&gt;new String&lt;/b&gt;(&amp;rdquo;서울시&amp;rdquo;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String city2 = &lt;b&gt;new String&lt;/b&gt;(&amp;rdquo;세종시&amp;rdquo;);&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;city1 &amp;rarr; &amp;ldquo;서울시&amp;rdquo;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;city2 &amp;rarr; &amp;ldquo;세종시&amp;rdquo;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문자열 비교는&amp;nbsp;&lt;b&gt;equals()&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;변경 불가성(Immutable) 불변성&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int타입 변수는 다른 값을 대입했을 때 변경되지만&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String 문자열의 경우 원래의 문자열을 변경하면 &lt;b&gt;원래의 문자열은 메모리에 그대로 유지되고, 변경된 문자열이 따로 만들어진다.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예제)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;684&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YnUzN/dJMcagcYGr1/K4tLe9B7SGAcKrpRRpx23k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YnUzN/dJMcagcYGr1/K4tLe9B7SGAcKrpRRpx23k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YnUzN/dJMcagcYGr1/K4tLe9B7SGAcKrpRRpx23k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYnUzN%2FdJMcagcYGr1%2FK4tLe9B7SGAcKrpRRpx23k%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;953&quot; height=&quot;684&quot; data-origin-width=&quot;953&quot; data-origin-height=&quot;684&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;a = 3
b = 5
a = 5
b = 5
name =홍길동
name = 홍길동
result = 홍길동안녕
Hello World&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String 클래스의 유용한 메서드&lt;/span&gt;&lt;/h1&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;color: #000000;&quot;&gt;char &lt;b&gt;charAt&lt;/b&gt;(int index) : index에 해당되는 문자를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int &lt;b&gt;length&lt;/b&gt;() : 문자열의 길이를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int &lt;b&gt;compareTo&lt;/b&gt;(String str) : 두 문자열의 철자를 비교&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String &lt;b&gt;concat&lt;/b&gt;(String str) : 두 문자열을 결합&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;boolean &lt;b&gt;equals&lt;/b&gt;(Object obj) : 같은 문자열인지 판별&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int &lt;b&gt;indexOf&lt;/b&gt;(int ch) :문자열에서 문자열의 위치(index)를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int &lt;b&gt;lastIndexOf&lt;/b&gt;(int ch) : 문자열을 우측에서 검색 시 인자로 전달된 문자열의 위치를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String &lt;b&gt;replace&lt;/b&gt;(char oldChar, char new Char) : 문자열에서 특정 문자(oldChar)를 다른 문자(newChar)로 대체&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String &lt;b&gt;replace&lt;/b&gt;(Charsequence target, Charsequence relacement) : 문자열에서 특정 문자열(target)을 다른 문자(replacement)로 대체&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String &lt;b&gt;substring&lt;/b&gt;(int beginIdx, endIdx) : beginIdx에서 endIdx 사이에 위치한 문자열을 잘라서 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String &lt;b&gt;toLowerCase&lt;/b&gt;() : 문자열을 소문자로 변환 후 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String &lt;b&gt;toUpperCase&lt;/b&gt;() : 문자열을 대문자로 변환 후 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String &lt;b&gt;trim&lt;/b&gt;() : 문자열의 앞뒤 공백을 제거한 후 리턴&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;length()&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String str = &amp;ldquo;Hello world&amp;rdquo;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(str.length());&amp;emsp;//11&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(&amp;rdquo;hello world&amp;rdquo;.length());&amp;emsp;//11 &amp;rarr; 문자열에 직접 length() 메소드를 호출할 수 있다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;charAt() : 문자열의 첫번째 문자의 인덱스는 0부터 시작 &amp;rarr; 문자열 길이에 해당하는 인덱스 전달하면 예외 발생&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String str = &amp;ldquo;Hello World&amp;rdquo;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(str.charAt(4));&amp;nbsp;&amp;emsp;//&amp;rsquo;o&amp;rsquo;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(str.charAt(11));&amp;nbsp; //StringIndexOutOfBoundsException이 발생&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;indexOf() : 인자에 해당되는 문자열의 인덱스를 리턴, 해당하는 문자열이 없는 경우 -1리턴&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String str&amp;nbsp; = &amp;ldquo;Hello World&amp;rdquo;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(str.indexOf(&amp;rdquo;o&amp;rdquo;));&amp;nbsp;&amp;emsp;//4&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(str.indexOf(&amp;rdquo;World&amp;rdquo;));&amp;emsp;//6&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(str.indexOf(&amp;rdquo;a&amp;rdquo;));&amp;emsp;// -1&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;replace() : 매개값의 첫 번째 문자열을 인자의 두 번째 문자열로 대체&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String str&amp;nbsp; = &amp;ldquo;Hello World&amp;rdquo;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(str.replace(&amp;rdquo;World&amp;rdquo;, &amp;ldquo;Java&amp;rdquo;));&amp;emsp;// &amp;ldquo;Hello Java&amp;rdquo;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;substring() : 문자열에서&amp;nbsp;첫 번째 인덱스부터 두 번째 인덱스 -1까지의 문자열 추출&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String str = &amp;ldquo;Hello World&amp;rdquo;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(str.substring(2,7));&amp;emsp;//llo W&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String 클래스 메서드 사용해보기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;587&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmB6qZ/dJMcadUNnhr/yMG9bnubRFklk5LUGeW8rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmB6qZ/dJMcadUNnhr/yMG9bnubRFklk5LUGeW8rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmB6qZ/dJMcadUNnhr/yMG9bnubRFklk5LUGeW8rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmB6qZ%2FdJMcadUNnhr%2FyMG9bnubRFklk5LUGeW8rk%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;716&quot; height=&quot;575&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;587&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bV5o2Z/dJMcaaDODSj/le206LGkJGpWIKBKblj5M1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bV5o2Z/dJMcaaDODSj/le206LGkJGpWIKBKblj5M1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bV5o2Z/dJMcaaDODSj/le206LGkJGpWIKBKblj5M1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV5o2Z%2FdJMcaaDODSj%2Fle206LGkJGpWIKBKblj5M1%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;718&quot; height=&quot;588&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;588&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;11
11
o
4
6
-1
Hello World and Java!!
Hello World and Java!!
hello world
HELLO WORLD
Hello Java
llo W
true
Hello World
Hello World&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주민번호 뒷자리 번호 &amp;lsquo;*&amp;rsquo;로 표시하기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P24Xg/dJMcac2Fci4/dpz0IAT33A7RVyiHNutWR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P24Xg/dJMcac2Fci4/dpz0IAT33A7RVyiHNutWR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P24Xg/dJMcac2Fci4/dpz0IAT33A7RVyiHNutWR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP24Xg%2FdJMcac2Fci4%2Fdpz0IAT33A7RVyiHNutWR0%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;619&quot; height=&quot;568&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;568&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Split() 메서드&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문자열을 특정한 구분자를 기준으로 분리&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;split() 으로 분리하면 각각의 분리된 문자열(토큰)은 배열로 저장된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcRLXQ/dJMcabJvxvi/PkW7zDO5jjRosagBqHPlWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcRLXQ/dJMcabJvxvi/PkW7zDO5jjRosagBqHPlWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcRLXQ/dJMcabJvxvi/PkW7zDO5jjRosagBqHPlWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcRLXQ%2FdJMcabJvxvi%2FPkW7zDO5jjRosagBqHPlWK%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;574&quot; height=&quot;644&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;사과
바나나
귤
수박
인사부
회계부
개발부
관리부
스마트TV
스마트폰
노트북
태블릿&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getBytes() 메서드&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;문자열의 각각의 문자를 사용할 경우&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예: 한글 문자열을 인코딩이 다른 네트워크로 전송하거나 인코딩이 다른 데이터베이스에 저장할 때&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getBytes() 메서드를 이용해 문자들을 byte 타입 배열로 얻을 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(인코딩을 지정하지 않으면 사용하는 운영체제의 인코딩이 기본으로 적용된다)&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;byte[] encodeBytes= &quot;자바 프로그래밍&quot;.getBytes();
String decodeName = new String(encodeBytes, &quot;UTF-8&quot;);&amp;emsp;//byte 데이터를 String 객체의 매개값으로 입력해서 원래 문자열로 복원

byte[] b= &quot;hello&quot;.getBytes();
System.out.println(b.length);&amp;emsp;//5
String decodeName2 = new String(b, 2, 3, &quot;UTF-8&quot;);&amp;emsp;//llo&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;color: #000000;&quot;&gt;2인덱스부터 3문자를 추출, UTF-8로&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;ldquo;&amp;rdquo;&amp;rdquo;연산자&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;jdk 8부터 생겼다. 문자열을 한꺼번에 여러 줄에 출력하는 기능&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;521&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1ITcn/dJMcaaRmprR/P7OzGazGUlZqAKxhOKU5iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1ITcn/dJMcaaRmprR/P7OzGazGUlZqAKxhOKU5iK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1ITcn/dJMcaaRmprR/P7OzGazGUlZqAKxhOKU5iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1ITcn%2FdJMcaaRmprR%2FP7OzGazGUlZqAKxhOKU5iK%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;521&quot; height=&quot;469&quot; data-origin-width=&quot;521&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;안녕하세요
	&quot;자바&quot;프로그래밍입니다.
안녕하세요.
	&quot;자바&quot;
프로그래밍입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) String 타입 변수 str을 초기화 시&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;null로 초기화 : 메모리에 String&amp;nbsp;객체가 생성되지 않은 상태&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;ldquo;&amp;rdquo;로 초기화 : String 객체를 생성 후 길이가 0인 문자열을 가지는&amp;nbsp;객체&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;StringBuffer&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;StringBuffre 문자열은 new 연산자를 이용하여 메모리에 객체를 생성한 후 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특징 : 기존 문자열을 수정하면 문자열이 수정(mutable)된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용 :&amp;nbsp;StringBuffer city1 = new StringBuffer(&quot;서울시&quot;);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String 클래스와 달리 기존의 문자열을 바꾸면&amp;nbsp;새로운 문자열이 생성되지 않고, 기존의 문자열만 변경된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;append() 메서드를&amp;nbsp;이용하여 문자열 수정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) 바로 문자열 변경이 가능하므로 그만큼 빠르다. &amp;rarr; 안드로이드와 같은 메모리 자원이 부족한 모바일 환경에서 문자열을 자주 변경할 경우 많이 사용된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;389&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mcK7H/dJMcadUNnpw/tKdn1Po5hqH5uJ97xiDIbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mcK7H/dJMcadUNnpw/tKdn1Po5hqH5uJ97xiDIbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mcK7H/dJMcadUNnpw/tKdn1Po5hqH5uJ97xiDIbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmcK7H%2FdJMcadUNnpw%2FtKdn1Po5hqH5uJ97xiDIbk%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;565&quot; height=&quot;389&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;389&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;&quot;&gt;&lt;code&gt;서울시
서울시 강남구
서울시 강남구 역삼동&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;StringBuilder 클래스&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기능은 기본적으로 StringBuffer와 같다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다른점은 StringBuffer는 멀티 스레드에 동기화 기능이 제공된다. &amp;rarr; 그만큼 성능이 떨어진다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;StringBuilder 클래스는 동기화 기능이 제공되지 않는다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; 멀티 스레드 환경이 아니면 StringBuilder 클래스 타입 문자열을 사용하면 좋다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System 클래스&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;운영체제에서 제공하는 기능 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기능&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;필드와 메서드&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;설명&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td colspan=&quot;1&quot; rowspan=&quot;2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;표준 입출력&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.in&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;키보드로 입력하고 콘솔(모니터)로 출력&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.err&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;콘솔(모니터)로 에러를 출력&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;환경변수 읽기&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getenv()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;운영체제의 설정된 환경 변수를 읽어온다&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시스템 프로퍼티 읽기&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getProperties()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로그램의 환경 모드를 프로퍼티 형태로 읽어온다&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현재 시각 측정&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;currentTimeMillis()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;운영체제에서 현재 시각을 읽어온다&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로그램 실행 기능&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;exit()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로그램 끝내는 기능과 가비지 컬렉터 관련 기능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보안 설정 기능&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getSecurityManager()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 프로그램의 보안 관리자 설정 기능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기타&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;arraycopy()&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;배열을 효율적으로 복사하는 기능&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #000000; color: #1a1a1a;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;프로그램 종료(exit)&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;exit() 메서드로 강제 종료시킬 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;매개변수값은 종료 상태값&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;&lt;b&gt;0이면 정상종료&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;0이 아니면 비정상 종료&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예제)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lcTBn/dJMcab3Ny7T/UXBreu2Y2zQq4MpTgi7YvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lcTBn/dJMcab3Ny7T/UXBreu2Y2zQq4MpTgi7YvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lcTBn/dJMcab3Ny7T/UXBreu2Y2zQq4MpTgi7YvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlcTBn%2FdJMcab3Ny7T%2FUXBreu2Y2zQq4MpTgi7YvK%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;844&quot; height=&quot;628&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;yaml&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;점수를 입력해주세요
90
점수: 90점
---
점수를 입력해주세요
120
점수를 잘못 입력했습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;현재 시각 출력하기(currentTimeMillis)&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;long time = System.currentTimeMillis();&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;currentTimeMillis() 메서드로 작업 시간 구하기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mP0p7/dJMcahXgekt/ms86Rnku8QMA6DkqqTK8p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mP0p7/dJMcahXgekt/ms86Rnku8QMA6DkqqTK8p1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mP0p7/dJMcahXgekt/ms86Rnku8QMA6DkqqTK8p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmP0p7%2FdJMcahXgekt%2Fms86Rnku8QMA6DkqqTK8p1%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;722&quot; height=&quot;590&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;1에서 100000까지의 합: 5000050000
계산 소요 시간: 1ms
1에서 10000000까지의 합: 50000005000000
계산 소요 시간: 7ms&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Class 클래스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바는 클래스는 먼저 정의한 후 new 연산자를 이용해 클래스 객체(인스턴스)를 이용했다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나 실행 중 메모리의 클래스&amp;nbsp;객체로부터 원래 클래스에 관한 정보를 얻어야 하는 경우가 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;color: #000000;&quot;&gt;클래스로부터 정보 얻기&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Class class1 = student.class&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Class class2 = Class.forName(&amp;rdquo;sec01.ex01.Student&amp;rdquo;);&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;forName() 메서드로&amp;nbsp;Student&amp;nbsp;클래스로부터&amp;nbsp;정보를 얻는다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;forName()은&amp;nbsp;&lt;b&gt;매개값으로 패키지명과 클래스명&lt;/b&gt;을 모두 입력해야한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;color: #000000;&quot;&gt;객체로부터 정보 얻기&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Student s1 = new Student(&amp;rdquo;이순신&amp;rdquo;, 3);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Class class3 = s1.getClass();&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클래스 객체를 가리키는 참조 변수의 getClass() 메서드를 호출하면 Class 객체를 얻을 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;color: #000000;&quot;&gt;getName() : 패키지명까지 포함한 클래스명을 얻는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getMethods() : 클래스에 선언된 메서드명을 배열로 얻는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getSimpleName() : 클래스명을 얻는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getPackageName() : 패키지명을 얻는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;getResources() : 매개값에 지정된 리소스의 경로를 얻는다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Class 클래스로 클래스 정보 얻기&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;forName() 메서드 사용 시 반드시 main() 메서드에 예외 처리를 해주어야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;737&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zt25O/dJMcadAuAkH/6py7KY5Tn7lnp5J9kRuJPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zt25O/dJMcadAuAkH/6py7KY5Tn7lnp5J9kRuJPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zt25O/dJMcadAuAkH/6py7KY5Tn7lnp5J9kRuJPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZt25O%2FdJMcadAuAkH%2F6py7KY5Tn7lnp5J9kRuJPK%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;664&quot; height=&quot;737&quot; data-origin-width=&quot;664&quot; data-origin-height=&quot;737&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;css&quot; data-code-language=&quot;java&quot;&gt;&lt;code&gt;sec01.ex07.Student
Student
sec01.ex07

sec01.ex07.Student
Student
sec01.ex07

sec01.ex07.Student
Student
sec01.ex07&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) Class 클래스는&lt;b&gt;&amp;nbsp;자바 리플렉션&lt;/b&gt;에서 많이 사용된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+)&amp;nbsp;&lt;b&gt;Class 객체는 해당 클래스의 경로 정보&lt;/b&gt;를 가지고 있기 때문에 다른 리소스 파일(xml, 이미지, 설정 파일 등)의 경로를 쉽게 얻을 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; 이런 기능은 웹 애플리케이션에서 데이터베이스 연동 시&amp;nbsp;&lt;b&gt;설정 파일에서 연결 정보&lt;/b&gt;를 읽어오거나 안드로이드의 화면에서&amp;nbsp;&lt;b&gt;이미지 파일에 접근&lt;/b&gt;하는 경우 많이 사용된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택/JAVA</category>
      <category>부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/21</guid>
      <comments>https://it-story1.tistory.com/21#entry21comment</comments>
      <pubDate>Fri, 12 Dec 2025 11:13:05 +0900</pubDate>
    </item>
    <item>
      <title>Java 기초(8)-필수 사용 클래스</title>
      <link>https://it-story1.tistory.com/20</link>
      <description>&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;필수 사용 클래스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바에선 프로그래밍 시 자주 사용되는 기능을 API 클래스로 만들어서 제공한다.&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;Object 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Wrapper 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Math 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;StringBuffer 클래스 &amp;amp; StringBuilder 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Class 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;java.util 패키지의 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참조 타입 배열과 객체를 리턴하는 메서드&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;열거 타입&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;has-a 관계 클래스&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Object 클래스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정의 :&amp;nbsp;모든 클래스의 최상위 클래스(root class)&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;java.lang 패키지에 위치&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;명시적으로 구현하지 않으면 컴파일 시 클래스가 자동으로 상속받는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Object 클래스의 멤버는 모든 클래스에서 사용 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Object에서 제공하는 메서드들&lt;/span&gt;&lt;/h2&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;color: #000000;&quot;&gt;protected Object clone()&amp;nbsp;: 객체 자신을 복사한 후에 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;boolean equals(Object obj)&amp;nbsp;: 객체들의 실제 값을 비교&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public String toString()&amp;nbsp;: 객체를 문자열로 표현 (기본은 클래스명@해시코드)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;protected void finalize() : 객체 자신에 대해 더 이상 참조할 경우가 없을 때 garbage colelctor에 의해 호출된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Class&amp;lt;?&amp;gt;getClass() : 객체 자신의 클래스명을 얻는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int hashCode() : 객체 자신의 해시 코드를 얻는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;void notify() : 대기 상태의 스레드에게 실행 준비를 알린다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;void wait() : 다른 스레드가 notify()나 notifyAll()를 호출할 때까지 현재 실행하는 스레드를 대기 상태에 머물게 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참고로&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;java.lang 패키지 핵심 클래스들&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;Object(모든 클래스의 조상)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;String/StringBuilder/StringBuffer (문자열 처리)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Math, System (유틸리티)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Wrapper (Integer, Double 등)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Throwable/Exception/Error (예외 처리)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Thread/Runnable (멀티스레딩)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기타 : Runtime, Enum, Class&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;equals() 메서드&amp;nbsp;&lt;/span&gt;&lt;/h1&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;color: #000000;&quot;&gt;기본 타입 데이터 값 비교 : ==&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참조 타입 데이터 값 비교&amp;nbsp; : equals() (==는 위치값이 같은지 비교)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Object 클래스의 equals() 메서드는 &amp;lsquo;==&amp;rsquo;으로 구현되어 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참조 데이터 비교 시 위치값이 비교된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실제 값을 비교하려면 메서드를 오버라이딩 해야한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;대부분의 API 클래스는 미리 equals() 메서드를 오버라이딩해서 제공한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어 Student 클래스에서 name과 grade를 동시에 비교하는 equals()메서드를 오버라이딩하고 싶다&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;java&quot; data-ke-language=&quot;java&quot;&gt;&lt;code&gt;public class Student {
	String name;
	int grade;

	// ...
	@Override
	public boolean equals(Object obj) {
		boolean result = false;
		if (obj instanceof Student) {
			Student s = (Student)obj;
			if(name.equals(s.name)&amp;amp;&amp;amp; (grade == s.grade)) {
				result = true;
			}
		}
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;equals 메서드를 오버라이딩하며 Object obj 객체를 받는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;result 값는 false 디폴트&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;obj가 Student의 인스턴스 일때 obj 다운캐스팅&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이름 비교(equals), 점수 비교(==) 둘 다 맞으면 true&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;toString() 메서드&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어 객체의 필드값을 한꺼번에 출력해야할 경우 toString() 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;color: #000000;&quot;&gt;Object 클래스에서 제공&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인스턴스의 필드 정보를 문자열로 출력&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;참조 타입 변수를 println() 메서드에 전달하면 자동으로 toString() 메서드가 호출된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근데 Object 클래스의 toString() 메서드의 실제 기능은 클래스 객체의 클래스명과 객체의 해시코드를 출력하는 기능이다&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr;&amp;nbsp;본 형태는 &amp;ldquo;클래스명@해시코드&amp;rdquo;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;즉 형식만 선언되어 있을 뿐 필드값을 출력하진 않는다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;상황에 맞게 오버라이딩하여 사용한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) 해시코드(hashCode) : 클래스 객체 생성 시, JVM이 클래스 객체에 부여하는 고유 번호&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어, toString() 메서드를 오버라이딩하지 않고 사용했을 때&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nk0mH/dJMcaf59rHT/niwN4pVtAKql7KIFy1yGG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nk0mH/dJMcaf59rHT/niwN4pVtAKql7KIFy1yGG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nk0mH/dJMcaf59rHT/niwN4pVtAKql7KIFy1yGG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnk0mH%2FdJMcaf59rHT%2FniwN4pVtAKql7KIFy1yGG0%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;489&quot; height=&quot;340&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB0Ahf/dJMcafrx5m3/uTQLPuxUdN4Ga99Iv7Fpn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB0Ahf/dJMcafrx5m3/uTQLPuxUdN4Ga99Iv7Fpn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB0Ahf/dJMcafrx5m3/uTQLPuxUdN4Ga99Iv7Fpn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB0Ahf%2FdJMcafrx5m3%2FuTQLPuxUdN4Ga99Iv7Fpn0%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;499&quot; height=&quot;239&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;239&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출력값 :&amp;nbsp;클래스명과 해시코드가 출력된다.&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;sec01.ex04.Student@6576fe71
sec01.ex04.Student@6576fe71&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;오버라이딩 했을 때&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;+
@Override
	public String toString() {
		String info = &quot;이름: &quot; + name + &quot;, 학년: &quot; + grade;
		return info;
	}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출력값&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;이름: 이순신, 학년: 24
이름: 이순신, 학년: 24&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Clone() 메서드&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Object 클래스의 clone() 메서드는 실행 중 생성된 클래스 객체를 따로 복사(깊은 복사)하는 기능을 제공&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본적으로 clone()을 그냥 이용하면 얕은 복사 (Shallow copy)가 된다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) 예외로 Array의 경우 clone()메서드를 바로 사용해도 deep copy가 된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) Arrays.copyOf(), copyOfRange() 메서드도 deep copy&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;깊은 복사를 위한 3가지 조건&lt;/span&gt;&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cloneable 인터페이스를 implements하기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;clone() 메서드를 override 하기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;try-catch 구문을 이용해 CloneNotSupportedException 던지기&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예제&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpI6dS/dJMcahXc7Hr/CEkaTcS9WwBUdMaakHgAB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpI6dS/dJMcahXc7Hr/CEkaTcS9WwBUdMaakHgAB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpI6dS/dJMcahXc7Hr/CEkaTcS9WwBUdMaakHgAB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpI6dS%2FdJMcahXc7Hr%2FCEkaTcS9WwBUdMaakHgAB0%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;674&quot; height=&quot;599&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IH2FM/dJMcajtTGyW/m0tFDh0lB1fjSwk9KYlAB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IH2FM/dJMcajtTGyW/m0tFDh0lB1fjSwk9KYlAB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IH2FM/dJMcajtTGyW/m0tFDh0lB1fjSwk9KYlAB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIH2FM%2FdJMcajtTGyW%2Fm0tFDh0lB1fjSwk9KYlAB0%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;673&quot; height=&quot;376&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출력값&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;이름: 이순신, 학년: 3
이름: 이순신, 학년: 3

이름: 이순신, 학년: 2
이름: 이순신, 학년: 3&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;값 변경을 공유하지 않는다 &amp;rarr; 깊은 복사가 된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Student 클래스는&amp;nbsp;Cloneable 인터페이스 구현&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &amp;ldquo; 이 클래스는 clone()을 사용할거다&amp;rdquo;라는 신호를 컴파일러에게 준다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;만약 구현하지 않으면&amp;nbsp; CloneNotSupportedException이 발생&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Cloneable을 구현하는 것만으로는 예외가 없어지지 않는다. 호출하는 쪽에서&amp;nbsp;반드시 예외 처리(try-catch 또는 throws)&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Wrapper 클래스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본 타입 데이터 별로 편리한 기능을 제공하는 클래스&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) 자바에선 8가지 기본 타입 데이터 제공됨.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본 타입 데이터&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;래퍼 클래스&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;boolean&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Boolean&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;byte&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Byte&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;char&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Character&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;short&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Short&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;long&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Long&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;float&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Float&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;double&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Double&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #000000; color: #1a1a1a;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Integer 클래스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Integer 래퍼 클래스&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/exsP9N/dJMcahbPiMF/JjlRxjVQiy3y7dAapRz7J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/exsP9N/dJMcahbPiMF/JjlRxjVQiy3y7dAapRz7J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/exsP9N/dJMcahbPiMF/JjlRxjVQiy3y7dAapRz7J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FexsP9N%2FdJMcahbPiMF%2FJjlRxjVQiy3y7dAapRz7J0%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;968&quot; height=&quot;640&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tn0za/dJMcafd00Mc/FBVKK7vhRRL30jaOjoPKkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tn0za/dJMcafd00Mc/FBVKK7vhRRL30jaOjoPKkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tn0za/dJMcafd00Mc/FBVKK7vhRRL30jaOjoPKkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftn0za%2FdJMcafd00Mc%2FFBVKK7vhRRL30jaOjoPKkk%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;290&quot; height=&quot;219&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;219&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+)그 밖의 Integer 클래스의 여러 메소드들&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;int intValue() : Integer 객체의 갑슬 정수값으로 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;long longValue() : Integer 객체의 값을 long 데이터로 변환하여 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static int max(int a, int b) : 두 정수 중 큰 값을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static int min(int a, int b) : 두 정수 중 작은 값을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static int parseInt(String s) : 문자열을 정수로 변환한 후 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static String toBinary(int a)&amp;nbsp; : 정수를 2진수로 변환한 후 문자열로 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static String toHexString(int a) : 정수를 16진수로 변환한 후 문자열로 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static String toOctalString(int a) : 정수를 8진수로 변환한 후 문자열로 리턴&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Float 클래스도 마찬가지&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Float.MAX_VALUE&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Float.parseFloat(&amp;hellip;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Float.toString(&amp;hellip;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Math 클래스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;java.lang.Math 클래스 : 정적 메서드로 객체 생성 없이 바로 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;상수&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;static final double E : 자연 지수 e의 값&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static final double PI : 원주율 파이값&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;메서드&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;static double abs(double a) : a의 double 타입 절대값을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static int abs(int a) : a의 int 타입 절대값을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static double ceil(double a) : a보다 큰 정수 중 가장 작은 정수를 double 타입 실수로 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static double floor(double a) : a보다 작은 정수 중 가장 큰 정수를 double 타입 실수로 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static double max(double a, double b) : 두 수 중 큰 값을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static double min(double a, double b) : 두 수 중 작은 값을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static double pow(double a, double b) : a의 b 제곱(power)의 값을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static double random() : 0.0에서 1.0 사이의 난수를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static long round(double a) : a의 소수점 아래의 수를 반올림한 후 long 타입 정수로 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static double sqrt(double a) : a의 제곱근을 리턴&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Math 클래스 예제&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;559&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uIbjF/dJMcagRwi9j/zkoCs4MV88P517T9GZJjw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uIbjF/dJMcagRwi9j/zkoCs4MV88P517T9GZJjw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uIbjF/dJMcagRwi9j/zkoCs4MV88P517T9GZJjw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuIbjF%2FdJMcagRwi9j%2FzkoCs4MV88P517T9GZJjw1%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;880&quot; height=&quot;559&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;559&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행결과&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dpMluz/dJMcaaDLFQ3/JcrtPcaTsKWduHqpNIpxV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dpMluz/dJMcaaDLFQ3/JcrtPcaTsKWduHqpNIpxV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dpMluz/dJMcaaDLFQ3/JcrtPcaTsKWduHqpNIpxV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdpMluz%2FdJMcaaDLFQ3%2FJcrtPcaTsKWduHqpNIpxV0%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;412&quot; height=&quot;330&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Random 클래스&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;지금까지는 Math 클래스의 random() 메소드를 사용해왔다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바는 따로 java.util 패키지에 있는 Random 클래스로 더 많은 난수 기능 제공&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;Random() : 디폴트 생성자. 현재 시간을 초깃값으로 하는 난수 발생기 객체를 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Random(long seed) : long 타입의 seed값을 매개변수로 받아 객체를 생성&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;메서드&lt;/b&gt;&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;boolean nextBoolean() : boolean 타입의 난수를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;double nextDouble() : double 타입의 난수를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;float nextFloat() : float 타입의 난수를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int nextInt() : int 타입의 난수를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;long nextLong() : long 타입의 난수를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int nextInt(int bound) : 0과 한계값(bound) 사이(한계값은 미포함)의 난수를 리턴&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Random 클래스 예제&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmqqwQ/dJMcahbPiQQ/6IHiP6cuMwhvKsKA44Nkzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmqqwQ/dJMcahbPiQQ/6IHiP6cuMwhvKsKA44Nkzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmqqwQ/dJMcahbPiQQ/6IHiP6cuMwhvKsKA44Nkzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmqqwQ%2FdJMcahbPiQQ%2F6IHiP6cuMwhvKsKA44Nkzk%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;879&quot; height=&quot;459&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 결과&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;755473468
2
5
0.2642843929746739
false
3&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택/JAVA</category>
      <category>부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/20</guid>
      <comments>https://it-story1.tistory.com/20#entry20comment</comments>
      <pubDate>Thu, 4 Dec 2025 10:02:26 +0900</pubDate>
    </item>
    <item>
      <title>Java 기초(7) - 인터페이스</title>
      <link>https://it-story1.tistory.com/19</link>
      <description>&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인터페이스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;추상 클래스가 발전된 개념&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인터페이스는 프로그램 설계 시 프로그램 전체 구조의 일관성과 통일성을 부여하는데 사용됨&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정의 : interface 키워드로 선언된 추상 클래스&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;인스턴스 생성 불가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;멤버로는&amp;nbsp;상수와 추상 메서드만&amp;nbsp;허용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;업캐스팅 참조 변수로 사용할 수 있다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하위 클래스에선&amp;nbsp;implements(구현) 관계이다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하위 클래스에선 여러 개의 인터페이스를 구현할 수 있다(다중 인터페이스)&lt;br /&gt;&amp;rarr;&amp;nbsp;자바의 단일 상속 기능을 보완&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인터페이스를 상속 받아 클래스 구현하면 인터페이스의&amp;nbsp;모든 추상메소드를 구현해야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;용도 :&amp;nbsp;기능만을 하위 클래스에 강제하기 위해서 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인터페이스 내에서 final 지정자를 사용하지 않고&amp;nbsp;변수 선언과 동시에 초기화하면 상수로 인식&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;추상 메서드는 abstract 지정자를 생략해도 된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Car interface&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;293&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bivuSK/dJMcahv4ZnI/5t4OFKwu9tDJAoSBENVygK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bivuSK/dJMcahv4ZnI/5t4OFKwu9tDJAoSBENVygK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bivuSK/dJMcahv4ZnI/5t4OFKwu9tDJAoSBENVygK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbivuSK%2FdJMcahv4ZnI%2F5t4OFKwu9tDJAoSBENVygK%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;611&quot; height=&quot;238&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;293&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Truck : 구현 클래스&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;849&quot; data-origin-height=&quot;419&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/26Vzu/dJMcadmRivf/m4eGgcqJtQYgNsctI0ZrZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/26Vzu/dJMcadmRivf/m4eGgcqJtQYgNsctI0ZrZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/26Vzu/dJMcadmRivf/m4eGgcqJtQYgNsctI0ZrZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F26Vzu%2FdJMcadmRivf%2Fm4eGgcqJtQYgNsctI0ZrZ0%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;713&quot; height=&quot;352&quot; data-origin-width=&quot;849&quot; data-origin-height=&quot;419&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SportsCar : 구현 클래스&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGkd6Q/dJMcadmRiwU/FdkYvwkLbZKHko3nUJjBH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGkd6Q/dJMcadmRiwU/FdkYvwkLbZKHko3nUJjBH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGkd6Q/dJMcadmRiwU/FdkYvwkLbZKHko3nUJjBH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGkd6Q%2FdJMcadmRiwU%2FFdkYvwkLbZKHko3nUJjBH0%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;718&quot; height=&quot;393&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;CarTest&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ebhnY3/dJMcaihsbSJ/p1snLlYXRgZ9V2cFpYnky0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ebhnY3/dJMcaihsbSJ/p1snLlYXRgZ9V2cFpYnky0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ebhnY3/dJMcaihsbSJ/p1snLlYXRgZ9V2cFpYnky0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FebhnY3%2FdJMcaihsbSJ%2Fp1snLlYXRgZ9V2cFpYnky0%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;731&quot; height=&quot;680&quot; data-origin-width=&quot;814&quot; data-origin-height=&quot;757&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPM0kr/dJMcajm4KEX/zKUKJVIoVWobfXdaB5kLZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPM0kr/dJMcajm4KEX/zKUKJVIoVWobfXdaB5kLZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPM0kr/dJMcajm4KEX/zKUKJVIoVWobfXdaB5kLZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPM0kr%2FdJMcajm4KEX%2FzKUKJVIoVWobfXdaB5kLZK%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;402&quot; height=&quot;266&quot; data-origin-width=&quot;435&quot; data-origin-height=&quot;288&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인터페이스로 회원 관리 기능 구현&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Member class&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;359&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRYYjj/dJMcacVQb55/F9uYLD4IRVgimPOSUqu8N0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRYYjj/dJMcacVQb55/F9uYLD4IRVgimPOSUqu8N0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRYYjj/dJMcacVQb55/F9uYLD4IRVgimPOSUqu8N0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRYYjj%2FdJMcacVQb55%2FF9uYLD4IRVgimPOSUqu8N0%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;419&quot; height=&quot;299&quot; data-origin-width=&quot;503&quot; data-origin-height=&quot;359&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MemberImpl class&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;package sec03.ex01;

public class MemberImpl implements Member {
	
	@Override
	public void joinMember() {
		//회원 등록 기능
	}
	
	@Override
	public void searchMember() {
		//회원 조회 기능
	}
	
	@Override
	public void modMember() {
		//회원 수정 기능
	}
	
	@Override
	public void delMember() {
		//회원 삭제 기능
	}
	
	private void encodeMemberInfo() {
		//회원 정보 암호화 기능
	}
	
	private String decodeMemberInfo() {
		//회원 정보 복호화 기능
		return &quot;복호화된 회원 정보&quot;;
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) 변수이름에 주목 : 한 눈에 뜻과 기능을 알 수 있어야한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다중 인터페이스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Test1 interface&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXOmWh/dJMcabbyNWJ/YKd84yYsKwv6JgUztHnpk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXOmWh/dJMcabbyNWJ/YKd84yYsKwv6JgUztHnpk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXOmWh/dJMcabbyNWJ/YKd84yYsKwv6JgUztHnpk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXOmWh%2FdJMcabbyNWJ%2FYKd84yYsKwv6JgUztHnpk1%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;637&quot; height=&quot;180&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Test2 interface&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yTK01/dJMcafE11sj/QkVtON7K4q0rSkMEZDjw0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yTK01/dJMcafE11sj/QkVtON7K4q0rSkMEZDjw0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yTK01/dJMcafE11sj/QkVtON7K4q0rSkMEZDjw0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyTK01%2FdJMcafE11sj%2FQkVtON7K4q0rSkMEZDjw0K%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;651&quot; height=&quot;152&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;구현 클래스 : Child class : 두개의 인터페이스를 모두 구현해야 한다.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;319&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqbkOl/dJMcaa4M4bk/xG7iu9DuT1r4n1Ii0ftxhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqbkOl/dJMcaa4M4bk/xG7iu9DuT1r4n1Ii0ftxhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqbkOl/dJMcaa4M4bk/xG7iu9DuT1r4n1Ii0ftxhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqbkOl%2FdJMcaa4M4bk%2FxG7iu9DuT1r4n1Ii0ftxhK%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;662&quot; height=&quot;269&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;319&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ChildTest class (실행 클래스)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjxIJe/dJMcacBxQW6/QLQP1UsJq2RFbKDZw2OBb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjxIJe/dJMcacBxQW6/QLQP1UsJq2RFbKDZw2OBb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjxIJe/dJMcacBxQW6/QLQP1UsJq2RFbKDZw2OBb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjxIJe%2FdJMcacBxQW6%2FQLQP1UsJq2RFbKDZw2OBb1%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;656&quot; height=&quot;425&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; 구현 클래스가 구현하는 인터페이스는 모두 업캐스팅 참조 변수로 사용할 수 있다. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그러나&amp;nbsp;&lt;b&gt;업캐스팅 상태에선 인터페이스에 선언된 추상 메서드만 호출 가능하다 .&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;인터페이스 간의 상속&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인터페이스와 인터페이스의 계층 구조는 상속 구조이다.&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;구현 클래스에선 인터페이스와 상속 관계인 부모 인터페이스의 추상 메서드도 반드시 구현해야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;구현 클래스 타입 변수는 모든 메서드를 호출 할 수 있다. (업캐스팅된 변수를 주의! &amp;rarr; 다운캐스팅 후 호출)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인터페이스 다중 상속&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클래스와 달리 다중 상속을 허용한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;default 메서드와 static 메서드&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용하지 않는 인터페이스의 기능을 구현 클래스에서 모두 구현해주어야한다는 불편함&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; JDK8부터 디폴트 메서드와 static 메서드 도입&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr;&amp;nbsp;static이 붙으면 간단하게&amp;nbsp;클래스 혹은 인터페이스 이름.메서드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) 오버라이딩이 아니다. 오버라이딩은 static이 없는 일반 메서드에서나 가능&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;public interface A {
&amp;emsp;public static void mS() {
&amp;emsp;&amp;emsp;System.out.println(&quot;A의 이름으로&quot;);
}
}

public interface B extends A {
&amp;emsp;public static void mS() {
&amp;emsp;&amp;emsp;System.out.println(&quot;B의 이름으로&quot;);
}
}

public class C implements B {
&amp;emsp;public static void mS() {
&amp;emsp;&amp;emsp;System.out.println(&quot;Class의 이름으로&quot;);
}
}

public class Test {
&amp;emsp;public static void main(String[] args) {
&amp;emsp;&amp;emsp;&amp;emsp;A.mS();
&amp;emsp;&amp;emsp;&amp;emsp;B.mS();
&amp;emsp;&amp;emsp;&amp;emsp;C.mS();

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;default 메서드&amp;nbsp; : Java8부터 인터페이스에 default 키워드를 이용해&amp;nbsp;&lt;b&gt;구현이 포함된 메서드&lt;/b&gt;를 정의할 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;public interface A {
&amp;emsp;public default void mD() {
&amp;emsp;&amp;emsp;System.out.println(&quot;박쥐 메소드!&quot;);
}
}



public interface B extends A {
&amp;emsp;public void mD()&amp;emsp;//추상메소드!
}


public class C implements B {
&amp;emsp;
&amp;emsp;@Override
&amp;emsp;public void mD() {
&amp;emsp;&amp;emsp;&amp;emsp;&amp;emsp;System.out.println(&quot;알고보니 박쥐였어!&quot;);
}
}


public class Test {
&amp;emsp;public static void main(String[] args) {
&amp;emsp;&amp;emsp;&amp;emsp;C c = new C();
&amp;emsp;&amp;emsp;&amp;emsp;c.mD();&amp;emsp;//알고보니 박쥐였어!

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;default 메소드는 일반메소드처럼 상속, 오버라이딩도 되고 다시 추상메소드도 되는 특이한 메소드!&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다시 추상이 되는건 &amp;lsquo;진짜 다시 추상으로 바꾸는 것&amp;rsquo;은 아니고, default 메서드를 무시하고 다시 추상화하는 방식으로 이해하면 된다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A는 default를 이용해 기본 구현을 제공&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; B는 그것을 받아들이지 않는다(추상화)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; 이렇게 되면 B를 구현하는 클래스는 반드시 오버라이딩을 해야한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; A를 참조변수로 생성자를 만들어도 새롭게 오버라이딩된 메소드가 실행된다&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내부 클래스와 내부 인터페이스&lt;/span&gt;&lt;/h1&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1.내부 클래스&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;웹 프로그래밍에선 거의 사용하지 않지만 안드로이드 앱이나 PC용 자바 프로그램에서 주로 화면에서 사용자가 발생시킨 이벤트를 처리하는 용도로 사용된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;형식:&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;class 외부클래스명 {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;emsp;class 내부클래스명 {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&amp;emsp;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;내부 클래스 종류&lt;/b&gt;&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;멤버 내부 클래스 : 외부 클래스의 멤버로 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로컬 내부 클래스 : 외부 클래스의 메서드 내에서 정의된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정적 내부 클래스 : static으로 지정된 내부 클래스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;익명 내부 클래스 : 내부 클래스가 이름 없이 사용된다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;멤버 내부 클래스&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;멤버 내부 클래스는 외부 클래스의 멤버이므로 같은 클래스에 있는 다른 멤버들에 자유롭게 접근 가능&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package sec01.ex01;

public class Outter {
	private String name;
	private int age;
	
	public Outter(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	
	public int getAge() {
		return age;
	}
	
	/*
	 * public String getAddress() {	//외부 클래스에선 내부 클래스에 접근할 수 x
	 * return address;
	 */
	
	//내부 클래스
	public class Inner {
		private String address;
		
		public Inner(String address) {
			this.address = address;
		}
		
		public String getUserInfo() {
			return &quot;이름: &quot; + name + &quot;, 나이: &quot; + age + &quot;, 주소: &quot; + address;
			//내부 클래스의 메서드에서 외부 클래스 멤버에 자유롭게 접근가능
		}
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내부 클래스 인스턴스 생성&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외부클래스타입 참조변수1 = new 외부클래스 생성자();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외부클래스명.내부클래스명 참조변수2 = 참조변수1.new 내부클래스 생성자();&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;로컬 내부 클래스&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외부 클래스의 메서드 구현 블록 내에서 정의된 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package sec02.ex01;

public class Outter {
	public void startChat() {
		class ChattingThread {	//로컬 내부 클래스는 메서드 내에서 구현됨
			public void sendData() {
				System.out.println(&quot;메시지를 송신합니다.&quot;);
			}
			
			public void receiveData() {
				System.out.println(&quot;메시지를 수신합니다.&quot;);
			}
			
		}
			
			ChattingThread chat = new ChattingThread();	//내부 클래스 인스턴스 생성 후 데이터 송수신
			chat.sendData();
			chat.receiveData();
		}
		
		public static void main(String[] args) {
			Outter outter = new Outter();	//외부 클래스 인스턴스 생성
			outter.startChat();	//메서드 호출 시 로컬 내부 클래스 인스턴스가 생성된다.
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정적 내부 클래스&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static으로 지정된 클래스 : main() 메서드가 실행되면 즉시 클래스가 메모리에 생성됨&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package sec03.ex01;

public class Outter {
	private String name;
	private int age;
	
	public Outter(String name, int age) {
		this.name = name;
		this.age = age;
	}
	
	public String getName() {
		return name;
	}
	
	public int getAge() {
		return age;
	}
	
	static class Inner {
		private String address;	//인스턴스 필드
		static String tel;	//정적 필드
		
		public Inner(String address) {
			this.address = address;
		}
		
		public static String getTel() {	//정적 메서드
			return tel;
		}
		
		public String getUserInfo() {
			return &quot;주소: &quot; + address + &quot;\n&quot;
					+&quot;전화번호: &quot; + tel;
		}
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정적 내부 클래스는 프로그램 실행 시 바로 메모리에 생성되므로&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;외부클래스명.내부클래스명.멤버명&lt;/b&gt;으로 바로 접근할 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;또한 new 연산자를 이용해&amp;nbsp;&lt;b&gt;인스턴스 생성도 가능&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;실행 클래스&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;package sec03.ex01;

public class InnterTest {
	public static void main(String[] args) {
		Outter.Inner.tel = &quot;010-1111-2222&quot;;	//static 멤버는 바로 접근
		String tel = Outter.Inner.getTel();
		//Outter.Inner.address = &quot;010-1111-2222&quot;;	인스턴스 멤버 필드는 바로 접근할 수 없다.
		System.out.println(&quot;전화번호: &quot; + tel);
		
		Outter outter = new Outter(&quot;이순신&quot;, 17);
		Outter.Inner inner = new Outter.Inner(&quot;세종시 세종구&quot;);
		
		String name = outter.getName();
		int age = outter.getAge();
		
		System.out.println(&quot;고객 정보&quot;);
		System.out.println(&quot;---------------------------&quot;);
		System.out.println(&quot;이름: &quot; + name);
		System.out.println(&quot;나이: &quot; + age);
		System.out.println(inner.getUserInfo());
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;구분&lt;/span&gt; &lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;text-align: start;&quot;&gt;내부 클래스 (non-static)&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;정적 내부 클래스 (static)&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;바깥 클래스 인스턴스 필요?&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;필요함&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;필요 없음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;생성 방식&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Outer outer = new Outer();&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Outer.Inner inner = outer.new Inner();&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Outer.Inner inner = new Outer.Inner();&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;바깥 클래스 멤버 접근&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;바깥 클래스의&amp;nbsp;&lt;b&gt;인스턴스 멤버에 접근 가능&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000;&quot;&gt;바깥 클래스의&amp;nbsp;&lt;b&gt;정적 멤버에만 접근 가능&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #000000; color: #1a1a1a;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;구분내부 클래스 (non-static)정적 내부 클래스 (stati&lt;/span&gt;&lt;/div&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;color: #000000;&quot;&gt;내부 클래스는 참조변수1(outer)로 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;정적 내부 클래스는 외부 클래스(Outter)로 생성&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2.내부 인터페이스&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클래스의 멤버로 인터페이스 선언&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;static으로 지정할 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주로 화면에서 이벤트를 처리하는 용도로 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;형식:&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;class 외부클래스명{&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;static interface 인터페이스명 {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;상수;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;추상메서드();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;hellip;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Button&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;package sec04.ex01;

public class Button {
	ButtonEventListener listener;
	
	public void addButtonEventListener(ButtonEventListener listener) {
		this.listener = listener;
	}
	
	public void btnClicked(String btnName) {
		listener.btnClicked(btnName);
	}
	
	static interface ButtonEventListener {	//내부 인터페이스
		public void btnClicked(String btnName);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;내부 인터페이스를 구현한 handler 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package sec04.ex01;

public class ButtonEventHandler implement Button.ButtonEventListener{
	@Override
	public void btnClicked(String btnName) {
		System.out.println(btnName + &quot; 버튼을 클릭합니다.&quot;);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;package sec04.ex01;

public class ButtonTest {
	public static void main(String[] args) {
		Button button = new Button();
		button.addButtonEventListener(new ButtonEventHandler());
		
		button.btnClicked(&quot;등록하기&quot;);
		button.btnClicked(&quot;수정하기&quot;);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;왜 여기서 ButtonEventListener가 아니라 Handler가 들어갈까?&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;button.addButtonEventListener(new ButtonEventHandler());&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; 인터페이스는 설계도일 뿐, 생성자를 만들 수 없다&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; 대신 인터페이스를 구현한 클래스의 생성자는 만들 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;근데 만약 재사용할 필요가 없는 간결한 코드라면&amp;nbsp;&lt;b&gt;익명객체&lt;/b&gt;를 써서&lt;b&gt;&amp;nbsp;interface 생성자&lt;/b&gt;를 만들 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;익명객체&amp;nbsp;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자바 화면에서 발생하는 이벤트 처리 시 많이 사용되는 익명(anonymous) 객체&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;화면에서 버튼 클릭시 발생하는 이벤트 처리 클래스 인스턴스는 처리가 끝난 후 메모리만 차지한다는 문제점&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &amp;rarr; 재사용할 필요가 없는경우 익명객체를 쓰면 유용하다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코드가 간결하고 재사용하지 않는 경우&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;클래스 이름이 없다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인터페이스타입 참조변수 = new 인터페이스() {&amp;hellip;(구현)};&lt;/span&gt;&lt;/blockquote&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;color: #000000;&quot;&gt;구현 클래스가 필요 없다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;익명 클래스는 클래스 정의 + 인스턴스 생성을 동시에 하는 표현=&amp;gt; 하나의 &quot;문장(statement)&quot; 이기 때문에, 끝에&amp;nbsp;;(세미콜론)을 붙여야 문장이 완성된다.&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ButtonEventListener&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;package sec05.ex01;

public interface ButtonEventListener {
	public void btnClicked(String btnName);

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;ButtonEventHandler&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;package sec05.ex01;

public class ButtonEventHandler {
	Button button = new Button();
	ButtonEventListener listener = new ButtonEventListener() {	//인터페이스를 익명 객체로 구현
	@Override
	public void btnClicked(String btnName) {
		System.out.println(btnName + &quot; 버튼을 클릭합니다.&quot;);
	}
	};
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;원래 인터페이스는 생성자를 못만들지만 익명객체 즉,&amp;nbsp;동시에 정의+구현까지 하는 경우 메모리를 차지하지 않는&amp;nbsp;인터페이스 생성자를 만들 수 있다!&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Button&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package sec05.ex01;

public class Button {
	ButtonEventListener listener;
	public void addButtonEventListener(ButtonEventListener listener) {
		this.listener = listener;
	}
	
	public void btnClicked(String btnName) {
		listener.btnClicked(btnName);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실행클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;aspectj&quot;&gt;&lt;code&gt;package sec05.ex01;

public class ButtonTest {
	public static void main(String[] args) {
		ButtonEventHandler handler = new ButtonEventHandler();
		
		handler.button.btnClicked(&quot;등록하기&quot;);
		handler.button.btnClicked(&quot;수정하기&quot;);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;+) 팁&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;익명 객체가 사용되는 메서드의 매개변수와 지역변수는 반드시 final로 지정해야 한다. final로 지정하지 않으면 컴파일 시 자동으로 지정됨.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; 익명객체에서 이들 변수에 접근해서 값을 변경하면 에러 발생&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택/JAVA</category>
      <category>부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/19</guid>
      <comments>https://it-story1.tistory.com/19#entry19comment</comments>
      <pubDate>Tue, 25 Nov 2025 19:57:40 +0900</pubDate>
    </item>
    <item>
      <title>Java 기초(6)- 객체지향(2)</title>
      <link>https://it-story1.tistory.com/18</link>
      <description>&lt;h1&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;다형성&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;큰 타입 변수에 작은 타입값을 저장하면&lt;b&gt; 자동으로 큰 타입으로 변환&lt;/b&gt;되는 데, &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;비슷하게 상속 관계의 &lt;b&gt;클래스들 사이에서&lt;/b&gt;도 일어나는 변환.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;정의 :&amp;nbsp;클래스의 상속 구조에서&amp;nbsp;부모 클래스 타입 참조 변수가&amp;nbsp;자식 클래스의 인스턴스를 가리킬 수 있는 기능&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;instanceof&lt;/b&gt; 연산자가 함께 사용된다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;업캐스팅 Upcasting&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;부모 클래스 타입 변수 = 자식 클래스 타입 변수&lt;/b&gt;(or 자식 클래스 인스턴스)&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Student s = new College(&amp;rdquo;홍길동&amp;rdquo;, 2, 22) &amp;larr; s가 자식 클래스 인스턴스를 받을 수 있다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;업캐스팅된 상태에서 메서드 호출 시 JVM은 항상 하위 클래스의 오버라이딩된 메서드를 먼저 호출&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;1) 참조 변수 s1을 이용해서 Student 인스턴스의 getStudInfo() 메서드를 호출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2) JVM은 다시 자식 클래스에 오버라이딩된 getStudInfo() 메서드가 있는지 확인&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;3) 있으면 자식 클래스의 getStudInfo() 메서드를 호출&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;rarr; s가 부모 타입이므로 메서드를 호출하면 부모 클래스의 메서드가 우선 호출될거라 생각하지만 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자식 클래스에 오버라이딩된 것이 우선이다&lt;/span&gt;&lt;/div&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;다운캐스팅 Downcasting&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;업캐스팅된 상태에서 자식 클래스의 필드나 메서드에 접근하기 위해선 다시 자식 클래스 타입으로 변환해주어야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자식클래스타입변수 = (자식클래스)부모클래스타입 인스턴스&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;다형성을 이용한 학생 시험 점수 구하기&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Person&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsH1Cg/dJMcacnXFRd/ZIwsQxfdPKlYQTIDLhDt31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsH1Cg/dJMcacnXFRd/ZIwsQxfdPKlYQTIDLhDt31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsH1Cg/dJMcacnXFRd/ZIwsQxfdPKlYQTIDLhDt31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsH1Cg%2FdJMcacnXFRd%2FZIwsQxfdPKlYQTIDLhDt31%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;618&quot; height=&quot;419&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Student&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;547&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAUCgj/dJMcaf53K9P/tVI5j8eJA99xrAi6bEd7e0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAUCgj/dJMcaf53K9P/tVI5j8eJA99xrAi6bEd7e0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAUCgj/dJMcaf53K9P/tVI5j8eJA99xrAi6bEd7e0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAUCgj%2FdJMcaf53K9P%2FtVI5j8eJA99xrAi6bEd7e0%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;651&quot; height=&quot;471&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;547&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;373&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caS7f2/dJMcafkGBJD/oqKg3pWkTwOIfdBkOxTq1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caS7f2/dJMcafkGBJD/oqKg3pWkTwOIfdBkOxTq1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caS7f2/dJMcafkGBJD/oqKg3pWkTwOIfdBkOxTq1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaS7f2%2FdJMcafkGBJD%2FoqKg3pWkTwOIfdBkOxTq1k%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;1063&quot; height=&quot;373&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;373&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;606&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C22zd/dJMcafkGBJT/kE4spZeNFVIpQigstoGpb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C22zd/dJMcafkGBJT/kE4spZeNFVIpQigstoGpb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C22zd/dJMcafkGBJT/kE4spZeNFVIpQigstoGpb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC22zd%2FdJMcafkGBJT%2FkE4spZeNFVIpQigstoGpb1%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;1071&quot; height=&quot;606&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;606&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Middle&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;694&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IU9l9/dJMcabCAoGp/KqhA413RYhP20OM8mMN11k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IU9l9/dJMcabCAoGp/KqhA413RYhP20OM8mMN11k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IU9l9/dJMcabCAoGp/KqhA413RYhP20OM8mMN11k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIU9l9%2FdJMcabCAoGp%2FKqhA413RYhP20OM8mMN11k%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;952&quot; height=&quot;694&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;694&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;College&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwDUae/dJMcacVNEJi/8c3kEStRF1eJi6WpgTExk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwDUae/dJMcacVNEJi/8c3kEStRF1eJi6WpgTExk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwDUae/dJMcacVNEJi/8c3kEStRF1eJi6WpgTExk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwDUae%2FdJMcacVNEJi%2F8c3kEStRF1eJi6WpgTExk0%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;1106&quot; height=&quot;735&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;365&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yPVHX/dJMcahiu7yW/Ks6zMS8U3Ak6sfKZAjIxcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yPVHX/dJMcahiu7yW/Ks6zMS8U3Ak6sfKZAjIxcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yPVHX/dJMcahiu7yW/Ks6zMS8U3Ak6sfKZAjIxcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyPVHX%2FdJMcahiu7yW%2FKs6zMS8U3Ak6sfKZAjIxcK%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;1017&quot; height=&quot;365&quot; data-origin-width=&quot;1017&quot; data-origin-height=&quot;365&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;실행클래스&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1211&quot; data-origin-height=&quot;806&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbJ2us/dJMcaajnA5S/byOi3QhzOMP4E9VJ5kcX31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbJ2us/dJMcaajnA5S/byOi3QhzOMP4E9VJ5kcX31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbJ2us/dJMcaajnA5S/byOi3QhzOMP4E9VJ5kcX31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbJ2us%2FdJMcaajnA5S%2FbyOi3QhzOMP4E9VJ5kcX31%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;1211&quot; height=&quot;806&quot; data-origin-width=&quot;1211&quot; data-origin-height=&quot;806&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;추상 클래스&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;abstract&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;정의&amp;nbsp; : &lt;b&gt;&amp;lsquo;기능은 없고, 선언만 되어 있다&amp;rsquo;&lt;/b&gt;&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스와 메서드를 추상으로 사용&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;구현 메서드&lt;/b&gt;&amp;nbsp;: 구현부 &lt;b&gt;블록({}&lt;/b&gt;)이 있으면 구현 메서드&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;추상 메서드&lt;/b&gt;&amp;nbsp;: abstract 지정자에, &lt;b&gt;구현부 블록이 없으면&lt;/b&gt; 추상 메서드&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;추상 메서드는 단독으로 사용되는 일은 없고, 추상 클래스 내에서 사용된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;추상 클래스&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;: 클래스 선언 시 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;abstract&lt;/b&gt;&lt;/span&gt;로 지정한 클래스&lt;/span&gt;&lt;/div&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;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;더 이상 (new) 인스턴스 생성이 불가능&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;추상 메서드가 없어도 추상 클래스로 선언 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;추상 메서드가 있으면 그 클래스는 반드시 추상클래스로 선언&lt;/b&gt;해야한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;일반적으로 부모 클래스가 추상 클래스로 선언되어 업캐스팅으로 자주 사용됨&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;용도&lt;/span&gt;&lt;/b&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자식 클래스에서 구현해야할 기능을 부모 클래스의 추상 메서드의 형식을 빌려와서&lt;b&gt; 일관성 있게 구현&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;프로그램 소스 코드 구조를 일정하게 유지할 수 있으므로&amp;nbsp;&lt;b&gt;표준화 가능&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;프로그램은 개발자가 각 기능을 알아서 구현하기보다는 프로젝트의 규모가 점점 커질 것을 고려하여 유지보수나 확장성을 위해 누구나 쉽고 빠르게 소스 내용을 이해하고 관리할 수 있도록 소스의 구조를 일정하게 유지해야 한다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;강조!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;추상 클래스는 직접 인스턴스 생성은 불가능하지만, 상속받는 자식 클래스의 인스턴스를 생성하면 정상적으로 추상 클래스의 인스턴스가 메모리에 생성된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;1. Student라는 부모 클래스에&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public abstract getTeacher(); 선언&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. Middle이라는 자식 클래스에서 기능 구현&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;@Override&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public String getTeacher() {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;return &amp;ldquo;담임 선생님:&amp;nbsp; &amp;ldquo; + teacher;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;3. College 자식 클래스에서 기능 구현&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;@Override&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public String getTeacher() {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;return &amp;ldquo;지도 교수님:&amp;nbsp; &amp;ldquo; + teacher;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;4. 실행 클래스&lt;/span&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;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Student 인스턴스 생성 불가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Middle과 College의 오버라이딩한 getTeacher 메서드 호출&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;동적 로딩&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;: 특정 객체(인스턴스)가 컴파일 시에 실행 파일에 포함되지 않고, &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;프로그램 실행 중&lt;/span&gt; JVM에 의해 동적으로 메모리에 적재&lt;/b&gt;되는 방법&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;용도: &lt;b&gt;작은 메모리 용량으로도 큰 프로그램을 실행시킬 수 있음.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;JVM은 시작과 동시에 모든 클래스 인스턴스를 메모리에 생성하는 것이 아니라 해당 인스턴스를 생성하는 코드에서 동적으로 메모리에 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;그리고 &lt;b&gt;더 이상 사용되지 않으면 JVM에서 자동으로 삭제&lt;/b&gt; &amp;larr; &lt;b&gt;가비지 컬렉터(Garbage Collector)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;동적 로딩의 반대 개념 :&amp;nbsp;정적 로딩&lt;/b&gt;&amp;nbsp;(대표언어: C)&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;C언어&lt;/b&gt;로 만든 프로그램을 실행하면 모든 실행 파일의 기능이 메모리에 로드되어 항상 존재&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;&amp;rarr; &lt;b&gt;빠름&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;반면, &lt;b&gt;동적로딩은 자주 하면 실행이 느려질 수 있다.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;이 문제점을 &lt;b&gt;개선한 static&lt;/b&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Static 정적 지정자&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;: &lt;b&gt;인스턴스 생성과 상관없이 프로그램 실행 시 메모리에 필드나 메서드를 생성&lt;/b&gt;&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;static으로 지정된 멤버들은 프로그램 실행 시 자동으로 메모리에 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;종료 시 메모리에서 소멸&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;인스턴스 생성과 무관&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;지정 대상&lt;/span&gt;&lt;/b&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;필드: 인스턴스 간의 데이터 공유 시 사용 (상수)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드 : 인스턴스 생성 없이 메서드 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스 : 내부 클래스로 사용 시&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;static을 사용하는 &lt;b&gt;대표적인 경우가 main()&lt;/b&gt; 메서드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;다른 클래스에서 static으로 지정된 멤버에 &lt;b&gt;접근하려면 클래스명과 도트 연산자로 접근&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스명.필드;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스명.메서드;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+) 정적 메서드에선 같은 정적 필드에는 접근할 수 있으나, 아직 메모리에 생성되지 않은 인스턴스 필드를 사용하면 에러 발생&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;정적 메서드로 대표적인 것이 자바 API에서 제공하는 Math 클래스의 메서드들&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;싱글톤 Singleton&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;프로그램에서 한 개의 객체만 존재&lt;/b&gt;해야 할 경우 싱글톤 패턴을 이용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;작성 규칙&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;인스턴스를 생성할 클래스의 &lt;b&gt;생성자와 필드는 private&lt;/b&gt;으로 선언&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;인스턴스에 &lt;b&gt;접근할 메서드는 public으로 선언&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;외부 클래스에서는 &lt;b&gt;new를 통한 인스턴스 생성은 불가능&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;생성된 인스턴스는 &lt;span style=&quot;color: #ee2323;&quot;&gt;getInstance()&lt;/span&gt; 메서드를 통해 접근&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Earth 예제&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;cs&quot;&gt;&lt;code&gt;package sec02.ex03;

public class Earth {
	private static Earth ourEarth = null;	//싱글톤 객체의 필드는 private
	public static int EARTH_RADIUS = 6371;
	
	private Earth() {
		System.out.println(&quot;지구 객체 생성&quot;);
	}
	
	public static Earth getInstance() {	//getInstance() 메서드 호출 시 객체가 없으면 생성, 이미 존재하면 객체 위치 리턴
		if(ourEarth == null) {
			ourEarth = new Earth();
		}
		
		return ourEarth;
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;실행 클래스&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;package sec02.ex03;

public class SingletonTest {
	public static void main(String[] args) {
		//Earth myEarth = new Earth(); 싱글톤 객체는 외부에서 생성할 수 없다
		System.out.println(&quot;첫 번째 getInstance() 호출&quot;);
		Earth myEarth = Earth.getInstance();
		
		System.out.println(&quot;두 번째 getInstance() 호출&quot;);
		Earth yourEarth = Earth.getInstance();
		
		if(myEarth == yourEarth) {	//두 변수의 위치값 비교
			System.out.println(&quot;두 지구 객체는 같은 객체입니다.&quot;);
		} else {
			System.out.println(&quot;두 지구 객체는 다른 객체입니다.&quot;);
		}
		
	System.out.println(&quot;지구 반지름: &quot;+ Earth.EARTH_RADIUS + &quot;km&quot;);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;final 지정자&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;: &amp;lsquo;&lt;b&gt;금지&lt;/b&gt;&amp;rsquo;의 의미를 가지는 지정자&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스 : &lt;b&gt;상속을 금지&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드 : &lt;b&gt;오버라이딩 금지&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;필드 : &lt;b&gt;값 변경을금지 (상수&lt;/b&gt;로 지정)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;자바에서 사용되는 상수&lt;/b&gt; 형식&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;상수는 &lt;b&gt;모든 클래스 인스턴스에서 접근해야 하므로 public&lt;/b&gt; 으로 지정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;실행 시 메모리에 존재해야 하므로 static&lt;/b&gt;으로 지정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;값을 &lt;b&gt;변경할 수 없으므로 final&lt;/b&gt;로 지정&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;public static final 타입 상수명 = 값;&lt;/span&gt;&lt;/blockquote&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;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;상수명은 대문자와 &amp;ldquo;_&amp;rdquo;를 이어서 만드는 것이 관례&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;public static final int &lt;b&gt;SAFE_SPEED&lt;/b&gt; = 60;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;public static final String &lt;b&gt;SERVER_IP_ADDR&lt;/b&gt; = &amp;ldquo;192.0.0.1&amp;rdquo;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+) 참고로 자바에서 60, 3.14, &amp;ldquo;Hello&amp;rdquo;와 같이&amp;nbsp;&lt;b&gt;구체적인 값은 리터럴(literal)&lt;/b&gt;이라고 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스들 간에 데이터를 전달하는 클래스&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;VO(Value Object) 클래스&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;정의 :&amp;nbsp;&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;여러 다른 타입의 데이터를 다른 클래스로 전달 시 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;TO(Transfer Object)&lt;/b&gt;&amp;nbsp;또는&amp;nbsp;&lt;b&gt;DTO(Data Transfer Object)&lt;/b&gt;라고도 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;형식&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;필드를&amp;nbsp;&lt;b&gt;private&lt;/b&gt;로 선언&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;생성자&lt;/b&gt;를 구현&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;각 필드에 대한&amp;nbsp;&lt;b&gt;getter/setter&lt;/b&gt;를 구현&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예) MemberVO 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package member;

public class MemberVO {
	String id;
	String password;
	String name;
	String address;
	String phoneNum;
	


	public MemberVO (String id, String password, String name, String address, String phoneNum) {
		this.id = id;
		this.password = password;
		this.name = name;
		this.address = address;
		this.phoneNum = phoneNum;
	}
	
	//getter와 setter는 생략

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택/JAVA</category>
      <category>부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/18</guid>
      <comments>https://it-story1.tistory.com/18#entry18comment</comments>
      <pubDate>Tue, 18 Nov 2025 20:35:02 +0900</pubDate>
    </item>
    <item>
      <title>Java 기초(5) - 객체 지향</title>
      <link>https://it-story1.tistory.com/17</link>
      <description>&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;: 자주 사용되는 기능은 미리 만들어 놓고 필요시 처리할 데이터만 전달해 주면 쉽게 원하는 결과를 얻게 해 주는 기능 제공&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;크게&amp;nbsp;&lt;span style=&quot;background-color: #fff8a7;&quot;&gt;선언부(header)&lt;/span&gt;와&amp;nbsp;&lt;span style=&quot;background-color: #edddff;&quot;&gt;구현부(body)&lt;/span&gt;로 나눌 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;리턴타입 메서드이름([매개변수1, 매개변수2,&amp;hellip;])&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;emsp;지역변수&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;emsp;구현코드&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;emsp;리턴 문&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;emsp;&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;선언부에서 매개변수나 리턴 타입은 생략 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;구현부에서 리턴문 생략 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드 명명 규칙&lt;/span&gt;&lt;/h1&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;첫 글자는 알파벳과 특수문자 &amp;lsquo;$&amp;rsquo;, &amp;lsquo;_&amp;rsquo;만 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;대문자와 소문자 구분&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;카멜표기법 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;가능한한 기능을 잘 나타내는 동사형으로 &amp;rarr; calcScore()&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예)&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;int increase(int x)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;emsp;int result;&amp;emsp;//지역변수 : 메서드 구현 블록 내에서 선언한 변수, 구현 블록 내에서만 사용 가능&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;emsp;result = x&amp;nbsp; + 1;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&amp;emsp;return result;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package sec01.ex01;

public class MethodEx1 {
	public static void main(String[] args) {
		
		MethodEx1 m = new MethodEx1();
		m.print();
		m.print();
		m.print();
		
		System.out.println(&quot;종료&quot;);
	}
	
	public void print() {
		System.out.println(&quot;메서드를 호출합니다.&quot;);
	}
	

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;궁금한 점 : 변수와 달리 메서드는 왜 나중에 정의해도 앞에서 읽힐 수 있는가?&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자바는 순차적으로 run 실행하긴 하지만 가장 먼저 전체를 한 번 훑는다.(컴파일)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;컴파일 후에 실행을 하므로 메서드는 정의만 돼있다면 어디서든지 호출 가능&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;(변수는 값을 메모리에 저장해야하는데 먼저 변수가 쓰이고 나중에 선언이 되면 값이 없기 때문에 에러)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;background-color: #fff8a7;&quot;&gt;클래스 = 설계도&lt;/span&gt;&amp;nbsp;(자동차를 정의, 실제로 자동차가 있는 것은 아니다)&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;public class Car{&lt;br /&gt;&amp;emsp;String color;&lt;br /&gt;&amp;emsp;void drive() {&lt;br /&gt;&amp;emsp;&amp;emsp;&amp;emsp;System.out.println(&amp;rdquo;달립니다.&amp;rdquo;);&lt;br /&gt;&amp;emsp;&amp;emsp;}&lt;br /&gt;}&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;background-color: #fff8a7;&quot;&gt;인스턴스 = 클래스로부터 만들어낸 객체(object)&lt;/span&gt;, 즉, 설계도로 찍어낸 실제 물건&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Car myCar = new Car();&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;인스턴스를 생성하면 다음이 가능하다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;myCar.color = &amp;ldquo;빨강&amp;rdquo;;&amp;nbsp; &amp;rarr; 변수 값 저장 및 조작&lt;/p&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;myCar.drive(); &amp;rarr; 메서드 사용 : 자동차가 실제로 달리는 기능 수행&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Car yourCar = new Car() &amp;rarr; 여러 개 생성 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예제) 직육면체 3개 입력받아 부피값 구하기&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package sec01.ex01;
import java.util.*;

public class Test2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		Test2 m = new Test2();
		
		System.out.println(&quot;width, length, height를 입력해주세요. (공백 구분)&quot;);
		System.out.println(&quot;------------------------------------------&quot;);
		for(int i = 1; i&amp;lt;=3; i++) {
			System.out.print(&quot;직육면체&quot; + i + &quot; : &quot;);
			int width = sc.nextInt();
			int length = sc.nextInt();
			int height = sc.nextInt();
			System.out.println(&quot;직육면체&quot; + i + &quot;의 부피는 : &quot; 
			+ m.calcVolume(width, length, height));
			
		}
		
	}
	
	public int calcVolume (int width, int length, int height) {
		return width * length * height;
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예제 ) 두 수의 정수를 입력받고 사이의 정수 합 구하기&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;package sec01.ex01;
import java.util.*;

public class Test3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		Test3 m = new Test3();
		
		System.out.println(&quot;두 정수를 입력하세요.&quot;);
		System.out.print(&quot;시작 정수 : &quot;);
		int start = sc.nextInt();
		System.out.print(&quot;끝 정수 : &quot;);
		int end = sc.nextInt();
		m.sum(start, end);
		
	}
	
	public void sum(int start, int end) {
		int sum =0;
		for(int i = start + 1; i &amp;lt;end; i++) {
			sum += i;
		}
		System.out.println(&quot;--------------결과 출력--------------&quot;);
		System.out.println(start + &quot;와 &quot; + end + &quot;사이의 정수들의 합 : &quot; + sum);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;start와 end 수를 받아서 sum이라는 int를 리턴하는 메서드만 생각했는데,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;void로 지정해서 sysout으로 출력하는 기능을 넣을 수도 있구나!&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;문제4) 배열의 평균(실수형)을 구하는 메서드&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;package sec01.ex01;
import java.util.*;

public class Test4 {
	public static void main(String[] args) {
		
		Test4 m = new Test4();
		
		int[] score1 = {45,67,78,89,91};
		int[] score2 = {62,65,76,77,88};
		
		System.out.println(&quot;score1의 평균 : &quot; + m.average(score1));
		System.out.println(&quot;score2의 평균 : &quot; + m.average(score2));
		
	}
	
	public double average(int[] arr) {
		double average = 0;
		int sum = 0;
		for(int i =0; i&amp;lt;arr.length; i++) {
			sum += arr[i];
		}
		
		average = sum/(double)arr.length;
		
		return average;
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;절차 지향 프로그래밍&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;일을 처리하는 순서와 과정이 중요&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;순서, 과정이 달라지면 새로운 작업 모델이 필요&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;컴퓨터의 작업 방식을 프로그래밍에 적용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;기존 코드의 재사용성이 매우 낮음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;객체 지향 프로그래밍&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/h1&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;사람이 생각하고 행동하는 방식으로 프로그래밍&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;순서, 과정이 중요하지 않음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;이해하기 쉽고, 모듈화(조립화)가 쉽다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;기존 코드의 재사용성이 높고, 유지보수가 용이&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;설계 중심 언어&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;객체 지향 프로그래밍에서 자동차의 각각의 기능을 수행하는 부품이 클래스&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;각 기능을 클래스로 나누어 개발한 후 조립한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;결론적으로 객체 지향 프로그래밍은 현실의 객체를 코드화(클래스화)시켜서 컴퓨터 시스템에서 실행되는 가상현실을 만드는 과정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;단계&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;아이디어 도입 : 구현할 대상을 정한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;아이디어 분석 : 주체의 관점에서 대상 분석&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #fedede; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;객체 추출 후 속성과 기능 찾기&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;background-color: #fedede;&quot;&gt;객체 모델링&lt;/span&gt;&amp;nbsp;: 개발자 관점에서 객체의 속성과 행위를 정제한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;background-color: #fedede;&quot;&gt;클래스 변환&lt;/span&gt;&amp;nbsp;: 객체를 클래스로 변환한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;인스턴스 생성 및 사용&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;= 객체 모델링을 통해 추출된 객체의&amp;nbsp;&lt;span style=&quot;background-color: #fedede;&quot;&gt;속성&lt;/span&gt;과&amp;nbsp;&lt;span style=&quot;background-color: #d8ecfd;&quot;&gt;기능&lt;/span&gt;을&amp;nbsp; &amp;rarr;&amp;nbsp;&lt;span style=&quot;background-color: #fedede;&quot;&gt;필드&lt;/span&gt;와&amp;nbsp;&lt;span style=&quot;background-color: #d8ecfd;&quot;&gt;메서드&lt;/span&gt;로 변환한 것.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;설계도(붕어빵 틀) &amp;rarr; 이 틀을 가지고 만들어내는게 인스턴스(실제 객체)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스명 작성 규칙&lt;/span&gt;&lt;/b&gt;&lt;/h4&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스명의 첫 글자는 반드시 대문자이어야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;하나 이상의 단어로 이루어져야한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;첫 글자는 숫자가 사용될 수 없다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;lsquo;_&amp;rsquo;, &amp;lsquo;$&amp;rsquo; 외의 특수 문자를 사용할 수 없다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자바 키워드나 자바에서 제공하는 클래스명은 사용할 수 없다.(MyString(O), String(x))&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;접근제한자 종류&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+: public&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;#: protected&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;-: private&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;필드&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;필드는 &lt;b&gt;클래스 내에 선언된 변수&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;멤버 변수, 속성(attribute)&lt;/b&gt;라고도 부른다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;접근 : 도트(.)연산자&lt;/b&gt;를 사용하여 접근한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;필드의 타입에 따른 기본 초기값 :&amp;nbsp;0, false, null&amp;hellip;정도이다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;필드와 지역(로컬) 변수의 차이점&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div style=&quot;background-color: #000000; color: #1a1a1a;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; width: 13.4884%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; height: 17px; width: 27.2093%;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;지역변수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #d6ffb8; color: #1a1a1a; height: 17px; width: 40.9302%;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;필드&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; width: 13.4884%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;선언 위치&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; height: 17px; width: 27.2093%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드나 생성자 블록&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #d6ffb8; color: #1a1a1a; height: 17px; width: 40.9302%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스 블록&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; width: 13.4884%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메모리 생성 시점&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; height: 17px; width: 27.2093%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드나 생성자 호출 시 생성&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #d6ffb8; color: #1a1a1a; height: 17px; width: 40.9302%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;인스턴스 생성 시 생성&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; width: 13.4884%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메모리 소멸 시점&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; height: 17px; width: 27.2093%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드나 생성자 종료 시 소멸&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #d6ffb8; color: #1a1a1a; height: 17px; width: 40.9302%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;인스턴스가 메모리에서 삭제 시 소멸&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; width: 13.4884%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;접근 범위&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #ffe4fb; color: #1a1a1a; height: 17px; width: 27.2093%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드나 생성자&amp;nbsp;&lt;b&gt;내부에서만 접근 가능&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;background-color: #d6ffb8; color: #1a1a1a; height: 17px; width: 40.9302%;&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스 내부와 클래스&amp;nbsp;&lt;b&gt;외부에서 접근 가능&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드는 &lt;b&gt;객체의 기능&lt;/b&gt;이 변환되어 구현된다&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;실행 클래스&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스들을 조립하는 기능&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;main() 메서드를 포함&lt;/b&gt;하고 있으므로 가장 먼저 실행된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;생성자&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;인스턴스 생성 시 new&lt;/b&gt; 다음에 &amp;lsquo;클래스명()&amp;rsquo;이라고 썼는데 이것이 &lt;b&gt;생성자(기본 생성자)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;즉, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스 인스턴스를 메모리에 생성하려면 생성자를 호출해야 한다.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;생성자 정의&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;최초로 호출되면서 클래스 인스턴스를 생성한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;반드시 클래스명과 동일해야 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;특징&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드와 비슷한 기능을 가진다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #fedede; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;리턴 타입이 없다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;생성자를 구현해 주지 않으면 컴파일러가 컴파일 시 자동으로 기본 생성자를 추가&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;직접 생성자를 구현해준 경우 컴파일러는 더 이상 기본 생성자를 자동으로 추가해 주지 않는다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;background-color: #fedede;&quot;&gt;생성자를 직접 구현할 경우 기본 생성자를 함께 만들어주는 것을 습관화하는 것이 좋다!&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;오버로딩 over loading&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;클래스 이름을 재사용&lt;/b&gt;&lt;/span&gt;해 여러 개의 생성자가 존재할 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;반드시 매개 변수의 타입, 개수, 순서가 달라야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;메서드 오버로딩 또한 마찬가지&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+) 리턴 타입만 다르면 같은 메서드로 인식한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;패키지&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스들을 기능별로 묶어서 관리&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;패키지의 물리적인 형태는 파일 시스템의 폴더로 나타낸다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fedede; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;package 상위패키지명.하위패키지명;&lt;/span&gt;&lt;/b&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;최상단에 한 번만 선언해야 한다&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;숫자로 시작하면 안되고 &amp;lsquo;_&amp;rsquo;, &amp;lsquo;$&amp;rsquo; 이외의 특수문자를 사용해선 안된다&lt;/b&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;소문자로 작성&lt;/b&gt;하는 것이 관례&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예)&amp;nbsp;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.oracle.com&quot;&gt;www.oracle.com&lt;/a&gt;&amp;nbsp;이라는 도메인명을 사용하는 회사에서 개발하는 프로그램에 대한 패키지명을 만들때 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;도메인명을 역순으로 배열&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;rarr;&amp;nbsp;&lt;u&gt;com.oracle.프로젝트명.기능명.클래스명&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;import문&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;다른 패키지에 있는 클래스를 이용하려면 import문 작성&lt;/b&gt;하여 미리 선언&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;*: 해당 패키지의 모든 클래스들을 컴파일 시 import&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;기본 타입 변수&lt;/b&gt; : 변수에 &lt;b&gt;실제 값&lt;/b&gt;을 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;참조 타입 변수&lt;/b&gt; : 변수에 인스턴스의 &lt;b&gt;위치값&lt;/b&gt;을 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;참조 타입 변수를 null로 초기화하면&lt;/b&gt; 어떤 인스턴스도 위치값도 지정되지 않았으므로 &lt;b&gt;예외 발생&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;background-color: #fff8a7; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+) &lt;b&gt;같은 파일에 다른 클래스 작성 시 public으로 선언하지 않고 작성해야 한다.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;문자열 매개변수&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자바에서 매개변수 타입이 문자열인 경우 예외적으로&lt;b&gt; 기본 타입 매개변수처럼 동작&lt;/b&gt;한다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;문자열은 &lt;b&gt;참조 타입(String 객체)&lt;/b&gt; 이지만 &lt;b&gt;불변(immutable)&lt;/b&gt; 이라서 기본타입처럼 보이는 것 &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;기본 타입 매개변수의 경우&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;public void changeValue(int num) {
    num = 100;
}

//호출시
int x = 10;
changeValue(x);
System.out.println(x);  // 10&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;x의 복사본 값 10이 전달되므로 num을 변경해도 x는 변하지 않는다!&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;참조 타입 매개변수 경우&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;public void changeArray(int[] arr) {
    arr[0] = 100;
}

//호출 시 
int[] nums = {1, 2, 3};
changeArray(nums);
System.out.println(nums[0]);  // 100&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;nums의 주소가 전달되므로 배열 값을 변경하면 원본도 바뀐다.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;String은 왜 &amp;lsquo;예외적으로&amp;rsquo; 기본 타입&lt;b&gt;처럼&lt;/b&gt; 동작할까?&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;불변 객체(immutable)&lt;/b&gt;이기 때문! &amp;rarr; 내부값 변경 불가, 다른 객체 참조시 원본에 영향 없음.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자바에서 String은 참조형이지만 실제로는 마치 값 타입처럼 동작한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스 실습&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;car, main, member,res 4개의 패키지 생성 후&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;각 패키지에 하나씩 클래스 생성 (Car, RentCarApp, Member, Reserve 생성)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;RestCarApp (main)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package main;

import car.Car;
import member.Member;
import res.Reserve;

public class RentCarApp {
	public static void main(String[] arg) {
		//회원, 차, 예약 인스턴스 생성
		
		Member member = new Member();
		Car car = new Car();
		Reserve reserve = new Reserve();
		
		//회원, 차, 예약 정보 등록
		member.regMember(&quot;lee&quot;, &quot;1234&quot;, &quot;이순신&quot;, &quot;서울시 도봉구&quot;, &quot;010-1111-2222&quot;);
		car.regCarInfo(&quot;11가 1111&quot;, &quot;소나타&quot;, &quot;검정&quot;, 2000, &quot;현대&quot;);
		reserve.resCar(&quot;20220708&quot;, &quot;11가1111&quot;, &quot;2020-04-30&quot;, &quot;2020-05-01&quot;, &quot;2020-05-08&quot;);
		
		//회원 정보 조회
		String memberInfo = member.viewMember();
		System.out.println(memberInfo);
		
		//렌터카 정보 조회
		String carInfo = car.checkCarInfo();
		System.out.println(carInfo);
		
		//예약 정보 조회
		String resInfo = reserve.checkResInfo();
		System.out.println(resInfo);
		
		//회원, 차, 예약 정보 수정
		
		//회원, 차 예약 정보 삭제
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Car&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package car;

public class Car {
	String carNumber;
	String carName;
	String carColor;
	int carSize;
	String carMaker;
	
	//생성자
	public Car() {
		
	}
	
	public Car(String _carNumber, String _carName, String _carColor, int _carSize, String _carMaker) {
		carNumber = _carNumber;
		carName = _carName;
		carColor = _carColor;
		carSize = _carSize;
		carMaker = _carMaker;
	}
	
	//차 정보 조회
	public String checkCarInfo() {
		System.out.println(&quot;\n렌터카 정보를 조회합니다.&quot;);
		System.out.println(&quot;---------------------------&quot;);
		String carInfo = &quot;차 번호: &quot; + carNumber
						+&quot;\n차 이름: &quot; + carName
						+&quot;\n차 색상: &quot; + carColor
						+&quot;\n차 크기: &quot; + carSize
						+&quot;\n차 제조사: &quot; + carMaker;
		return carInfo;
	}
	
	//차 정보 등록
	public void regCarInfo(String _carNumber, String _carName, String _carColor, int _carSize, String _carMaker) {
		System.out.println(&quot;차 정보를 등록합니다.&quot;);
		carNumber = _carNumber;
		carName = _carName;
		carColor = _carColor;
		carSize = _carSize;
		carMaker = _carMaker;
	}
	
	//차 정보 수정
	public void modCarInfo() 	{
		System.out.println(&quot;\n렌터카 정보를 수정합니다.&quot;);
	}
	
	//차 정보 삭제
	public void delCarInfo() 	{
		System.out.println(&quot;\n\n렌터카 정보를 삭제합니다.&quot;);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Member&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package member;

public class Member {
	String id;
	String password;
	String name;
	String adress;
	String phoneNum;
	
	//생성자
	public Member() {
		
	}
	
	public Member(String _id, String _password, String _name, String _adress, String _phoneNum) {
		id = _id;
		password = _password;
		name = _name;
		adress = _adress;
		phoneNum = _phoneNum;
	}
	
	//회원정보 조회
	public String viewMember() {
		System.out.println(&quot;\n회원정보를 조회합니다.&quot;);
		System.out.println(&quot;-----------------------&quot;);
		String memberInfo = &quot;아이디: &quot; + id
							+&quot;\n비밀번호: &quot; + password
							+&quot;\n이름: &quot; + name
							+&quot;\n주소: &quot; + adress
							+&quot;\n전화번호: &quot; + phoneNum;
		return memberInfo;
	}
	
	//회원정보 등록
	public void regMember(String _id, String _password, String _name, String _adress, String _phoneNum) {
		System.out.println(&quot;회원 가입합니다.&quot;);
		id = _id;
		password = _password;
		name = _name;
		adress = _adress;
		phoneNum = _phoneNum;
	}
	
	//회원정보 수정
	public void modMember() {
		System.out.println(&quot;\n회원정보를 수정합니다.&quot;);
	}
	
	//회원정보 삭제
	public void delMember() {
		System.out.println(&quot;\n\n회원정보를 삭제합니다.&quot;);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Reserve&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package res;

public class Reserve {
	String resNumber;
	String resCarNumber;
	String resDate;
	String useBeginDate;
	String useEndDate;

	public Reserve() {
		
	}
	
	public Reserve(String _resNumber, String _resCarNumber, String _resDate, String _useBeginDate, String _useEndDate) {
		resNumber = _resNumber;
		resCarNumber = _resCarNumber;
		resDate = _resDate;
		useBeginDate = _useBeginDate;
		useEndDate = _useEndDate;
	}
	
	//차 예약 정보 조회 가능
	public String checkResInfo() {
		System.out.println(&quot;\n차 예약 정보를 조회합니다.&quot;);
		System.out.println(&quot;----------------------&quot;);
		String resInfo = &quot;예약 번호 : &quot; +  resNumber
						+&quot;\n예약 차 번호 : &quot; + resCarNumber
						+&quot;\n예약일자 : &quot; + resDate
						+&quot;\n차 사용 시작 일자 : &quot; + useBeginDate
						+&quot;\n차 반납 예정 일자 : &quot; + useEndDate;
		return resInfo;
	}
	
	//차 예약 기능
	public void resCar(String _resNumber, String _resCarNumber, String _resDate, String _useBeginDate, String _useEndDate) {
		System.out.println(&quot;차 예약 정보를 등록합니다.&quot;);
		resNumber = _resNumber;
		resCarNumber = _resCarNumber;
		resDate = _resDate;
		useBeginDate = _useBeginDate;
		useEndDate = _useEndDate;
		}
	
	//차 예약 정보 수정
	public void modResInfo() {
		System.out.println(&quot;\n차 예약 정보를 수정합니다.&quot;);
	}
	
	//차 예약 정보 취소 기능
	public void delResInfo() {
		System.out.println(&quot;\n\n차 예약을 취소합니다.&quot;);
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스 사이의 관계&lt;/span&gt;&lt;/b&gt;&lt;/h1&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;is-a&lt;/b&gt; 관계 : 한 클래스가 다른 클래스를 구체적으로 설명한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;use- a&lt;/b&gt; 관계 :&amp;nbsp; 클래스가 다른 클래스를 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;has-a&lt;/b&gt; 관계 : 다른 클래스를 소유하는 관계&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;더 많은 관계들이 존재&amp;hellip;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스 상속&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;정의&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;is-a 관계&lt;/b&gt;&lt;/span&gt;가 성립되는 클래스 관계가 변환된 것&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;특정 클래스가 가지는 속성과 기능을 다른 클래스가 사용할 수 있게&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;용도&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;다른 클래스의 속성과 기능을 재사용&lt;/b&gt; 가능하다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;중복 코드 제거&lt;/b&gt; &amp;rarr; 가독성과 유지보수성이 높아지고 개발 기간 단축&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;만드는 법&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;일반화&lt;/b&gt; : &lt;b&gt;공통점을 모아 놓은 클래스가 부모 클래스&lt;/b&gt;가 된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;전문화&lt;/b&gt; : 특정 클래스에서 각각의 하위 클래스로 분화 (자동차 &amp;rarr; 승용차, 버스, 트럭)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;형식&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fedede; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;extends 키워드&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+) &lt;b&gt;자바는 단일 상속만 지원하고, 다중 상속은 지원하지 않는다.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;생성자는 상속되지 않는다.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;일반적으로 부모 클래스 필드는 protected 접근 제한자 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Student라는 부모 클래스를 만들고&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Middle과 College라는 자식 클래스를 만든다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;이때 자식 클래스의 생성자를 호출하면 자동으로 부모 클래스의 생성자르 먼저 호출해서 부모 클래스의 인스턴스 생성 후, 자식 클래스 인스턴스가 생성된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Student 생성자 호출&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Student 인스턴스 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;College 생성자 호출&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;College 인스턴스 생성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fedede; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;(부모 인스턴스가 먼저 생성된 후, 자식 인스턴스가 생성된다)&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+) &lt;b&gt;UML(Unified Modeling Language)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;= 소프트웨어를 설계할 때 사용하는 표준화된 시각적 언어&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;그 중에서도 &amp;ldquo;클래스 다이어그램&amp;rdquo;이 가장 많이 쓰이며, 그 안에 클래스 계층도가 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스 계층도 = 상속관계를 트리구조로 보여주는 다이어그램&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예)&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;class Animal { }

class Dog extends Animal { }

class Cat extends Animal { }

class Bulldog extends Dog { }&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;rarr;&lt;b&gt; UML 클래스 계층도&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Animal&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;emsp;&amp;emsp;&amp;nbsp; ▲&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp;┌────┴────┐&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;Dog&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Cat&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; ▲&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Bulldog&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;UML 클래스 계층 구조는 사용자 입장에서 쉽게 이해하기 위한 표현일 뿐&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt; 실제 메모리에선 &lt;span style=&quot;background-color: #fedede;&quot;&gt;각각의 하위 클래스에 대해서 부모 클래스 인스턴스가 생성된다.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;(자식 인스턴스들이 메모리에서 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;부모 인스턴스를 공유하는 것이 아님&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;클래스 계층도를 그릴 수 있는 도구들:&lt;/span&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;StarUML&lt;/b&gt;&amp;nbsp;(많이 쓰는 설계 툴)&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;PlantUML&lt;/b&gt;&amp;nbsp;(코드로 UML 그리기)&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Lucidchart&lt;/b&gt;,&amp;nbsp;&lt;b&gt;draw.io&lt;/b&gt;&amp;nbsp;(웹 기반 다이어그램 도구)&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;super&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자식 클래스에서 부모 클래스 인스턴스를 가리킬 때 사용하는 키워드&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;명시적으로 호출하지 않으면 컴파일 시 컴파일러가 자동으로 super() 추가&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;반드시 생성자의 첫 줄에 작성해야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;this&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;자기 자신의 인스턴스&lt;/b&gt;를 가리킬 때 사용&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자신의 다른 생성자 호출(생성자 첫 줄에서)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자신의 필드 호출&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;오버라이딩 메서드&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;메서드의 이름만 빌려&lt;/b&gt;온 후, 매서드의 구&lt;b&gt;현은 자식 클래스에서 재정의&lt;/b&gt;해서 사용&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;매서드의 이름, 리턴 타입, 매개변수(순서 개수, 타입)이 동일&lt;/b&gt;해야&amp;nbsp; 한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;static, final, private가 지정된 메서드는 오버라이딩 할 수 없다.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;@Override&lt;/b&gt; &lt;/span&gt;어노테이션(annotation)은 생략 가능하지만 가독성을 위해 적는다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;오버라이딩 메서드의 접근 제한자&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;일반적으로 부모 메서드의 접근 제한자를 그대로 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #fff8a7; font-family: 'Nanum Gothic';&quot;&gt;단, 변경하는 경우 부모 메서드의 접근 제한자보다 더 넓은 접근을 허용하는 제한자만 가능&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예시 : 도형의 넓이를 구하는 오버라이딩 메서드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;부모 클래스 Shape&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0pMYn/dJMcadG7YHu/8NUhe7b9hMKN6zjLyWrgN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0pMYn/dJMcadG7YHu/8NUhe7b9hMKN6zjLyWrgN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0pMYn/dJMcadG7YHu/8NUhe7b9hMKN6zjLyWrgN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0pMYn%2FdJMcadG7YHu%2F8NUhe7b9hMKN6zjLyWrgN1%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;573&quot; height=&quot;309&quot; data-origin-width=&quot;934&quot; data-origin-height=&quot;309&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Rect&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;209&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3h2wN/dJMcadtALFw/TnOSAGSo6HtFNEjLmjsYck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3h2wN/dJMcadtALFw/TnOSAGSo6HtFNEjLmjsYck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3h2wN/dJMcadtALFw/TnOSAGSo6HtFNEjLmjsYck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3h2wN%2FdJMcadtALFw%2FTnOSAGSo6HtFNEjLmjsYck%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;546&quot; height=&quot;158&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;209&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;Tri&lt;/b&gt; &amp;larr; override 사용 (사용하지 않으면 실행 클래스가 복잡해진다)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3U4kS/dJMcabP4U72/2vkilDAbw358kmmPOqC970/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3U4kS/dJMcabP4U72/2vkilDAbw358kmmPOqC970/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3U4kS/dJMcabP4U72/2vkilDAbw358kmmPOqC970/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3U4kS%2FdJMcabP4U72%2F2vkilDAbw358kmmPOqC970%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;444&quot; height=&quot;251&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;실행 클래스&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;656&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pr0aV/dJMcagqjHHX/JaXq1nmePUf5nsICaNK1jK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pr0aV/dJMcagqjHHX/JaXq1nmePUf5nsICaNK1jK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pr0aV/dJMcagqjHHX/JaXq1nmePUf5nsICaNK1jK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPr0aV%2FdJMcagqjHHX%2FJaXq1nmePUf5nsICaNK1jK%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;531&quot; height=&quot;392&quot; data-origin-width=&quot;656&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;접근 제한자&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;아무것도 지정하지 않으면 default&lt;/b&gt; 제한자로 지정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;정의 : 클래스와 클래스의 멤버(필드, 메서드, 생성자)에 접근하는 범위를 제한하는 용도로 사용하는 지정자&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;public&lt;/b&gt; : 모든 외부 클래스에서 접근 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;protected&lt;/b&gt; : 같은 패키지에 있는 클래스와 상속 관계의 클래스들만 접근 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;default&lt;/b&gt; : 같은 패키지에 있는 클래스만 접근 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;private&lt;/b&gt; : 같은 클래스 내에서만 접근 가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;캡슐화&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;객체 지향 개념 중에 하나&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;정의 :&amp;nbsp;&lt;b&gt;접근 지정자&lt;/b&gt;를 사용하여 클래스의 필드나 메서드에&amp;nbsp;&lt;b&gt;접근하는 방법을 일정하게 함&lt;/b&gt;으로써프로그램이 일관성있게 동작 및 관리되도록 한다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;(사용자가 임의로 조작하는 것을 배제)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;캡슐화를 사용하지 않을때&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wq82Q/dJMcahpd2UC/QKkZIzAKSojoK7mpNifiR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wq82Q/dJMcahpd2UC/QKkZIzAKSojoK7mpNifiR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wq82Q/dJMcahpd2UC/QKkZIzAKSojoK7mpNifiR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwq82Q%2FdJMcahpd2UC%2FQKkZIzAKSojoK7mpNifiR0%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;332&quot; height=&quot;211&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;765&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbdjBm/dJMcahismuI/J7Ar2eszKrk9CbBm2kzOG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbdjBm/dJMcahismuI/J7Ar2eszKrk9CbBm2kzOG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbdjBm/dJMcahismuI/J7Ar2eszKrk9CbBm2kzOG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbdjBm%2FdJMcahismuI%2FJ7Ar2eszKrk9CbBm2kzOG0%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;556&quot; height=&quot;295&quot; data-origin-width=&quot;765&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;rarr; 이렇게 되면 + 자리에 실수로 *를 넣을 수도 있고 코드 자체가 복잡해진다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;하지만 &lt;b&gt;캡슐화를 사용&lt;/b&gt;하면&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lqGA3/dJMcagKCmND/zKsWPik4KvU7C6OBxELScK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lqGA3/dJMcagKCmND/zKsWPik4KvU7C6OBxELScK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lqGA3/dJMcagKCmND/zKsWPik4KvU7C6OBxELScK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlqGA3%2FdJMcagKCmND%2FzKsWPik4KvU7C6OBxELScK%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;487&quot; height=&quot;422&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Data의 x, y값을 private으로 만들어서 메서드로 간접접근할 수 있도록 한다.&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;cs&quot;&gt;&lt;code&gt;package sec04.ex02;

public class DateTest {
	public static void main(String[] args) {
		Data d = new Data(5,5);
		d.setValue();&amp;emsp;//메서드를 통해 value에 값을 저장
		int value = d.getValue();&amp;emsp;//메서드를 통해 값을 가지고 온다
		System.out.println(&quot;value = &quot; + value);
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;즉, 사용자는 내부의 세부적인 사항은 모르더라도 정해진 규칙대로만 실행문을 작성하면 원하는 기능을 얻을 수 있게 만든다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;이렇게 클래스의 필드에 접근할 땐 메서드를 통해 간접접근하는 것이 일반적.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;이때 사용되는 메서드를 getter/setter 메서드&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;getter &amp;amp; setter&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #000000; color: #1a1a1a;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;charAt(i)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;문자열에서 i번째&amp;nbsp;&lt;b&gt;문자 하나 반환&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #000000; color: #1a1a1a;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;indexOf(&quot;a&quot;)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&quot;a&quot;라는 문자의&amp;nbsp;&lt;b&gt;위치 반환&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #000000; color: #1a1a1a;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;substring(a,b)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;a부터 b 전까지&amp;nbsp;&lt;b&gt;문자열 잘라내기&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;get, set 메서드 활용해서 주민번호 &amp;ldquo;*&amp;rdquo; 처리해서 불러오기 예제&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;755&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ynHqC/dJMcacnUQvu/G1gkYtP7t6KJnWkKRHLUU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ynHqC/dJMcacnUQvu/G1gkYtP7t6KJnWkKRHLUU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ynHqC/dJMcacnUQvu/G1gkYtP7t6KJnWkKRHLUU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FynHqC%2FdJMcacnUQvu%2FG1gkYtP7t6KJnWkKRHLUU0%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;589&quot; height=&quot;755&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;755&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;648&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LiK2J/dJMcaajkJ3n/cf8zU5KgfTQqVGc4FOpVek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LiK2J/dJMcaajkJ3n/cf8zU5KgfTQqVGc4FOpVek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LiK2J/dJMcaajkJ3n/cf8zU5KgfTQqVGc4FOpVek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLiK2J%2FdJMcaajkJ3n%2Fcf8zU5KgfTQqVGc4FOpVek%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;589&quot; height=&quot;422&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;648&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;실행문&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byHJsz/dJMcabWQweD/gzTNVjoljPJNAwlaPtFvNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byHJsz/dJMcabWQweD/gzTNVjoljPJNAwlaPtFvNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byHJsz/dJMcabWQweD/gzTNVjoljPJNAwlaPtFvNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyHJsz%2FdJMcabWQweD%2FgzTNVjoljPJNAwlaPtFvNk%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;532&quot; height=&quot;434&quot; data-origin-width=&quot;605&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;자동차를 이용한 상속 실습&lt;/span&gt;&lt;/b&gt;&lt;/h1&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Car 클래스&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;arduino&quot;&gt;&lt;code&gt;package sec05.ex01;

public class Car {
	
	protected String carName;
	protected String carNumber;
	protected String carColor;
	protected int velocity;
	protected int carSize;
	
	public Car() {
		System.out.println(&quot;Car 클래스 생성자 호출&quot;);
	}
	
	public void speedUp(int speed) {
		velocity += speed;
	}
	
	public void speedDown(int speed) {
		velocity -= speed;
	}
	
	public void stop() {
		velocity = 0;
	}
	
	//차 정보를 출력하는 메서드
	public String getCarInfo() {
		return &quot;차 이름: &quot; + carName + 
				&quot;, 차 번호: &quot; + carNumber +
				&quot;, 차 색상: &quot; + carColor +
				&quot;, 속도: &quot; + velocity + &quot;km/h&quot; +
				&quot;, 차 크기: &quot; + carSize + &quot;cc&quot;;
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Sedan 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;package sec05.ex01;

public class Sedan extends Car{
	public Sedan(String carName, String carNumber, String carColor, int velocity, int carSize) {
		System.out.println(&quot;Sedan 클래스 생성자 호출&quot;);
		super.carName = carName;
		super.carNumber = carNumber;
		super.carColor = carColor;
		super.velocity = velocity;
		super.carSize = carSize;
		
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Truck 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;package sec05.ex01;

public class Truck extends Car{
	private int load;	//적재화물량
	
	public Truck(String carName, String carNumber, String carColor, int carSize, int velocity, int load) {
		
		System.out.println(&quot;Truck 클래스 생성자 호출&quot;);
		super.carName = carName;
		super.carNumber = carNumber;
		super.carColor = carColor;
		super.velocity = velocity;
		super.carSize = carSize;
		this.load = load;
	}
	
	public int getLoad() {
		return load;
	}
	
	public void setLoad(int load) {
		this.load = load;
	}
	
	//화물을 운반하는 메서드
	public void carryLoad() {
		if (load &amp;gt;0) {
			load ++;
		} else {
			load = 0;
		}
	}
	
	@Override
	public String getCarInfo() {
		return &quot;차 이름: &quot; + carName + 
				&quot;, 차 번호: &quot; + carNumber +
				&quot;, 차 색상: &quot; + carColor +
				&quot;, 속도: &quot; + velocity + &quot;km/h&quot; +
				&quot;, 차 크기: &quot; + carSize + &quot;cc&quot; +
				&quot;, 적재량: &quot; + getLoad() + &quot;톤&quot;;
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Bus 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;java&quot;&gt;&lt;code&gt;package sec05.ex01;

public class Bus extends Car {
	private int passenger;	//승객 수
	private int fee;
	
	public Bus(String carName, String carNumber, String carColor,
			int carSize, int velocity, int passenger, int fee) {
		
		System.out.println(&quot;Bus 클래스 생성자 호출&quot;);
		super.carName = carName;
		super.carNumber = carNumber;
		super.carColor = carColor;
		super.velocity = velocity;
		super.carSize = carSize;
		this.passenger = passenger;
		this.fee = passenger * fee;
	}
	
	public int getPassenger() {
		return passenger;
	}
	
	public void setPassenger(int passenger) {
		this.passenger = passenger;
	}
	
	public int getFee() {
		return fee;
	}
	
	public void setFee(int fee) {
		this.fee = fee;
	}
	
	//승객을 태우는 메서드
	public void ridePassenger() {
		if(passenger &amp;gt; 0) {
			passenger++;
			fee += 1000;
		}
	}
	
	public void ridePassenger(int newPassenger) {
		if(passenger &amp;gt; 0) {
			passenger+= newPassenger;
			fee += newPassenger * 1000;
		}
	}
	
	@Override
	
	public String getCarInfo() {
		return &quot;차 이름: &quot; + carName + 
				&quot;, 차 번호: &quot; + carNumber +
				&quot;, 차 색상: &quot; + carColor +
				&quot;, 속도: &quot; + velocity + &quot;km/h&quot; +
				&quot;, 차 크기: &quot; + carSize + &quot;cc&quot;+ 
				&quot;, 승객 수: &quot; + getPassenger() +&quot;명, 승차 요금: &quot; + getFee() + &quot;원&quot;;
	}
	

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;실행 클래스&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;package sec05.ex01;

public class CarTest {
	public static void main(String[] args) {
		
		//1. 변수 선언
		Sedan myCar = null;
		Truck truck = null;
		Bus bus = null;
		
		//2. 인스턴스 생성
		myCar = new Sedan(&quot;아반떼&quot;, &quot;111가 1111&quot;, &quot;은색&quot;, 60, 2000);
		truck = new Truck(&quot;1톤 포터&quot;, &quot;222나 2222&quot;, &quot;청색&quot;, 3000, 60, 1);
		bus = new Bus(&quot;1001번 버스&quot;, &quot;333다 3333&quot;, &quot;노란색&quot;, 4000, 60, 20, 1000);
		
		//3.메서드 호출
		System.out.println(myCar.getCarInfo());
		System.out.println(truck.getCarInfo() + &quot;, 적재량: &quot; + truck.getLoad() + &quot;톤&quot;);
		System.out.println();
		
		truck.speedUp(10);
		truck.carryLoad();
		
		System.out.println(&quot;트럭과 버스 정보를 출력&quot;);
		System.out.println(truck.getCarInfo());
		System.out.println(bus.getCarInfo() );
		
		//승객 여러명 탑승 후 버스 정보
		System.out.println(&quot;\n승객 여러명 탑승 : 메서드 오버로딩 이용&quot;);
		bus.ridePassenger(10);
		System.out.println(bus.getCarInfo());
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택/JAVA</category>
      <category>부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/17</guid>
      <comments>https://it-story1.tistory.com/17#entry17comment</comments>
      <pubDate>Wed, 12 Nov 2025 23:03:58 +0900</pubDate>
    </item>
    <item>
      <title>Java 기초(4) - 배열</title>
      <link>https://it-story1.tistory.com/16</link>
      <description>&lt;h1&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;배열&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;background-color: #fedede;&quot;&gt;같은 타입의 데이터를 한꺼번에 다룰 수 있는 방법&lt;/span&gt;을 배열로 제공&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;배열은 크게 &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;background-color: #fedede;&quot;&gt;1차원 배열&amp;nbsp;&lt;/span&gt;&amp;nbsp;(기본 타입 배열, 참조 타입 배열)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #fedede;&quot;&gt;&amp;nbsp;다차원 배열 &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(기본 타입 배열, 참조 타입 배열)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;로 나뉜다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;1차원 배열 생성&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;int&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;[]&lt;/span&gt;&lt;/b&gt; score =&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; new&lt;/span&gt;&lt;/b&gt; int&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;[5]&lt;/span&gt;&lt;/b&gt;;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;rarr; 배열 선언과 동시에 new 연산자로 배열 생성&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;[]는 데이터 타입 뒤, 변수명 뒤에 붙을 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;즉, int score&lt;span style=&quot;color: #ee2323;&quot;&gt;[]&lt;/span&gt; = new int[5] 도 가능&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;배열을 선언한다고 배열이 연속적으로 생성되지 않는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323; font-family: 'Nanum Gothic';&quot;&gt;배열의 첫 번째 요소의 인덱스는 1이 아니라 0&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;n&lt;b&gt;ew 연산자 없이 선언과 동시에 값을 초기화&lt;/b&gt;&lt;/span&gt;할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;int[] score = &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;{50,60,70,80,90}&lt;/span&gt;&lt;/b&gt;;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;이렇게 초기화하지 않으면 데이터 타입에 따라 자동으로 값이 할당됨 (&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;최초의 초기값&lt;/b&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;byte, short, int, long, char : 0(0L)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;float, double : 0.0(0.0F)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;boolean : false&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;참조타입 : null&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;1차원 배열 접근&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;score[0] = 77;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;System.out.println(score[0]);&lt;/span&gt;&lt;/div&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;배열 요소에는 선언한 데이터 타입과 동일한 데이터만 저장 가능&amp;nbsp;(score[0] = 77.8 X)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;생성된 요소의 크기의 범위 내에서만 접근 가능&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;int[] score = {50,60,70,80,90};&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;System.out.println(score[5]); X (6번째 요소는 존재하지 않는다.)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;배열의 길이 length&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;배열명.length&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;int[]&amp;emsp; score = (50,60,70,80,90};
System.out.println(score.length);&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;5개의 요소를 가지고 있으니 5가 출력된다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;(배열의 길이는 상수이므로 변경 시 에러)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;배열의 요소의 총합을 구하는데 다음은 &lt;b&gt;비효율적인 코드의 예&lt;/b&gt;다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;total = height[0] + height[1]&amp;nbsp;+ height[2]&amp;nbsp;+ height[3]&amp;nbsp;+ height[4]&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;이를 다음과 같이 바꾼다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;(일반적으로 &lt;b&gt;1차원 배열은 for문을 사용해서 다룬다&lt;/b&gt;.)&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;for(int i = 0; i &amp;lt; height.lenght; i++) {
&amp;emsp;&amp;emsp;&amp;emsp;&amp;emsp;total += height[i];
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;배열을 역순으로 출력하는데 두가지 방법&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;1) &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;다른 배열을 이용&lt;/b&gt;&lt;/span&gt;해서 복붙 (&lt;b&gt;temp[]&lt;/b&gt; 이용)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mwTVw/dJMcagw5fBf/bnhQ3a1NlqjDKkXf8MOBVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mwTVw/dJMcagw5fBf/bnhQ3a1NlqjDKkXf8MOBVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mwTVw/dJMcagw5fBf/bnhQ3a1NlqjDKkXf8MOBVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmwTVw%2FdJMcagw5fBf%2FbnhQ3a1NlqjDKkXf8MOBVK%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;733&quot; height=&quot;644&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;749&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2) &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;같은 배열 내에 인덱스의 값을 &amp;lsquo;교환&amp;rsquo;&lt;/span&gt;&lt;/b&gt;해서 저장 (temp 이용)&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;817&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BR3Wl/dJMcafro41P/Kxkdd0SiD22zpSKSv6UAn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BR3Wl/dJMcafro41P/Kxkdd0SiD22zpSKSv6UAn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BR3Wl/dJMcafro41P/Kxkdd0SiD22zpSKSv6UAn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBR3Wl%2FdJMcafro41P%2FKxkdd0SiD22zpSKSv6UAn1%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;571&quot; height=&quot;727&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;817&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;ㄴ for문 이용하여 교환&amp;nbsp; : 5번만 반복하면 된다.&lt;span style=&quot;background-color: #fedede;&quot;&gt;&amp;nbsp;1&amp;rarr; 10&lt;/span&gt;,&amp;emsp;&amp;nbsp;&lt;span style=&quot;background-color: #fedede;&quot;&gt;2&amp;rarr; 9&lt;/span&gt;,&amp;emsp;&amp;nbsp;&lt;span style=&quot;background-color: #fedede;&quot;&gt;3&amp;rarr; 8&lt;/span&gt;,&amp;emsp;&amp;nbsp;&lt;span style=&quot;background-color: #fedede;&quot;&gt;4&amp;rarr;&amp;nbsp; 7&lt;/span&gt;,&amp;emsp;&amp;nbsp;&lt;span style=&quot;background-color: #fedede;&quot;&gt;6&amp;rarr; 5&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;temp = num[i];&amp;emsp;1~5값 저장(일시 저장)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;num[i] = num[len - 1 - i];&amp;nbsp;&amp;emsp;6~10을 1~5부분에 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;num[len -1 -i] = temp; 6~10에 일시 저장한 1~5를 저장&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;오름차순 정렬 예제&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;826&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bW59Cl/dJMcafEWs1R/30BXta8k3C2pkdrOz19NI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bW59Cl/dJMcafEWs1R/30BXta8k3C2pkdrOz19NI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bW59Cl/dJMcafEWs1R/30BXta8k3C2pkdrOz19NI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbW59Cl%2FdJMcafEWs1R%2F30BXta8k3C2pkdrOz19NI0%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;562&quot; height=&quot;826&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;826&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt; &lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000; text-align: start;&quot;&gt;Math.random()을 이용하여 오름차순 정렬&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Math 클래스의 random&lt;/b&gt;&lt;/span&gt; 메서드는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;0에서 1 사이의 double 타입 실수를 리턴&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;0.0 &amp;lt;= Math.random() &amp;lt; 1.0&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;-&amp;gt; 1에서 100의 숫자를 랜덤으로 얻고 싶으면 먼저 모든 항에 100을 곱한다.&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;0.0&amp;nbsp;* 100&amp;nbsp;&amp;lt;= Math.random()&amp;nbsp;* 100&amp;nbsp;&amp;lt; 1.0&amp;nbsp;* 100&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt; &lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000; text-align: start;&quot;&gt;-&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 소수점 이하를 제거하기 위해 int타입으로 변환&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;(int)0.0 &amp;lt;=&amp;nbsp;(int)Math.random() * 100 &amp;lt;&amp;nbsp;(int)(1.0 * 100)&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt; &lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000; text-align: start;&quot;&gt;-&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 1을 더해주면 최종적으로 1에서 100 사이의 값 리턴&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;0 + 1 &amp;lt;= (int)Math.random() * 100&amp;nbsp;+ 1&amp;nbsp;&amp;lt; (int)(1.0 * 100)&amp;nbsp;+ 1&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+) 시작 정수와 끝 정수를 다르게 하고 싶다면&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;int randInt = (int)(Math.random() * (end - begin + 1)) + begin;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;rarr; 20에서 200의 임의의 정수&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;int randInt = (int)(Math.random() * (200 - 20 + 1)) + 20;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;Math.random()을 이용하여 오름차순 정렬&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p29cQ/dJMcain8fiA/0r1qVfLobpk9VXOGOFanpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p29cQ/dJMcain8fiA/0r1qVfLobpk9VXOGOFanpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p29cQ/dJMcain8fiA/0r1qVfLobpk9VXOGOFanpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp29cQ%2FdJMcain8fiA%2F0r1qVfLobpk9VXOGOFanpk%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;549&quot; height=&quot;880&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;결과&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AgetO/dJMcah3Pv6x/0AKVTKEDve8ZvlcE1A8Skk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AgetO/dJMcah3Pv6x/0AKVTKEDve8ZvlcE1A8Skk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AgetO/dJMcah3Pv6x/0AKVTKEDve8ZvlcE1A8Skk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAgetO%2FdJMcah3Pv6x%2F0AKVTKEDve8ZvlcE1A8Skk%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;425&quot; height=&quot;117&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;다차원 배열&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;2차원 배열 선언&lt;/b&gt;&lt;/span&gt;&lt;/h2&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;int&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;[][]&lt;/b&gt;&lt;/span&gt; score;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;int score&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;[][]&lt;/b&gt;&lt;/span&gt;;&amp;nbsp; &amp;nbsp; score = int&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;[2][3]&lt;/b&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;//2는 1차원 배열 요소 크기, 3은 2차원 배열 요소 크기&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;두 행렬의 합 구하기&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;829&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkMMT2/dJMcabWQtkm/AQ9KIihHWWk7sB8NdGSkc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkMMT2/dJMcabWQtkm/AQ9KIihHWWk7sB8NdGSkc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkMMT2/dJMcabWQtkm/AQ9KIihHWWk7sB8NdGSkc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkMMT2%2FdJMcabWQtkm%2FAQ9KIihHWWk7sB8NdGSkc1%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;576&quot; height=&quot;735&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;829&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;결과&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGny26/dJMcagqjFi6/d4VfsYUknKWPBmL2rBB651/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGny26/dJMcagqjFi6/d4VfsYUknKWPBmL2rBB651/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGny26/dJMcagqjFi6/d4VfsYUknKWPBmL2rBB651/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGny26%2FdJMcagqjFi6%2Fd4VfsYUknKWPBmL2rBB651%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;352&quot; height=&quot;158&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;176&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2차원 배열 초기화 예제&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;arr&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2&amp;emsp;2&amp;emsp;2&amp;emsp;2&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2&amp;emsp;2&amp;emsp;2&amp;emsp;1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2&amp;emsp;2&amp;emsp;1&amp;emsp;1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2&amp;emsp;1&amp;emsp;1&amp;emsp;1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;위와 같이 출력하려면?&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;1) 2의 개수가 행이 증가할수록 감소&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2) 2를 가지는 인덱스 특징(합이 4를 넘지 않는다.)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;723&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4SR0f/dJMcafLH4VF/0QaaXHXz69n2QThFYzm460/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4SR0f/dJMcafLH4VF/0QaaXHXz69n2QThFYzm460/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4SR0f/dJMcafLH4VF/0QaaXHXz69n2QThFYzm460/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4SR0f%2FdJMcafLH4VF%2F0QaaXHXz69n2QThFYzm460%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;544&quot; height=&quot;635&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;723&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;배열 복사 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;예제&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&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;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;예상 결과&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2&amp;emsp;2&amp;emsp;2&amp;emsp;2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;1&amp;emsp;2&amp;emsp;2&amp;emsp;2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;1&amp;emsp;1&amp;emsp;2&amp;emsp;2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;1&amp;emsp;1&amp;emsp;1&amp;emsp;2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;i(열)가 0일 때 j(행)에 1이 없고&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;[1,0]&amp;emsp;/&amp;emsp;[2,0],[2,1]&amp;emsp;/&amp;emsp;[3,0],[3,1],[3,2]&amp;emsp;에 1이 있다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;즉, i &amp;gt; j이면 1.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;789&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7Lat5/dJMcaaXV8Wz/gMa7QOCYr9VUuLo6PmnhB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7Lat5/dJMcaaXV8Wz/gMa7QOCYr9VUuLo6PmnhB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7Lat5/dJMcaaXV8Wz/gMa7QOCYr9VUuLo6PmnhB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7Lat5%2FdJMcaaXV8Wz%2FgMa7QOCYr9VUuLo6PmnhB0%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;525&quot; height=&quot;645&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;789&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;2차원 배열 두 대각선 합 구하기&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;arr[0][0] + arr[1][1] + arr[2][2] + &amp;hellip; &lt;b&gt;우하향 대각선은 두 인덱스 값이 같다&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;arr[0][4] + arr[1][3] + arr[2][2] + &amp;hellip; &lt;b&gt;우상향 대각선은 두 인덱스 합이 4&lt;/b&gt; (&lt;b&gt;=arr.length - 1&lt;/b&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;819&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cx2LLD/dJMcahCK8BF/VGXGsiNJMNm3lTvU7wtbk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cx2LLD/dJMcahCK8BF/VGXGsiNJMNm3lTvU7wtbk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cx2LLD/dJMcahCK8BF/VGXGsiNJMNm3lTvU7wtbk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcx2LLD%2FdJMcahCK8BF%2FVGXGsiNJMNm3lTvU7wtbk1%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;580&quot; height=&quot;673&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;819&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;*2차원 배열에 관련된 문제는 먼저 두 인덱스의 관계로부터 규칙성을 찾아야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;&quot;&gt;&lt;b&gt;배열 복사&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #000000;&quot;&gt;&lt;b&gt;System.arraycopy() 메서드&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;System.arraycopy(원본배열, 원본시작인덱스, 복사배열, 복사시작인덱스, 복사할개수);&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = new int[5];

System.arraycopy(arr1, 1, arr2, 0, 3);&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;arr1을 원본 배열로&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;인덱스 1부터 복사한다 (2,3,4,5)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;arr2에&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;인덱스 0부터&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;3개만 (2,3,4)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;결과&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;arr2 = {2, 3, 4, 0, 0}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;이대로는 1차원 배열만 복사 가능&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;2차원으로는 for문을 이용&lt;/b&gt;해준다.&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;matlab&quot;&gt;&lt;code&gt;for (int i = 0; i &amp;lt; original.length; i++) {
    System.arraycopy(original[i], 0, copy[i], 0, original[i].length);
}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;+) 얕은 복사와 깊은 복사&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;int[][] arr1 = {
    {1, 2},
    {3, 4}
};

int[][] arr2 = arr1; // 얕은 복사(참조)

arr2[0][0] = 99;
System.out.println(arr1[0][0]);  // 99 출력됨!&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;얕은 복사는 하나를 바꾸면 원본도 바뀜&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;int[][] arr1 = {
    {1, 2},
    {3, 4}
};

int[][] arr2 = new int[arr1.length][];
for (int i = 0; i &amp;lt; arr1.length; i++) {
    arr2[i] = new int[arr1[i].length];&amp;emsp;//반복문 내에서 new 열 할당
    System.arraycopy(arr1[i], 0, arr2[i], 0, arr1[i].length);
}

arr2[0][0] = 99;
System.out.println(arr1[0][0]);&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;깊은 복사(Deep copy)는 값 자체를 완전히 새로운 공간에 복사&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;행마다 열의 개수가 다를 수도 있으니 깊은 복사 시에 &lt;b&gt;반복문 안에서 행마다 열을 따로 할당&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;java.util.Arrays 클래스&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h1&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;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;equals()&lt;/b&gt; : 두 개의 1차원 배열 요소들의 값이 같은지 비교, 같으면 true&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;deepequals&lt;/b&gt;() : 두 &lt;b&gt;2차원 이상 배열&lt;/b&gt; 요소들의 값이 같은지 비교, 같으면 true&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;toString&lt;/b&gt;() : 1차원 배열 요소들의 값들을 모두 출력&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;deepToString&lt;/b&gt;() :&lt;b&gt; 2차원 이상 배열&lt;/b&gt; 요소들의 값들을 모두 출력&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;copyOf&lt;/b&gt;() : 배열 요소들의 값들을 복사&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;copyOfRange&lt;/b&gt;() : 지정한 범위의 배열 요소들의 값들을 복사&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fedede; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;단! 범위는 시작 인덱스부터 (마지막 인덱스 - 1)이다!&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fedede; color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;copyOfRange(arr,0,5) &amp;rarr; arr[0] ~ arr[4]를 출력&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;&lt;b&gt;sort&lt;/b&gt;() : 배열 요소들의 값들을 오름차순으로 정렬&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000; font-family: 'Nanum Gothic';&quot;&gt;예시)&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;package sec06.ex01;

import java.util.Arrays;

public class ArraysMethodTest {
	public static void main(String[] args) {
		int[] arr1 = {10,20,30,40,50};
		int[] arr2 = {10,20,30,40,50};
		int[] num1 = {10,20,30,40,55};
		boolean same = true;
		
		same = Arrays.equals(arr1, arr2);//equals()
		if(same == true) {
			System.out.println(&quot;두 배열은 같습니다.&quot;);
		} else {
			System.out.println(&quot;두 배열은 다릅니다.&quot;);
		}
		
		same = Arrays.equals(arr1, num1);
		if(same == true) {
			System.out.println(&quot;두 배열은 같습니다.&quot;);
		} else {
			System.out.println(&quot;두 배열은 다릅니다.&quot;);
		}
		
		System.out.println();
		System.out.println(Arrays.toString(arr1));	//toString()
		
		//copyOf()
		int[] arr3 = Arrays.copyOf(arr1, arr1.length);	//10,20,30,40,50
		int[] arr4 = Arrays.copyOf(arr1, arr1.length -1);	//10,20,30,40
		
//copyOfRange() : **범위는 (시작 인덱스)에서 (마지막 인덱스-1) 까지
		int[] arr5 = Arrays.copyOfRange(arr1, 0, 3);	//10,20,30
		int[] arr6 = Arrays.copyOfRange(arr1, 3, arr1.length);	//40,50
		int[] arr7 = Arrays.copyOfRange(arr1, 2, 4); 
// 50은 출력되지 않는다.
		
	}
}&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;/p&gt;
&lt;pre id=&quot;code_1762948073658&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;두 배열은 같습니다.
두 배열은 다릅니다.

[10, 20, 30, 40, 50]&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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택/JAVA</category>
      <category>#부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/16</guid>
      <comments>https://it-story1.tistory.com/16#entry16comment</comments>
      <pubDate>Wed, 12 Nov 2025 20:50:25 +0900</pubDate>
    </item>
    <item>
      <title>Java 기초(3)</title>
      <link>https://it-story1.tistory.com/15</link>
      <description>&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;color: #000000;&quot;&gt;Java는 이클립스나 intellij 환경에서 실행하는 것이 좋다.&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;span style=&quot;color: #000000;&quot;&gt;지난번 연산자에 대해 배운 것을 간단한 실습으로 복습&lt;/span&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;507&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4p6mR/dJMcabvHAoW/7HCEQfKqLlwbSFYf60ImWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4p6mR/dJMcabvHAoW/7HCEQfKqLlwbSFYf60ImWk/img.png&quot; data-alt=&quot;섭씨 화씨 온도 구하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4p6mR/dJMcabvHAoW/7HCEQfKqLlwbSFYf60ImWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4p6mR%2FdJMcabvHAoW%2F7HCEQfKqLlwbSFYf60ImWk%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;969&quot; height=&quot;507&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;507&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;&lt;span style=&quot;color: #000000;&quot;&gt;- BASE는 변하지 않는 값이므로 final로 선언&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- float 값은 값에 .0F 를 붙여준다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- String temp로 문자열을 입력받아서&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- Float.parseFloat으로 강제 형변환&lt;/span&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwPadH/dJMcaeFXH0P/QnaFBYk5BoouyThVIq4eG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwPadH/dJMcaeFXH0P/QnaFBYk5BoouyThVIq4eG1/img.png&quot; data-alt=&quot;두 수 중 큰 양수 출력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwPadH/dJMcaeFXH0P/QnaFBYk5BoouyThVIq4eG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwPadH%2FdJMcaeFXH0P%2FQnaFBYk5BoouyThVIq4eG1%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;697&quot; height=&quot;368&quot; data-origin-width=&quot;697&quot; data-origin-height=&quot;368&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;&lt;span style=&quot;color: #000000;&quot;&gt;num1 : temp1을 String으로 입력받아서 Integer.parseInt()로 강제 형변환&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;num2도 마찬가지로 값을 받아서 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;result에서 삼항 연산자를 통해 num1이 크거나 같으면 num1을 반환하도록 한다.&lt;/span&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDVWbX/dJMcabiaqdt/mdebyhoWhxi54vb9uKfkGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDVWbX/dJMcabiaqdt/mdebyhoWhxi54vb9uKfkGk/img.png&quot; data-alt=&quot;자릿수 합 구하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDVWbX/dJMcabiaqdt/mdebyhoWhxi54vb9uKfkGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDVWbX%2FdJMcabiaqdt%2FmdebyhoWhxi54vb9uKfkGk%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;615&quot; height=&quot;439&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;439&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;&lt;span style=&quot;color: #000000;&quot;&gt;total에&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;%= : 나머지 저장&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;10으로 나누고 또 나머지 저장 반복&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;조건문&lt;/b&gt;&lt;/span&gt;&lt;/h1&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;color: #000000;&quot;&gt;if문&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;if-else문&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;if-else if문&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;switch문&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;중첩 조건문&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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;color: #000000;&quot;&gt;크게 if문과 switch 문이 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;실습을 통해 살펴보자.&lt;/span&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;471&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sA4M7/dJMcagqe9x1/2jkkmDQjjVpE8YO3pBxjhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sA4M7/dJMcagqe9x1/2jkkmDQjjVpE8YO3pBxjhK/img.png&quot; data-alt=&quot;학점 변환하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sA4M7/dJMcagqe9x1/2jkkmDQjjVpE8YO3pBxjhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsA4M7%2FdJMcagqe9x1%2F2jkkmDQjjVpE8YO3pBxjhK%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;499&quot; height=&quot;739&quot; data-origin-width=&quot;471&quot; data-origin-height=&quot;698&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;&lt;span style=&quot;color: #000000;&quot;&gt;다만 if문을 쓸 때 조건이 많아지면 가독성이 떨어지는데 이때 switch 문을 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;형식&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;switch(값)&lt;/span&gt;&lt;/b&gt; {&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;case&amp;nbsp;&lt;/b&gt;&lt;/span&gt;값1 :&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;실행문1;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;...&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;;&amp;emsp;//break은 case문을 구분하는 역할&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;case 값2 :&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;실행문2;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;...&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;break;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;case 값3 :&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;실행문3;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;...&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;break;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;default&amp;nbsp;&lt;/b&gt;&lt;/span&gt;:&amp;emsp;//어느 case에도 해당되지 않으면 실행. 생략 가능&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;실행문n;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;case문에는 콤마, 로 구분해서 여러 값을 사용할 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;575&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Vscbz/dJMcagw0JOB/buzj0JwGskSpbDbX31Bjvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Vscbz/dJMcagw0JOB/buzj0JwGskSpbDbX31Bjvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Vscbz/dJMcagw0JOB/buzj0JwGskSpbDbX31Bjvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVscbz%2FdJMcagw0JOB%2Fbuzj0JwGskSpbDbX31Bjvk%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;517&quot; height=&quot;646&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;575&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;span style=&quot;color: #000000;&quot;&gt;switch문의 값으로 입력 가능한 타입은 byte, short, int, char 타입 정수와 문자열 (실수형x) &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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&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;&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;반복문&lt;/b&gt;&lt;/span&gt;&lt;/h1&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;color: #000000;&quot;&gt;for&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;while&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;do-while&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;for (초기화식; 조건식; 증감식)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;for (int i = 0; i &amp;lt; 100; i++) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;System.out.println(&amp;rdquo;Hello, World!&amp;rdquo;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;while은 실행블록{} 에서 초기화식, 조건식, 증감식을 따로 사용하지 않는다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;rarr; for문은 반복 횟수가 정해진 경우 사용하면 편리하다&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;while문은 반복 횟수보다는 조건식이 true이면 반복하는 경우에 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;int i = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;while(i &amp;lt;= 5) {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;System.out.println(&amp;rdquo;i = &amp;ldquo; + i);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;i++;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;System.out.println(&amp;rdquo;while문 밖에서 i의 값 : &amp;ldquo; + i);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;[결과]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;i = 1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;i = 2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;i = 3&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;i = 4&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;i = 5&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;while문 밖에서 i의 값 : 6&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;do while : 무조건 한 번은 실행문을 실행한 후 마지막에 조건식 판별&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;do {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;실행문;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&amp;emsp;while(조건식)&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;중첩 반복문&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가장 많이 쓰이는 for문 중첩&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;시계 예제 while문&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dy82O/dJMcabboQy8/ihoKxoSIp3UKyfj0GhJDA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dy82O/dJMcabboQy8/ihoKxoSIp3UKyfj0GhJDA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dy82O/dJMcabboQy8/ihoKxoSIp3UKyfj0GhJDA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDy82O%2FdJMcabboQy8%2FihoKxoSIp3UKyfj0GhJDA0%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;746&quot; height=&quot;394&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;394&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;span style=&quot;color: #000000;&quot;&gt;중접반복문 : 내부의 반복문이 실행하기 전에&amp;nbsp; min을 초기화해주는 것 주의&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;min= 60이 되면 min=0으로 되돌아가야함&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;break문과 continue문&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;595&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diAPBp/dJMcaesqwN3/Kp6WtP1kPRNk1Q1ZmFtsG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diAPBp/dJMcaesqwN3/Kp6WtP1kPRNk1Q1ZmFtsG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diAPBp/dJMcaesqwN3/Kp6WtP1kPRNk1Q1ZmFtsG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiAPBp%2FdJMcaesqwN3%2FKp6WtP1kPRNk1Q1ZmFtsG1%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;633&quot; height=&quot;626&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;595&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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가독성을 위해 무한 루프로 while(true)를 많이 사용&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;for(;;)로도 무한 반복 가능&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;무한 루프는 반드시 break으로 빠져나올 조건이 있어야한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;break은 가까운 반복문을 종료시킨다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;break으로&lt;/span&gt;&lt;span style=&quot;color: #f9241c;&quot;&gt;&amp;nbsp;외부&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;for문 종료시키는 예제&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxyrKJ/dJMcakzpy7s/VtwIs7khVkn2YL34UB1Qf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxyrKJ/dJMcakzpy7s/VtwIs7khVkn2YL34UB1Qf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxyrKJ/dJMcakzpy7s/VtwIs7khVkn2YL34UB1Qf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxyrKJ%2FdJMcakzpy7s%2FVtwIs7khVkn2YL34UB1Qf0%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;611&quot; height=&quot;377&quot; data-origin-width=&quot;551&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;외부 for문에 라벨을 지정해서 특정 반복문을 break 할 수 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;continue문&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반복문 내에서 실행문을 건너뛸 때 사용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;for문에서 continue문을 만나면 for문의 증감식으로 이동&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;while문은 조건식으로 이동&lt;/span&gt;&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반복문(...) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;...&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;continue&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;emsp;...&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;320&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM7SgX/dJMcaezb7ub/Xamdx0gTK2POPMnMFLX601/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM7SgX/dJMcaezb7ub/Xamdx0gTK2POPMnMFLX601/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM7SgX/dJMcaezb7ub/Xamdx0gTK2POPMnMFLX601/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM7SgX%2FdJMcaezb7ub%2FXamdx0gTK2POPMnMFLX601%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;477&quot; height=&quot;320&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;320&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;span style=&quot;color: #000000;&quot;&gt;i가 5의 배수 (나머지가 0) 일 때마다 print 함수를 건너뜀&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;285&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj3pdh/dJMcadAhPcf/hNofnbu4yfQbVkN8a9ayeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj3pdh/dJMcadAhPcf/hNofnbu4yfQbVkN8a9ayeK/img.png&quot; data-alt=&quot;1부터 자연수를 더해서 최초로 1000이 되게 하는 숫자와 합&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj3pdh/dJMcadAhPcf/hNofnbu4yfQbVkN8a9ayeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj3pdh%2FdJMcadAhPcf%2FhNofnbu4yfQbVkN8a9ayeK%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;850&quot; height=&quot;338&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;285&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1부터 자연수를 더해서 최초로 1000이 되게 하는 숫자와 합&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;
&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;color: #000000;&quot;&gt;최대 공약수 구하기&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;874&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k6i7f/dJMcadmKCxb/5djLOTsowuhpeN4J71Ham0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k6i7f/dJMcadmKCxb/5djLOTsowuhpeN4J71Ham0/img.png&quot; data-alt=&quot;최대 공약수 구하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k6i7f/dJMcadmKCxb/5djLOTsowuhpeN4J71Ham0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk6i7f%2FdJMcadmKCxb%2F5djLOTsowuhpeN4J71Ham0%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;750&quot; height=&quot;945&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;874&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;&lt;span style=&quot;color: #000000;&quot;&gt;num1, num2를 입력받아서&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;작은 수를 num1에, 큰 수를 num2에 저장&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;num1만큼 반복문 진행 : num1과 num2를 i로 나누어떨어지면 공약수로 출력&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;if문으로 가장 큰 공약수를 gcd(great common division)에 저장&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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자연수에서 100번째 소수 출력&lt;/span&gt;&lt;/div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;package sec05.ex05;

public class PrimeNumberTest2 {
	public static void main(String[] args) {	//자연수에서 100번째 소수 출력
		
		int num = 1, count = 0, count2 = 0;
		
		Outter:
		while(true) {
			count = 0;	//매 숫자마다 count(약수개수)가 초기화되어야한다!!
			for (int i = 1; i &amp;lt;= num; i++) {
				if(num % i == 0) {
					count++;	//약수 개수
				}
				
			}
			
			if(count == 2) {
				count2++;
				}
			
			num++;
			
			if(count2 == 100) {
				System.out.println(num-1);
				break Outter;
				
			}
			
		}
	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;헤맸던 부분 : &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;while문 밖에서 한 번 count(약수 개수) 선언하고 그 뒤로 초기화하지 않으니 이상한 결과가 나온다. &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;반복할 때 매번 count는 0으로 초기화해주어야 한다.&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>멀티캠퍼스-JAVA 풀스택/JAVA</category>
      <category>#부트캠프후기 #멀티캠퍼스it부트캠프 #현대이지웰java풀스택개발자6회차</category>
      <author>gravity251</author>
      <guid isPermaLink="true">https://it-story1.tistory.com/15</guid>
      <comments>https://it-story1.tistory.com/15#entry15comment</comments>
      <pubDate>Tue, 28 Oct 2025 19:41:37 +0900</pubDate>
    </item>
  </channel>
</rss>