어떤 목적으로 제공됩니까?Java에서 선언 할 때 기본적으로 0 만 할당 될 경우 int 변수를 0으로 초기화하는 이유는 무엇입니까?
작성자가 책에서 예제를 읽습니다.
int numOfGuesses=0;
어떤 목적으로 제공됩니까?Java에서 선언 할 때 기본적으로 0 만 할당 될 경우 int 변수를 0으로 초기화하는 이유는 무엇입니까?
작성자가 책에서 예제를 읽습니다.
int numOfGuesses=0;
0으로 자동 할당은 로컬 변수가 아닌 구성원에만 적용됩니다. 로컬 변수이고 = 0
이 생략 된 경우 해당 변수에는 0이 아니라 값이 없습니다. 할당되기 전에 값을 사용하려고하면 컴파일 오류가 발생합니다. 예를 들어,이 코드는 초기화되지 않은 로컬 변수 사용하려고 :
public class Program
{
public static void main(String[] args)
{
int numOfGuesses; // local variable
System.out.println(numOfGuesses);
}
}
을이 컴파일 오류 발생 :
public class Program
{
int numOfGuesses; // member variable
public void run()
{
System.out.println(numOfGuesses);
}
public static void main(String[] args)
{
new Program().run();
}
}
: 회원 작동 및 출력 제로 사용이 코드 반면
Program.java:6: variable numOfGuesses might not have been initialized
System.out.println(numOfGuesses);
을 멤버는 초기 zalue가 0이라는 사실을 내 코드가 사용하는 경우 무의미한 0으로 지정하는 경향이 있으며 내 코드가 초기 값을 사용하지 않으면 할당을 생략합니다 (예 : 값은 생성자 또는 다른 곳에 할당됩니다.) 그 결과는 어느 쪽이든 마찬가지이므로 스타일 문제 일뿐입니다.
더 분명합니다. 어떤 사람들은 좋아해. 이것은 필드에만 적용됩니다. 즉, 지역 변수를 초기화해야합니다. 기본값은 없습니다.
Java 컴파일 및 런타임이 다릅니다. 프로그램을 실행하면
, 모든 클래스가 클래스 로더로로드들은 다음과 같습니다
클래스가 처음 사용하는 경우이 작업이 완료. 실행 순서는 코드의 순서에 따라 정의됩니다.
실행 정적 블록
static{
//do something here
}
public static int number;
초기화; 가 .Their 주문 실행 오브젝트가 코드 순서에 의해 정의된다 작성할 때
완료의 초기화 다음 기이다.
실행 비 정적 블록
{
// do something here
}
비 정적 초기화 (예) 변수
public int instance_number;
enter code here
참조 : http://stackoverflow.com/questions/2843115/to-null-or-not-to-null-my-classs-attributes/ – Arkku
@happysoul : 위대한 답변 외에도, 그것은 당신의 의도를 분명하게합니다. * "numOfGuesses가 초기화되지 않았을 수 있습니다"(* 부분적으로 컴파일 할 수없는 소스/AST에서도) 알림을 실시간으로 얻을 수 있습니다. "*. 나는 지난 25 년 이래로 프로그래밍을 해오 고 있으며 그러한 알림은 ** 엄청난 시간을 절약합니다 **. 'default'값에 의존하는 것이 보통 오류이기 때문에 : 기본값을 사용하려고 했습니까? 아니면 사용하기 전에 할당 할 계획을 세웠습니까 (그리고 잊었습니까?)? – SyntaxT3rr0r