저는 Java에서 일하고 있습니다.
나는 일반적으로 다음과 같은 일부 개체를 설정합니다.
public class Foo {
private SomeObject someName;
// do stuff
public void someMethod() {
if (this.someName != null) {
// do some stuff
}
}
}
질문은 다음 someName
과 같습니다.이 예제 null
에서 reliably for all objects
Null 검사 초기화되지 않은 개체가 정확하다고 가정 할 수있는 것과 동일 합니까?
답변
정확합니다. 명시 적으로 초기화되지 않은 참조 유형의 정적 및 인스턴스 멤버는 모두 null
Java 에 의해 설정됩니다 . 동일한 규칙이 배열 구성원에 적용됩니다.
로부터 Java 언어 사양 , 섹션 4.12.5 :
변수의 초기 값
프로그램의 모든 변수에는 값이 사용되기 전에 값이 있어야합니다.
각 클래스 변수, 인스턴스 변수 또는 배열 구성 요소는 생성시 기본값으로 초기화됩니다.
[…] 모든 참조 유형의 기본값은
null
입니다.
위의 규칙은 지역 변수를 제외합니다. 명시 적으로 초기화해야합니다. 그렇지 않으면 프로그램이 컴파일되지 않습니다.
답변
경우 Object
참조가 선언되었지만 인스턴스화되었는지, 그 값입니다 null
.
답변
namespace Design
{
class Program
{
static void Main(string[] args)
{
Logger obj1; // By Default, the value of obj1 is null
Logger obj2 = new Logger(); // By Default the value of obj2 is
// Design.Logger which is not null
Console.WriteLine(obj2);
Console.Read();
}
}
class Logger
{
public Logger()
{
Console.writeline("Called");
}
}
}