<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://pimg.daum-img.net/whsnake/css/atom.css?ver=1.0" type="text/css"?>
<feed xmlns="http://www.w3.org/2005/Atom" version="1.0" >
  <title>고추장듬뿍</title>
  <link rel="alternate" type="text/html" href="http://blog.daum.net/jinstyner"/>
  <link rel="self" type="application/atom+xml" href="http://blog.daum.net/xml/atom/jinstyner"/>
  <rights>고추장듬뿍</rights>
  <author>
    <name>고추장듬뿍</name>
    <uri>http://blog.daum.net/jinstyner</uri>
  </author>
  <generator uri="http://blog.daum.net" version="1.0">Daum blog (blogmaster@daum.net)</generator>
  <id>tag:blog.daum.net,2009:jinstyner</id>
  <updated>2009-05-07T21:07:49Z</updated>

  		<entry>
	    <title>4장 Basic of Java(2) </title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/jinstyner/2832616"/>
		<id>tag:blog.daum.net,2009:jinstyner.2832616</id>
	    <author>
		    <name>고추장듬뿍</name>
	    </author>
	    <updated>2009-05-07T21:07:49Z</updated>
	    <published>2009-05-07T21:07:49Z</published>
	    <content type="html">
	    	&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;1. Byte Code &amp; Java Virtual Machine(JVM)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #dae8f6&quot; color=#587693&gt;&lt;STRONG&gt;자바는 컴파일 언어이면서도 인터프리터 언어이다.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #dae8f6&quot; color=#587693&gt;&lt;STRONG&gt;자바는 platform에 독립적이다.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&lt;/STRONG&gt;컴파일 언어&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 컴파일 과정을 거치는 언어를 컴파일 언어라고 한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 컴파일은 소스 코드를 기계가 알아볼 수 있는 기계어로 바꿔주는 작업을 말한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cf)링킹 : 외부 라이브러리를 기계어로 변경하여 프로그램에 추가하는 작업&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&lt;/STRONG&gt; 인터프리터 언어&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 소스를 한 줄씩 읽으면서 실행하는 것을 인터프리터 언어라고 한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;컴파일 과정을 거치면 소스코드를 기계어로 변경된 파일이 생성된다. 문제는 이 기계어가&lt;/P&gt;
