logo

Java의 null에 대한 사실

Java를 포함한 모든 프로그래밍 언어는 null로 제한됩니다. null 관련 코드에서 문제를 겪지 않은 프로그래머는 없습니다. 프로그래머가 주로 겪는 일 NullPointer예외 null 데이터로 일부 작업을 수행하려고 할 때. NullPointerException은 java.lang 패키지에 속하는 클래스입니다.

null에 대한 사실을 이해하기 전에 먼저 Java 변수에 대한 지식이 필요합니다. 당신이 무엇을 모른다면 자바 변수 즉, 다음 링크를 통해 이동하세요.

모든 개발자는 다음과 같은 Java의 null 사실에 대해 알고 있어야 합니다.

대소문자 구분

Java에서는 null이 리터럴이고 키워드가 Java에서 대/소문자를 구분하기 때문에 C 프로그래밍에서처럼 null을 NULL 또는 0으로 쓸 수 없습니다.

null의 대소문자 구분 동작을 이해하기 위해 예를 들어 보겠습니다.

NullExample1.java

 // import classes and packages if any public class NullExample1 { // main() method start public static void main (String[] args) throws java.lang.Exception { // declare and initialize an object with NULL Object obj1 = NULL; // declare and initialize an object with null Object obj2 = null; // print both objects System.out.println('The value of obj1 is: '+obj1); System.out.println('The value of obj2 is: '+obj2); } } 

산출:

Java의 null에 대한 사실

참조 변수 값

기본적으로 Java에서는 모든 참조 변수에 null 값이 있습니다. 참조 변수는 Java에서 참조 유형의 객체/값을 표시하고 저장하는 데 사용됩니다. 클래스, 배열, 열거형 및 인터페이스 등은 Java의 일부 참조 유형입니다.

따라서 참조 유형에 객체가 전달되지 않으면 참조 유형은 null 값을 저장합니다.

null 값에 대해 참조 변수가 작동하는 방식을 이해하기 위해 예를 들어 보겠습니다.

NullExample2.java

 // import classes and packages if any public class NullExample2 { // declare two objects private static Object obj1; private static Object obj2; // main() method start public static void main (String[] args) { // print both objects System.out.println('The value of obj1 is: '+obj1); System.out.println('The value of obj2 is: '+obj2); } } 

산출:

Java의 null에 대한 사실

널 유형

Java에서 null은 객체도 아니고 유형도 아닙니다. 이는 모든 참조 유형 변수에 할당할 수 있는 특수 값입니다. string, int, double 등과 같이 원하는 모든 유형으로 null을 캐스팅할 수 있습니다.

참조 유형에 null 값을 할당하는 방법을 이해하기 위해 예를 들어 보겠습니다.

NullExample3.java

 // import classes and packages if any public class NullExample3 { // main() method start public static void main (String[] args) { // pass a null value to a different type of variable // pass null to String String str = null; // pass null to Integer Integer itr = null; // pass null to Double Double dbl = null; // casting null to String String castedStr = (String)null; // casting null to Integer Integer castedItr = (Integer)null; // casting null to Double Double castedDbl = (Double)null; // print all reference type System.out.println('The value of str is: '+str); System.out.println('The value of itr is: '+itr); System.out.println('The value of dbl is: '+dbl); System.out.println('The value of castedStr is: '+castedStr); System.out.println('The value of castedItr is: '+castedItr); System.out.println('The value of castedDbl is: '+castedDbl); } } 

산출:

Java의 null에 대한 사실

오토박싱과 언박싱

오토박싱 그리고 언박싱 Java에서 수행하는 가장 중요한 두 가지 작업입니다. 컴파일러가 던집니다. NullPointer예외 작업을 수행하는 동안 기본 박스형 데이터 유형에 null 값을 할당할 때.

autoboxing과 null의 unboxing 사실을 이해하기 위해 예를 들어 보겠습니다.

NullExample4.java

 // import classes and packages if any public class NullExample4 { // main() method start public static void main (String[] args) throws java.lang.Exception { // pass null value to a reference type Integer itr = null; // perform unboxing operation int data = itr; // print both objects System.out.println('The value of itr is: '+itr); System.out.println('The value of data is: '+data); } } 

산출:

Java의 null에 대한 사실

연산자 인스턴스

여부를 확인하기 위해 물체 지정된 유형의 인스턴스인지 여부에 관계없이 다음을 사용합니다. 대신에 운영자. 그만큼 대신에 연산자는 런타임 시 표현식 값이 null이 아닌 경우 true를 반환합니다. 이는 형변환 검사에서 중요한 역할을 합니다.

이해를 돕기 위해 예를 들어보자 대신에 운영자:

NullExample5.java

 // import classes and packages if any public class { // main() method start public static void main (String[] args) throws java.lang.Exception { // pass null value to a reference type Integer m = null; // pass a value to a reference type Integer n = 20; // print instanceof values System.out.println(m instanceof Integer); System.out.println(n instanceof Integer); } } 

산출:

Java의 null에 대한 사실

정적 대. 비정적 메서드

null 값이 있는 참조 변수에서는 비정적 메서드를 호출할 수 없습니다. 호출하면 NullPointerException이 발생하지만 null 값이 있는 참조 변수를 사용하여 정적 메서드를 호출할 수 있습니다. 정적 메서드는 정적 바인딩을 사용하여 결합되므로 Null 포인터 예외가 발생하지 않습니다.

null의 사실을 이해하기 위해 예를 들어보겠습니다.

NullExample6.java

 // import classes and packages if any public class NullExample6 { // define static method public static void staticMethod() { //it can be called by using a null reference System.out.println('static method can be called by null reference.'); } // define non static method public void nonStaticMethod() { //it cannot be called by using a null reference System.out.println('static method cannot be called by a null reference.'); } // main() method start public static void main (String[] args) throws java.lang.Exception { NullExample6 exp = null; exp.staticMethod(); exp.nonStaticMethod(); } } 

산출:

Java의 null에 대한 사실

== 및 != 연산자

Java에서는 이 두 연산자에 null이 허용됩니다. 두 연산자 모두 Java에서 객체의 null을 확인하는 데 유용합니다.

이 두 연산자가 null과 어떻게 작동하는지 이해하기 위해 예를 들어 보겠습니다.

NullExample7.java

쉘 스크립트의 for 루프
 // import classes and packages if any public class NullExample7 { // main() method start public static void main (String[] args) { // pass null value to String type of variables // pass null to str1 String str1 = null; // pass null to str2 String str2 = null; // pass null to str3 String str3 = 'Test'; // compare strings if(str1 == str2){ System.out.println('str1 and str2 both are equal'); }else{ System.out.println('str1 and str2 are not equal'); } if(str2 == str3){ System.out.println('str2 and str3 both are equal'); }else{ System.out.println('str2 and str3 are not equal'); } if(str3 == str1){ System.out.println('str3 and str1 both are equal'); }else{ System.out.println('str3 and str1 are not equal'); } } } 

산출:

Java의 null에 대한 사실

모든 Java 개발자는 위에서 설명한 null에 대한 모든 사실을 알고 있어야 합니다.