초기화 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
11번째 줄: 11번째 줄:
 
위와 같은 경우, 변수 초기화를 하지 않아서 'The local variable a may not have been initialized'라는 에러가 뜨게 된다. 만약 int a = 1;을 입력하면 초기화가 되고 정상적으로 출력이 된다. 이를 통해 초기화가 무슨 역할인지 간단하게 알 수 있다. [[자바]](Java)에서 초기화는 객체를 선언하고 값을 최초로 할당하는 것이다. int a = 10; 이렇게 작성한 것은 선언과 동시에 초기화한 것이고, 이후에 a = 20; 을 입력하면 초기화가 아니라 값을 바꾸는 할당(allocation)이 된다.<ref>Wakestand, 〈[https://wakestand.tistory.com/92) 자바 초기화는 무슨 뜻이고 왜 해야할까?]〉, 《티스토리》, 2019-10-17</ref>
 
위와 같은 경우, 변수 초기화를 하지 않아서 'The local variable a may not have been initialized'라는 에러가 뜨게 된다. 만약 int a = 1;을 입력하면 초기화가 되고 정상적으로 출력이 된다. 이를 통해 초기화가 무슨 역할인지 간단하게 알 수 있다. [[자바]](Java)에서 초기화는 객체를 선언하고 값을 최초로 할당하는 것이다. int a = 10; 이렇게 작성한 것은 선언과 동시에 초기화한 것이고, 이후에 a = 20; 을 입력하면 초기화가 아니라 값을 바꾸는 할당(allocation)이 된다.<ref>Wakestand, 〈[https://wakestand.tistory.com/92) 자바 초기화는 무슨 뜻이고 왜 해야할까?]〉, 《티스토리》, 2019-10-17</ref>
  
== 방법 ==
+
==변수의 초기화==
변수 선언과 동시에 무조건 초기화를 할 필요는 없다. 초기화는 필요할 때만 하면 되는데, 초기화를 하면 초심자에게 있어서 선택의 혼란함을 줄일 수 있으며 설명이 쉬워진다.
+
[[변수]]를 선언하고 처음으로 값을 저장하는 것을 변수 초기화라고 한다. 변수의 초기화는 경우에 따라 필수적일 수도 선택적일 수도 있지만 가능하면 선언과 동시에 적절한 값으로 초기화하는 것이 바람직하다. [[멤버변수]]는 초기화를 하지 않아도 변수의 타입에 맞는 기본값으로 초기화가 이루어지지만 지역 변수는 사용하기 전에 반드시 초기화가 이루어져야 한다.<ref name="티스토리">더블에스, 〈[https://doublesprogramming.tistory.com/73 자바 - 변수의 초기화]〉, 《티스토리》, 2017-01-31</ref>
 +
 
 +
===명시적 초기화===
 +
변수 선언과 동시에 초기화하는 것을 명시적 초기화(explicit initialization), 변수의 초기화라고 한다. 가장 기본적이면서도 간단한 초기화 방법이므로 여러 초기화 방법 중에서도 가장 먼저 고려되어야 한다.<ref name="티스토리"></ref>
 +
 
 +
===생성자===
 +
[[생성자]](constructor)는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 [[서브루틴]]을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 객체의 생성 시에 호출되기 때문에 '생성자'라는 이름이 붙었다. 생성자는 대체로 멤버 함수와 같은 모양을 하고 있지만, 값을 반환하지 않는다는 점에서 엄밀한 의미의 함수는 아니다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%83%9D%EC%84%B1%EC%9E%90 생성자]〉, 《위키백과》</ref>
 +
 
 +
===초기화 블록===
 +
초기화 블록(initialization block)은 종류에 따라 정리된다. 변수 선언과 동시에 무조건 초기화를 할 필요는 없다. 초기화는 필요할 때만 하면 되는데, 초기화를 하면 초심자에게 있어서 선택의 혼란함을 줄일 수 있으며 설명이 쉬워진다. 초기화 블록 내에는 [[메소드]](method) 내에서와같이 [[조건문]], [[반복문]], [[예외처리]]구문 등을 자유롭게 사용할 수 있음으로, 초기화 작업이 복잡하여 명시적 초기화만으로는 부족한 경우 초기화 블록을 사용한다.
 +
 
 +
* '''[[클래스]] 초기화 블록''' : 클래스를 초기화하는데 사용하며, 처음 메모리에 로딩될 때 한 번만 수행한다.
 +
* '''[[인스턴스]] 초기화 블록''' : 인스턴스 변수를 초기화하는 데 사용한다. 생성자와 같이 인스턴스가 생성될 때 수행되는데, 생성자보다 먼저 수행된다.<ref name="티스토리"></ref>
 +
 
 
===모두 다 초기화===
 
===모두 다 초기화===
 
모든 변수를 선언과 동시에 초기화를 해 주는 과정으로, 어느 정도 숙련이 되지 않을 때에는 오히려 모두 다 초기화해 주는 것이 편할 수 있다.
 
모든 변수를 선언과 동시에 초기화를 해 주는 과정으로, 어느 정도 숙련이 되지 않을 때에는 오히려 모두 다 초기화해 주는 것이 편할 수 있다.
27번째 줄: 40번째 줄:
 
===선택적 초기화===
 
===선택적 초기화===
 
초기화가 필요한 변수만 선택적으로 초기화하는 방법으로 소스 코드마다 무엇을 초기화해야 하는지 직접 찾아보아야 하는 단점이 있지만 쓸데없는 [[코드]]가 추가되지는 않는다. 비교적 생각해야 하는 문제가 있기 때문에 초심자가 다루기에는 살짝 까다로울 수 있다. 따라서 초심자의 경우에는 모두 다 초기화하는 것을 권장하고, 어느 정도 숙련도가 오른 사람에게는 선택적 초기화를 권장한다.<ref>F.R.I.D.A.Y., 〈[https://pang2h.tistory.com/188 변수 초기화]〉, 《티스토리》, 2019-04-06</ref>
 
초기화가 필요한 변수만 선택적으로 초기화하는 방법으로 소스 코드마다 무엇을 초기화해야 하는지 직접 찾아보아야 하는 단점이 있지만 쓸데없는 [[코드]]가 추가되지는 않는다. 비교적 생각해야 하는 문제가 있기 때문에 초심자가 다루기에는 살짝 까다로울 수 있다. 따라서 초심자의 경우에는 모두 다 초기화하는 것을 권장하고, 어느 정도 숙련도가 오른 사람에게는 선택적 초기화를 권장한다.<ref>F.R.I.D.A.Y., 〈[https://pang2h.tistory.com/188 변수 초기화]〉, 《티스토리》, 2019-04-06</ref>
 
==변수의 초기화==
 
[[변수]]를 선언하고 처음으로 값을 저장하는 것을 변수 초기화라고 한다. 변수의 초기화는 경우에 따라 필수적일 수도 선택적일 수도 있지만 가능하면 선언과 동시에 적절한 값으로 초기화하는 것이 바람직하다. [[멤버변수]]는 초기화를 하지 않아도 변수의 타입에 맞는 기본값으로 초기화가 이루어지지만 지역 변수는 사용하기 전에 반드시 초기화가 이루어져야 한다.<ref name="티스토리">더블에스, 〈[https://doublesprogramming.tistory.com/73 자바 - 변수의 초기화]〉, 《티스토리》, 2017-01-31</ref>
 
 
===명시적 초기화===
 
명시적 초기화(explicit initialization)는 변수 선언과 동시에 초기화하는 것이다. 가장 기본적이면서도 간단한 초기화 방법이므로 여러 초기화 방법 중에서도 가장 먼저 고려되어야 한다.<ref name="티스토리"></ref>
 
 
===생성자===
 
[[생성자]](constructor)는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 [[서브루틴]]을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 객체의 생성 시에 호출되기 때문에 '생성자'라는 이름이 붙었다. 생성자는 대체로 멤버 함수와 같은 모양을 하고 있지만, 값을 반환하지 않는다는 점에서 엄밀한 의미의 함수는 아니다.<ref>〈[https://ko.wikipedia.org/wiki/%EC%83%9D%EC%84%B1%EC%9E%90 생성자]〉, 《위키백과》</ref>
 
 
===초기화 블록===
 
초기화 블록(initialization block)은 종류에 따라 정리된다. 초기화 블록 내에는 [[메소드]](method) 내에서와 같이 [[조건문]], [[반복문]], [[예외처리]] 구문 등을 자유롭게 사용할 수 있음으로, 초기화 작업이 복잡하여 명시적 초기화만으로는 부족한 경우 초기화 블록을 사용한다.
 
 
* '''[[클래스]] 초기화 블록''' : 클래스를 초기화하는데 사용하며, 처음 메모리에 로딩될 때 한 번만 수행한다.
 
* '''[[인스턴스]] 초기화 블록''' : 인스턴스 변수를 초기화하는 데 사용한다. 생성자와 같이 인스턴스가 생성될 때 수행되는데, 생성자보다 먼저 수행된다.<ref name="티스토리"></ref>
 
  
 
{{각주}}
 
{{각주}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)