&lt;P&gt;'기계'(platform)마다 다르다는 것이다. 윈도우 계열은 윈도우가 알아 볼 수 있는 기계어로,&lt;/P&gt;
&lt;P&gt;유닉스 계열은 유닉스가 알아 볼 수 있는 기계어로 파일을 생성하기 때문에 한쪽에서 컴파일한 &lt;/P&gt;
&lt;P&gt;프로그램은 다른 곳에서는 쓸 수 없다. 다른 환경에 맞게 재컴파일 해야한다.&lt;/P&gt;
&lt;P&gt;(물론 재컴파일만 해서 동작하는 것도 아니다...환경에 맞게 알맞게 포팅해줘야 한다.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;자바가 platform에 독립적일 수 있는 이유는 JVM 때문이다. &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#5c7fb0&gt;JVM은 가상의 자바 byte code를 해석하여 실행하기 위한 가상의 운영체제이다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&lt;/STRONG&gt; Byte code&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 자바 소스코드가 컴파일되고 나면, 기계어와 소스코드의 중간단계인 Byte Code를 생성한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (기계어에 더 가깝다)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;JVM은 인터프리터 방식으로 Byte code를 해석/실행하며, 각 환경에 맞는 JVM이 이미 배포되어 있기&lt;/P&gt;
&lt;P&gt;때문에 개발자는 platform에 상관없이 소스 코드만 작성하면 된다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;(잡생각 1)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;이것이 자바가 사랑받는 이유라고 한다. 개인적인 생각으로 사실 platform에 독립적인 특성보다는,&lt;/P&gt;
&lt;P&gt;eclipse, netBeans등의 개발툴과 JVM이 공짜라는 사실이 더 사랑받는 이유가 아닐까라고 생각한다.&lt;/P&gt;
&lt;P&gt;Web쪽의 프로그래밍을 하고 있어서인지 다른 환경으로 포팅할 일은 거의 겪어보지 못해서 그렇게 생각할지도.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;(잡생각 2)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;대학시절에는 리눅스에서 C언어를 이용해 코딩했었다. 과제 체점을 대부분 윈도우 환경에서 했기때문에&lt;/P&gt;
&lt;P&gt;윈도우에서 테스트해서 보내야하는 번거러움이 있었는데...이때 자바를 이용해서 코딩했다면 삽질을 덜 하지 않았을까...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. 메모리 이야기&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #dae8f6&quot; color=#587693&gt;메모리는 정적 메모리와 동적 메모리가 있다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #dae8f6&quot; color=#587693&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&lt;/STRONG&gt;&amp;nbsp;메모리의 종류&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스택 메모리(정적 메모리)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 힙 메모리(동적 메모리&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;프로그램은 크게 코드영역/데이터영역/스택영역으로 나뉜다.&lt;/P&gt;
&lt;P&gt;스택영역은 메서드에서 사용하는 지역 변수들의 심볼 테이블이 들어간다.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#e31600&gt;스택영역 - 정적 메모리 영역은 컴파일 타임에 사용할 메모리의 크기를 알 수 있다는 것을 의미한다&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;new 연산자를 이용해 생성한 객체들은 힙 메모리에 할당되며,&lt;/P&gt;
&lt;P&gt;이는 가비지 콜렉터에 의해 소멸된다.(소멸자가 따로 존재하지 않는다.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;(잡생각 1)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;대학시절 가장 재밌게 들었던 수업 중에 하나가...프로그래밍언어였다. &lt;/P&gt;
&lt;P&gt;막연했던 컴파일과 빌드, 각 언어별 장점과 단점, OOP의 의미등에 대해 배울수 있어서 좋았다.&lt;/P&gt;
&lt;P&gt;그런 내용들 중에서는 '메모리'에 관련된 내용도 있었다.&lt;/P&gt;
&lt;P&gt;C언어를 이용해서 코딩했었고, 억지로라도 포인터를 쓰려고 노력했던 삽질러였기때문에&lt;/P&gt;
&lt;P&gt;메모리에 관해 나름 관심이 많았다. 어느 책이나 메모리에 대해 설명하지만...이 책의 설명이 가장 괜찮은 것 같다.&lt;/P&gt;&lt;br&gt;&lt;br&gt;tag : &lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=힙&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;힙&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=스택&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;스택&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=컴파일&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;컴파일&lt;/a&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>4장 Basic of Java(1)</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/jinstyner/2832615"/>
		<id>tag:blog.daum.net,2009:jinstyner.2832615</id>
	    <author>
		    <name>고추장듬뿍</name>
	    </author>
	    <updated>2009-04-29T22:06:30Z</updated>
	    <published>2009-04-29T22:06:30Z</published>
	    <content type="html">
	    	&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;1. Java Hello World&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;어느 언어를 공부하던지, 대부분 처음으로 접하는 코드는 &quot;Hello World&quot;를 출력하는 코드이다.&lt;/P&gt;
&lt;P&gt;쉽게 보이지만 분석하고 설명하려면 꽤나 많은 내용들을 가지고 있는 코드.&lt;/P&gt;
&lt;P&gt;Hello World를 분석해보자!&lt;/P&gt;
&lt;P&gt;(소설같은 자바가 좋은 점이 이런점인 것 같다. 몇몇 프로그래밍 책을 보았지만 Hello World에 대해 제대로 설명해주는 책은 잘 보지 못했다...물론 내가 별로 책을 읽지 않아서 그랬을 수도 있지만.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;Source Code&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;public class HelloWorld{&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;public static void main(String[] args){&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;System.out.println(&quot;Hello World!&quot;);&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;HelloWorld.java의 학습내용&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; main() 메서드&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; String[] : String 배열&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 매개변수 args&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; static 키워드&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; System.out.println()&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; &quot;Hello World!&quot; 문자열&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;2. main 메서드&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;자바의 main 메서드는 매개변수의 이름 이외에는 바꿀 수 없는 완전 형식화된 메서드이다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;main 메서드가 있는 클래스를 실행 클래스(main 클래스)라고 하며 JVM에 의해 호출된다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;실행 클래스&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; main() 메서드를 포함하고 있는 클래스를 실행 클래스라고 한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 프로그램의 실행은 java.exe를 이용해서 실행 클래스의 이름으로 실행한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 프로그램의 종료는 main() 메서드의 종료를 의미한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;STRONG&gt;3. 매개변수&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;main 메서드는 매개변수를 가지며 String[]형식으로 사용된다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;static void main(String[] args){...}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;명령행에서 입력한 값을 args를 통해 접근할 수 있다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;p.s -&amp;nbsp;argument : 호출자에서 입력하는 값(R-value), &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parameter : 피호출자에서 사용하는 값(L-value)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;STRONG&gt;4. static&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;static : 1.정적인, 고정의 2. 완전히 변화가 없는.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;영어 사전에서 찾아보면 static의 의미는 위와 같이 나온다. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;java에서도 위에서의 의미에서 크게 벗어나지 않는다. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;static 키워드는 변수 또는 메서드를 정적으로 생성해준다. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;정적으로 생성해준다는 말의 의미는 메모리상에서 단 하나만 생성한다는 뜻이다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;class StaticTest{&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;public static String sStaticTest = &quot;staticTest&quot;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;String sNoneStatic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = null;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;....&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;public static void staticMethod(int x, int y){&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;위와 같은 클래스가 있다면, 클래스를 new를 통해서 생성할때마다 sNoneStatic&amp;nbsp;변수는 계속 메모리상에서 새로운 위치에 생성된다. (클래스를 생성하는 수 만큼, 메모리상에서 생성된다.) 하지만 sStaticTest 변수는&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;클래스를 몇 개 만들더라도 오로지 한개만 생성된다.(static 영역에 생성됨.)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;단 한 개만 생성되기 때문에 전체 객체가 공유할 수 있다는 장점이 있으나, 공유로 인해 데이터를 동기화하는데 어려움 또한 발생한다.(적절한 Lock이 필요함. )&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;static 키워드&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 메모리 상에 한개 뿐인 정적인 데이터를 생성할 수 있다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 데이터를 동기화 하는데 문제를 일으킬 수 있다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;위의 예제에서 static 변수를 사용하려면 다음과 같은 2가지 방법이 있다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;1. 바로 사용&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp; String sTestData&amp;nbsp;&amp;nbsp;&amp;nbsp; = StaticTest.sStaticTest;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp; String sTestData2&amp;nbsp;&amp;nbsp;= StaticTest.staticMethod(...);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;2. 객체를 생성후 사용&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp; StaticTest oStaticTest = new StaticTest();&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp; oStaticTest.staticMethod(...);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;STRONG&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #dae8f6&quot; color=#587693&gt;static 메서드 내에서는 멤버 변수를 사용할 수 없단다...왜?&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;STRONG&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #dae8f6&quot; color=#587693&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffeaea&quot; color=#000000&gt;static으로 선언된 것들은 클래스의 객체가 생성되기 전에 미리 생성된다. 그렇기 때문에 클래스에&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffeaea&quot; color=#000000&gt;있는 멤버 변수들을 사용할 수 없다.(멤버 변수는 아직 생성되지 않았기 때문에.) &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #dae8f6&quot; color=#587693&gt;필자의 경우 Util성 클래스의 메서드나&amp;nbsp;FLAG 값으로 이용하는 데이터에&amp;nbsp;static을 많이 사용한다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #dae8f6&quot; color=#587693&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffeaf8&quot; color=#000000&gt;시스템의 공통 컴퍼넌트 개발자이기 때문에 Util로 사용되는 메서드를 제공해야하는 경우가 많다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffeaf8&quot; color=#000000&gt;이럴 경우 대부분 static 메서드 형태로 제공한다. 또한 메서드의 작동 모드등을 결정하기 위해 FLAG등이 필요한 경우가 있는데, 이럴때도 static으로 선언한 상수를 제공함으로써 오타로 인해 발생할 수 있는 버그를 최소화 하려고 하고 있다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #dae8f6&quot; color=#587693&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[제공하는 class]&lt;/P&gt;
&lt;P&gt;class SetOfUtil {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static String A_MODE = &quot;A_MODE&quot;;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static String&amp;nbsp;B_MODE = &quot;B_MODE&quot;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static String getObjectKey( String sPboName, String sMode ) throw Exception&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;...&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;if( A_MODE.equals( sMode ) ){&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;}&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;else if( B_MODE.equals(&amp;nbsp;sMode )){&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;}&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;else{&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 12em&quot;&gt;new Exception(&quot;SetOfUtil.getObjectKey() -&amp;nbsp;Unknown Mode&quot;);&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 8em&quot;&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[모듈에서 사용]&lt;/P&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;P&gt;sObjectKey = SetOfUtil.getObjectKey( &quot;GeneralDevelop&quot;, SetOfUtil.A_MODE );&lt;/P&gt;
&lt;P&gt;...&lt;/P&gt;&lt;/SPAN&gt;&lt;br&gt;&lt;br&gt;tag : &lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=java&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;java&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=static&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;static&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=main&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;main&lt;/a&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>3장 The Class(3)</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/jinstyner/2832614"/>
		<id>tag:blog.daum.net,2009:jinstyner.2832614</id>
	    <author>
		    <name>고추장듬뿍</name>
	    </author>
	    <updated>2009-04-27T22:24:46Z</updated>
	    <published>2009-04-27T22:24:46Z</published>
	    <content type="html">
	    	&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;1. 클래스와 메모리&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;예전에 대학교때 Linked List를 만들면서 삽질한 기억이 있다. 아무리 봐도 로직에는 문제가 없는 데&lt;/P&gt;
&lt;P&gt;지긋지긋한 'segmetaion fault'가 뜨는 것이었다. (저 에러라면 아주 치가 떨린다... 예전에 나는 친구에게&lt;/P&gt;
&lt;P&gt;'닌 내 인생에서 segmentaion fault다!' 라고 악담을 한 적도 있다...훗.) 온 갖 삽질을 한 결과,&lt;/P&gt;
&lt;P&gt;변수에 메모리를 할당하지 않은 것을 발견했다...엄청난 닭짓을 한 것.( 하지만 그 결과 segmentaion&lt;/P&gt;
&lt;P&gt;fault는 주로 메모리를 잘 못 할당했을 때 발생한다는 것을 알았다...)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;자바를 하면서 정말 좋았던 것은 메모리 할당에 관한 에러는 거의 발생하지 않고, 발생하더라도&lt;/P&gt;
&lt;P&gt;쉽게 찾을 수 있다는 것이었다. 'new' 연산자 한방이면, 할당해야 할 메모리의 사이즈도, 포인터의&lt;/P&gt;
&lt;P&gt;타입을 어떤 걸로 할 것인가에 대한 것도 걱정할 필요가 없었다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;자 그럼...수동으로 일일이 다 해야하는 C언어와는 달리,&lt;/P&gt;
&lt;P&gt;자바에서 'new' 연산자 한방에 처리되는 메모리 할당을 알아보자.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;클래스를 이용한 메모리의 생성&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 클래스 데이터 타입으로 변수를 선언하고, 컴퓨터 내의 메모리 속에 데이터 타입에&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;해당하는 만큼의 메모리를 확보하는 일&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;객체&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 클래스로 변수를 만들었을 때 일반적인 기본 데이터 타입의 변수와 구별하기 위해서 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 객체 또는 객체 변수라고 한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;2&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;. 객체 변수 = 참조 변수&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;C++에서는 객체를 선언하게 되면 메모리에 직접적으로 접근할 수 있는 주소를 가질 수 있다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;하지만 자바에서는 직접 접근할 수 있는 주소가 아닌, Index Table을 통해 둘러갈 수 있는 참조값을 준다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;때문에 자바에서 객체 변수를 참조 변수(Reference Variable)이라고 한다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;(이렇게 한번 둘러가게 한 덕분에...상당히 많은 오류를 줄일 수 있다고 생각한다. C나 C++의 포인터는&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;매우 강력하지만, 잘못 사용했을시에는 정말 눈물 쏙 빠질 정도로 디버깅이 어려웠다.)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;참조변수끼리 할당할 때는 동일한 타입만 가능하며, 메모리가 아닌 참조값이 복사되어 할당된다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;참조값끼리 아무리 복사를 하더라도 객체 내부의 메모리끼리의 복사는 이루어지지 않는다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;이러한 이유에서 자바에서는 값에 의한 호출(Call by Value)만 존재한다. 참조값 복사도 값복사임!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;참조변수&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp; 객체를 구분하기 위한 유일한 값(JVM에서 생성)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp; 참조변수끼리 할당할 때는 동일한 타입만 할당 가능&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp; 참조변수끼리 할당할 때는 참조값이 복사되어 전달됨(Call by Value)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br&gt;&lt;br&gt;tag : &lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=클래스&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;클래스&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=객체&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;객체&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=참조값&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;참조값&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=call by value&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;call by value&lt;/a&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>3장 The Class(2)</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/jinstyner/2832613"/>
		<id>tag:blog.daum.net,2009:jinstyner.2832613</id>
	    <author>
		    <name>고추장듬뿍</name>
	    </author>
	    <updated>2008-03-09T21:52:27Z</updated>
	    <published>2008-03-09T21:52:27Z</published>
	    <content type="html">
	    	&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;1. 클래스와 메서드&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;대학교에서는 C 언어를 주로 공부했었다. 자바는 한 학기 정도 들었나...그리고 마지막 소프트웨어&lt;/P&gt;
&lt;P&gt;공학 수업을 들으면서 어거지로 자바를 조금 하게 되었다. 이젠 자바로 밥먹고 살아야 되는 인생이지만.&lt;/P&gt;
&lt;P&gt;대학교때나 지금 회사에 와서나 자바를 공부하면서 느낀 것은 동일하다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&quot;도대체 왜 객체 지향 언어를 써야하나?&quot;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;물론 현재 직장인으로서는 대답을 할 수 있다. 객체 지향, 특히 자바는 생산성이 뛰어난 언어이기&lt;/P&gt;
&lt;P&gt;때문이다... 같은 시간내에 얼마나 많은 코드를 오류 없이 만들어내는가는 회사입장에서는 매우&lt;/P&gt;
&lt;P&gt;중요할 수 밖에 없다.( 더구나 좀 느리지만 개발하기엔 미칠듯이 편한 이클립스까지 있지 않은가...)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;아무튼 책에서는 내가 이전에 가졌던 의문...왜 객체 지향 언어를 써야하는 가에 대해서 &lt;/P&gt;
&lt;P&gt;클래스와 메서드의 관계를 설명하며 약간이나마 풀어주는 듯 하다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;『데이터와 메서드를 결합하면 좀 더 편해진다.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;클래스는 사용자 정의 데이터 생성기, 클래스의 구성 요소는 변수(데이터)와 메서드라고&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;이미 앞에서 설명하였다. 데이터와 메서드가 떨어지면, 즉 이전의 C언어와 같은 기법으로&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;코딩하면 어떤 문제점이 있을까?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;(계속 C언어를 예로 드는데, C언어가 나쁘다는 것이 아니다. 개인적으로는 아직도&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;자바보다 C언어를 더 좋아한다. 단지 필자가 접해본 언어가 몇개 없고 그중 예로 들만한 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;것이 C언어일뿐이다.)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;데이터와 메서드가 분리되어 있을 때의 문제점&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 메서드를 호출할 때마다 데이터를 매개변수로 넘겨주어야 한다.&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 특정 데이터를 사용하는 메서드가 몇 개인지 알 수 없다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 특정 데이터를 사용하는 메서드를 묶어서 관리할 수 없다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;물론 C언어에서도 극복할 수 있는 문제지만, 자바에서는 이것들을 기본적으로 제공해준다는&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;점에서 편의성이 더 뛰어나다고 하겠다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;덧붙이자면 멤버 변수는 상태 유지의 역할을 하고, 이 상태를 변경해주는 것이 메서드다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;즉, &lt;U&gt;&lt;FONT color=#ff0099&gt;멤버 메서드에서 사용하지 않는 멤버 변수는 클래스 내에 넣을 필요가 없다.&lt;/FONT&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;2. 접근제어와 메서드&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;접근제어를 처음 본 것은 C++를 수강할 때였다. 클래스에 접근할 수 있는 권한을 구분하여&lt;/P&gt;
&lt;P&gt;해당 접근제어의 종류에 따라 클래스의 멤버에 접근할 수 있는 가 없는 가를 지정할 수 있었다.&lt;/P&gt;
&lt;P&gt;역시나... &quot;이걸 왜 써!&quot; 라는 의문이 많이 들었다. 접근제어를 하면 뭐가 좋은 걸까?&lt;/P&gt;
&lt;P&gt;사실 지금도 뚜렷하게 말하진 못하겠다. (아아... 이 미미한 개발 짬밥이여...)&lt;/P&gt;
&lt;P&gt;&quot;왜 써?&quot; 라는 것에 대해서는 조금 뒤에 논의 하기로 하고, 접근제어에 대해 알아보자.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;『 니 맘대로 쓸 수 있는게 아니거든요? 』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;접근제어라는 말처럼, &lt;U&gt;&lt;FONT color=#ff0099&gt;클래스에 대해 접근할 수 있는 권한을 설정&lt;/FONT&gt;&lt;/U&gt;한다.&lt;/P&gt;
&lt;P&gt;쓰고 싶다고 마음대로 호출해서 쓰거나, 변경하고 싶다고 해서 마음대로 값을 할당할 수 없다.&lt;/P&gt;
&lt;P&gt;접근 권한이 있는 클래스나 클래스 내의 멤버에 대해서만 값을 할당하거나 일을 시킬 수 있다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;접근 제어의 종류&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;객체를 이용한 멤버의 접근 제어&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 상속관계에서 상위 클래스와 하위 클래스간의 접근 제어&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;두 번째에 대해서는 상속을 배울때 알아보자. 지금은 오로지 생성된 객체에 대한&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;접근 제어에 대해서만 알아 본다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;접근 지정자의 종류&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;private&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; public&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; protected&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;private : 클래스 내부에서만 접근할 수 있다. 클래스 외부에서는 접근할 수 없다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;접근하려고 하면 컴파일 에러를 낸다...까칠한 녀석.&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;public&amp;nbsp; : 아무곳(클래스 내부/외부)에서나 모두 사용가능하다. 공용~&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;protected : 상속을 이야기할때 합시다!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;책에 이런 저런 설명이 있지만... 위의 것들만 잘 알면 된다고 생각함... ㅡ_ㅡ;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;그럼 애초에 했던 질문인 &quot;이걸 왜써?&quot;에 대해서 생각해봅시다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;『&amp;nbsp;은폐화라고 들어는 보셨습니까? 』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;책을 집필한 저자도 처음에는 접근 제어를 왜 사용하는 가라는 것에 대해&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;확실한 해답을 찾지 못했다고 한다. 어느 책에서도 시원하게 해결해준 책이 없었다고 한다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;'접근제어를 왜 사용하는가?' 라는 물음은 '왜 private를 사용하는 가?'가와 동일하다고 &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;생각한다...(protected는 일단 제외합시다.) 왜 내부적으로만 접근할 수 있게 하는가?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;즉...왜 은폐화를 사용하는가?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;책은 다음과 같이 이야기 한다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;private 멤버 변수의 사용&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;자료를 보호하기 위해서&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 내부적으로만 사용하기 위해서&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;'자료의 보호'라는 것은 어느 정도 이해할 수 있다. private 멤버 변수에 값을 할당하려면,&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;public으로 지정된 메서드를 통해서만 할 수 있을텐데, 이렇게 되면 내부적으로 입력값에&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;대한 체크 로직을 넣을 수도 있고, 확실히 정제된 데이터만 할당할 수 있을 것이다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;'내부적으로만 사용하기 위해서'라는 것은 아직 잘 모르겠다...가끔 업무시에 &lt;/FONT&gt;&lt;FONT size=2&gt;private으로&amp;nbsp;된&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;메서드를 작성하기는 하지만 그건 막연히 '이건 외부에서 접근할 필요가 없으니까'라고&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;생각하면서 private으로 지정할 뿐이다...아직 '이래서 쓴다!'라는 개념은 못 잡고 있는 것 같다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;언제쯤이면 ㅡ_ㅡ;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;br&gt;&lt;br&gt;tag : &lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=접근제어&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;접근제어&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=클래스&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;클래스&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=소설같은 자바&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;소설같은 자바&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=private&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;private&lt;/a&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>3장 The Class(1)</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/jinstyner/2563621"/>
		<id>tag:blog.daum.net,2009:jinstyner.2563621</id>
	    <author>
		    <name>고추장듬뿍</name>
	    </author>
	    <updated>2008-02-26T22:34:21Z</updated>
	    <published>2008-02-26T22:34:21Z</published>
	    <content type="html">
	    	&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;1. 클래스의 구성요소&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이러니 저러니 해도, 클래스의 구성요소는 아래의 3가지 형태로 설명할 수 있다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp; 클래스의 구성요소 I&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 변수&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 메서드&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp; 클래스의 구성요소 II&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 멤버 변수 또는 멤버 필드&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 멤버 메서드&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;클래스의 구성요소 III&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;클래스 = 데이터 + 메서드&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 클래스 = C 언어의 구조체 + 메서드&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;3가지 형태로 써놓았지만 결국엔 모두 같은 말이다.&lt;/P&gt;
&lt;P&gt;앞장에서 말한 것 처럼, 클래스는 &lt;FONT color=#ff0099&gt;&lt;U&gt;사용자 정의 데이터 생성기&lt;/U&gt;&lt;/FONT&gt;이다.&lt;/P&gt;
&lt;P&gt;여기에 한 가지 중요한 개념을 더 추가한다면 &lt;FONT color=#ff0099&gt;&lt;U&gt;데이터와 메서드가 결합&lt;/U&gt;&lt;/FONT&gt;되었다는 것이다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;2. 메서드&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;자 그럼 메서드에 대해서 알아보자. 메서드는 C 언어에서 말하는 함수(function)과 동일하다.&lt;/P&gt;
&lt;P&gt;메서드는 다음의 2가지 종류로 나눌 수 있다.(예전 소프트웨어 공학 수업을 들었을때,&lt;/P&gt;
&lt;P&gt;이 구분을 함수(function)과&amp;nbsp;procedure로 들었던 것 같다.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;매서드의 종류&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;일만 하는 메서드 (procedure)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 일을 한 수 값을 리턴하는 메서드 (function)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;procedure는 메서드 내부의 로직을 수행한 후 종료한다.&lt;/P&gt;
&lt;P&gt;하지만 function의 경우에는 내부 로직을 수행한 후 로직에 따른 값을 리턴한다.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0099&gt;&lt;U&gt;리턴을 하기 위해서는 메서드를 선언할 때 리턴 타입을 지정&lt;/U&gt;&lt;/FONT&gt;해야 하며,&lt;/P&gt;
&lt;P&gt;procedure의 경우에는 void로 선언한다.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;리턴(return)&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;리턴은 메서드의 종료를 의미한다. 메서드를 끝내기 위해서는 메서드 내의 모든 작업을&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;완료하거나 return을 통해서 메서드의 특정 부분에서 작업을 끝낸다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;『메서드는 변수다.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;책에서 이 소제목을 보고 무슨 피콜로 더듬이 빠는 소리인가 했다.&lt;/P&gt;
&lt;P&gt;직접할당과 간접할당의 차이일뿐, 메서드는 정확히 변수의 역할을 하고 있다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;변수와 메서드의 할당&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;int a = 7;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;sumB(3,4);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;a는 7이라는 값을 가지고, sumB(3,4) 또한 내부 로직에 의해 7이라는 값을 가진다고 하자.&lt;/P&gt;
&lt;P&gt;자 그러면, 둘은 동일한 값을 가지고 있는 것이다. 또한, 아래의 예시를 보면&lt;/P&gt;
&lt;P&gt;메서드가 변수라는 말에 고개가 끄덕여진다. (결과적으로는 동일한 일을 한다라는 뜻으로&lt;/P&gt;
&lt;P&gt;이해했다.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;int a = 7;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;int&amp;nbsp;b&amp;nbsp;= a;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;int c = sumB(3,4);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;약간의 차이점이라면 일반 변수는 직접 할당을 하며, 메서드는 매개변수를 이용하여&lt;/P&gt;
&lt;P&gt;만들어진 값을 리턴하여 할당하는 간접할당 방법을 쓰고 있다.&lt;/P&gt;
&lt;P&gt;그러므로, &lt;U&gt;&lt;FONT color=#ff0099&gt;리턴값을 가진 메서드는 호출과 동시에 그 자체가 변수의 역할&lt;/FONT&gt;&lt;/U&gt;을 할 수 있다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;또한 메서드는 매개변수를 가질수 있는 데, 이는 메서드 내의 지역변수와 동일하다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;『메서드의 매개변수는 모두 Call By Value를 통해 전달된다.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Call By Value는 값복사라고도 하며, 이는&lt;/P&gt;
&lt;P&gt;두 개의 메모리가 존재하고 한쪽의 메모리에 들어있는 값을 다른 쪽의 메모리로 그 값을&lt;/P&gt;
&lt;P&gt;복사하는 행위를 말한다.&lt;/P&gt;
&lt;P&gt;(이전에 C를 공부할 때 매개변수를 모두 포인터로 쓰는 것이 좋다는 말을 들었다. 이는 값을&lt;/P&gt;
&lt;P&gt;복사하는 것이 아닌 포인터만 넘기므로 속도가 더 빠르다는 것이다. 포인터는 4byte이므로&lt;/P&gt;
&lt;P&gt;구조체를 넘기는 것 보다는 확실히 빠를 것 같다. 후에 나올 것 같지만, 자바에서도 클래스를&lt;/P&gt;
&lt;P&gt;매개변수로 사용할 때는 클래스를 복사해서 넘기는 것이 아니라&amp;nbsp;클래스의 레퍼런스 - 결국은 포인터 -&lt;/P&gt;
&lt;P&gt;를 복사하여 넘긴다. )&lt;/P&gt;&lt;br&gt;&lt;br&gt;tag : &lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=클래스&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;클래스&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=메서드&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;메서드&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=소설같은 자바&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;소설같은 자바&lt;/a&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>2장 Concept of Class</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/jinstyner/2430037"/>
		<id>tag:blog.daum.net,2009:jinstyner.2430037</id>
	    <author>
		    <name>고추장듬뿍</name>
	    </author>
	    <updated>2008-02-20T22:57:21Z</updated>
	    <published>2008-02-20T22:57:21Z</published>
	    <content type="html">
	    	&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff3300 size=4&gt;■ 클래스와 객체의 개념을 안다면 자바의 절반 정도를 깨달은 것이다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff3300 size=4&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT color=#ff3300 size=4&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;1. 기본 데이터 타입으로는 한계가...&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;기본 데이터 타입에는 하나의 데이터만 담을 수가 있다. 2개 이상의 데이터를 하나의 데이터 타입에 담을 수 있을까?(물론 배열을 사용하면 가능하지만.) 그리고... 데이터라는 것은 서로 연관되어 있기 마련이다. 이런 데이터의 연관성을 좀 더 쉽게 알아 볼 수 있고, 관리할 수 있는 방법이 없을까?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;『C언어에서는 사용자 정의 데이터 타입으로 구조체를 제공한다.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;자바의 클래스를 이해하기 위해, C언어의 구조체를 살펴 보자.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;2. 구조체가 무엇인고?&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;구조체는 앞에서 말한 것 처럼 사용자가 정의한 데이터 타입이다. 여러개의 변수를 묶어서 하나의 변수로 정의할 수 있다. 배열과는 뭐가 다르냐고? 배열과는 달리 서로 다른 타입의 변수를 묶는 것도 가능하다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp; C 언어에서의 Person 구조체 선언&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; struct Person {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int age;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float height;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float weight;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이렇게 만들어진 구조체는 Person이라는 데이터 타입으로 사용이 가능하다. ( OOP에 익숙한 사람이라면 클래스와 비슷하지만 멤버 메소드가 빠졌다는 것을 알 수 있을 것이다 - 함수의 포인터를 사용하면 메소드를 넣는 것도 가능하다.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp; 구조체의 사용&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈ struct Person sister;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈ sister.age&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 15;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈ sister.height&amp;nbsp;&amp;nbsp;&amp;nbsp; = 165.3F;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈ sister.weight&amp;nbsp;&amp;nbsp;&amp;nbsp;= 51.0F&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;3. 클래스로 가는 길목&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;왜 구조체를 알아야 하는 것일까? 그것은 구조체가 클래스의 할아버지뻘이기 때문이다.&lt;/P&gt;
&lt;P&gt;수많은 사람들이 객체지향을 설명하면서 은폐화, 캡슐화, 다형성이라는 말을 한다. 하지만 그러한&lt;/P&gt;
&lt;P&gt;단어들은 이전 언어에서 약간의 개선 사항밖에는 되지 않는다. 이전는 클래스 없이 구조체와&lt;/P&gt;
&lt;P&gt;함수 많으로 클래스의 기능을 모두 구현했었다. &lt;U&gt;&lt;FONT color=#ff0099&gt;하지만 비효율적인 관리와 확장성으로 인해&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;FONT color=#ff0099&gt;구조체와 다른 기능들을 결합시켜 약간 발전된 형태를 만들어 낸 것이 클래스이다.&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;『 구조체는 데이터 타입을 만드는 데이터 타입 생성기다&lt;/FONT&gt;&lt;/STRONG&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;4. 클래스&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;자바에서는 구조체를 사용하지 않는다. 구조체보다 훨씬 발전된 형태의 클래스를 사용한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;클래스의 사용&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;public class Person {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int age;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public&amp;nbsp;float height;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public float weight;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;Person&amp;nbsp;클래스의 분석&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;class :&amp;nbsp;클래스를 선언하는 키워드&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;Person :&amp;nbsp;새로운 데이터 타입의 이름&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;age, height, weight :&amp;nbsp;타입내의 멤버&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;『 클래스는 생성 후 별도의 메모리 생성 과정을 거쳐야 한다.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;구조체와는 다르게 별도의 메모리 생성을 거쳐야 한다. (사실 자바는 포인터가 없다고 하지만,&lt;/P&gt;
&lt;P&gt;클래스 생성 후 메모리를 할당하는 과정을 거쳐야 한다는 사실은 자바는 전부 포인터라는 말과&lt;/P&gt;
&lt;P&gt;동일하다고 생각한다. 다만 그 포인터를 조작할 수 없을 뿐...)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp;&amp;nbsp;클래스의 선언과 메모리 생성&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;Person brother = new Person();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;Person&amp;nbsp;sister&amp;nbsp; &amp;nbsp;= new Person();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;클래스로 변수만 선언했을 때 메모리가 생성되지 않는다. &lt;U&gt;&lt;FONT color=#ff0099&gt;메모리를 생성하기 위해서는&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;FONT color=#ff0099&gt;반드시 new 연산자와 생성자를 함께 사용해야한다.&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;&lt;br&gt;&lt;br&gt;tag : &lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=자바&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;자바&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=소설같은 자바&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;소설같은 자바&lt;/a&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>1장 The Language</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/jinstyner/1961588"/>
		<id>tag:blog.daum.net,2009:jinstyner.1961588</id>
	    <author>
		    <name>고추장듬뿍</name>
	    </author>
	    <updated>2008-01-29T22:58:54Z</updated>
	    <published>2008-01-29T22:58:54Z</published>
	    <content type="html">
	    	&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#ff3300 size=4&gt;■ 데이터 타입은 클래스를 이해하기 위한 언어적인 기초이다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;1. 데이터 타입이 뭐지?&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;지금까지 데이터 타입을 &quot;여러 타입의 자료형을 미리 정해둔 것&quot;정도로만 이해하고 있었다.&lt;/P&gt;
&lt;P&gt;그러나 좀 더 깊이 이해한다면 늘 쓰면서도 아리송했던 클래스에 대해 한발짝 더 다가갈 수 있다.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#307f00 size=2&gt;&lt;STRONG&gt;『데이터 타입은 메모리를 얻어오기 위한 수단이다』&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;데이터 타입이 나오게 된 근본적인 이유는 프로그래머가 메모리를 얻어올 때 &lt;/P&gt;
&lt;P&gt;그 크기를 지정한다는 의미를 가지고 있다. 물리직인 메모리 공간을 얻어오기 위해서는&lt;/P&gt;
&lt;P&gt;다음과 같은 절차가 필요하다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;▣&amp;nbsp; 메모리를 얻고 사용하는 절차&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 필요한 메모리의 크기(Size)를 정한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 크기에 해당하는 만큼의 메모리를 얻는다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 메모리에 데이터를 집어 넣는다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;만약 4바이트의 메모리를 얻어내는 작업이 빈번하게 일어난다면 이를 위한 일반적인&lt;/P&gt;
&lt;P&gt;방법을 제공해 줌으로써 좀 더 편하게 프로그래밍 할 수 있다. 이러한 &lt;U&gt;&lt;FONT color=#ff0099&gt;편의를 위해&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;U&gt;&lt;FONT color=#ff0099&gt;메모리의 크기를 미리 지정해 두는 데 이것을 일컬어 데이터 타입&lt;/FONT&gt;&lt;/U&gt;이라고 한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;2. int a; 에 대해 알아 봅시다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;int a;를 이해하지 못하는&amp;nbsp;프로그래머는 없을 거라고 생각한다.&lt;/P&gt;
&lt;P&gt;&quot;int형 a라는 변수를 선언하는 것&quot; 이라는 의미에 더해서, 위에서 알아본 데이터 타입의&lt;/P&gt;
&lt;P&gt;의미를 적용하여 다시 한번 알아 보자.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#156200 size=2&gt;『int a; 라는 코드는 변수 a에 메모리를 할당하는 것이다.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000&gt;▣&amp;nbsp; int a;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;4 바이트의 메모리를 얻는다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;얻은 메모리의 위치(주소)를 받아낸다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp; 메모리의 위치를 a라는 이름과 연결시켜 준다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000 size=3&gt;3. 데이터 타입&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=3&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;그럼 이제 데이터 타입에 대해 좀 더 자세히 알아보자.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#156200 size=2&gt;『데이터 타입은 메모리의 크기(Size)와 형태(Type)을 지정하기 위한 도구이다.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;앞에서 말한 것 처럼 데이터 타입은 메모리를 얻어오기 위한 수단 중 하나이다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;메모리를 얻어오기 위해서는 &lt;U&gt;&lt;FONT color=#ff0099&gt;얼만큼 가져올 것인가&lt;/FONT&gt;&lt;/U&gt;를 지정해야 하며,&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;얻어온 메모리를 차후에 해석하기 위해서는 &lt;U&gt;&lt;FONT color=#ff0099&gt;메모리가 어떤 형태로 저장되어 있는지&lt;/FONT&gt;&lt;/U&gt;를&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;알아야한다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000 size=2&gt;▣&amp;nbsp;&amp;nbsp;기본 데이터 타입(Primitive Data Type)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;컴파일러 차원에서 미리 제공되는 데이터 타입을 기본 데이터 타입이라고 한다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(자바에서 char형은 2바이트이다. - 유니코드 지원을 위해 )&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000 size=2&gt;▣&amp;nbsp;&amp;nbsp;데이터 타입의 목적&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;생설항 메모리의 크기(Size)를 지정하기 위한 목적으로 사용한다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;메모리의 형태(Type)을 지정하는 목적으로 사용한다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( 메모리의 형태란 비트의 조합을&amp;nbsp;의미한다. )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;데이터 타입으로 변수를 만들 수 있다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000 size=3&gt;4. 변수&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;데이터 타입을 통해 메모리를 확보한다는 것은 알았다. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;그럼 이렇게 확보한 메모리에 어떻게 접근할 수 있을까?&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#156200 size=2&gt;『데이터 타입에 임의의 이름(변수)를 부여하면, 그 임의의 이름을&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#156200 size=2&gt;&amp;nbsp;&amp;nbsp; 통해 메모리에 접근할 수 있다.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;FONT color=#307f00 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT color=#156200&gt;&lt;STRONG&gt;『변수란 데이터 타입에 명시된 형태의 데이터를 담을 수 있는 메모리이다.&lt;/STRONG&gt;&lt;STRONG&gt;』&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;메모리를 확보하게 되면, 그 메모리에 접근할 수 있게 해당 메모리의 주소를&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;얻게 된다. 하지만 &lt;U&gt;&lt;FONT color=#ff0099&gt;사람이 이 주소(메모리의 번지)를 기억하는 것은 힘들기 때문에&lt;/FONT&gt;&lt;/U&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;U&gt;&lt;FONT color=#ff0099&gt;변수라는 것을 사용하고 변수에 실제적인 메모리 주소를 연결(mapping)하는 것&lt;/FONT&gt;&lt;/U&gt; 이다.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;프로그램상에서 프로그래머가 a를 사용하게 되면, a는 내부의 심볼테이블(Symbol Table)에서&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;a와 연결된 주소를 찾아 가게 된다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000 size=2&gt;▣&amp;nbsp;&amp;nbsp;심볼 테이블(Symbol Table)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;컴파일러가 프로그램 내에 필요한 변수들을 주소로 맵핑하기 위해 만드는 심볼들의 테이블&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000 size=2&gt;▣&amp;nbsp;&amp;nbsp;변수의 목적&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;변수를 만드는 이유는 데이터를 보관하기 위해서이다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000 size=2&gt;▣&amp;nbsp;&amp;nbsp;변수의 이름&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp; ◈&amp;nbsp;&amp;nbsp;자바에서 변수의 이름은 해당 메모리를 핸들할 수 있는 수단이다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000000 size=3&gt;5. 상수&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;int a = 5; 라는 코드는 변수 a에 5라는 상수를 할당한다는 뜻이다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;그렇다면 상수라는 것은 무엇인가? 상수는 그 자체가 수이며 내가 만든 것이&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;아니라 이미 만들어져 있는 것을 말한다. 누구도 바꿀 수 없는, 이미 존재하는 데이터이다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#156200 size=2&gt;『우리가 알고 있으며, 바꿀 수 없는 데이터를 상수(Contant)라고 한다.』&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;변수의 의미는 데이터를 보관하는 일이지만, &lt;U&gt;&lt;FONT color=#ff0099&gt;데이터 그 자체를 말할 때는 상수&lt;/FONT&gt;&lt;/U&gt;라고 한다.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2&gt;'a'도 문자표에 명시된 수(Number)이기 때문에 상수에 해당한다.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;br&gt;&lt;br&gt;tag : &lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=상수&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;상수&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=변수&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;변수&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;/_blog/tagArticleList.do?BLOGID=0Ixuv&amp;amp;tagName=데이터 타입&quot; rel=&quot;tag&quot; target=&quot;_blank&quot;&gt;데이터 타입&lt;/a&gt;
	    </content>
	    	</entry>
      </feed>
