null?
์๋ฐ์ primitive ํ์
์ ๊ฒฝ์ฐ ์ด๊ธฐ๊ฐ์ผ๋ก 0์ด๋ false๊ฐ ๋ค์ด๊ฐ๋๋ค. ํ์ง๋ง, reference ํ์
์ ๊ฒฝ์ฐ ์ฃผ์๊ฐ์ด ๋ค์ด์์ผํ๊ณ , ์ฃผ์๊ฐ์ด ์ด๊ธฐํ ๋์ง ์์์ ๊ฒฝ์ฐ ์ฃผ์๊ฐ ์๋ค
๋ผ๊ณ ํํ์ ํด์ผํ๋๋ฐ ์ด ๋ null์ ์ฌ์ฉํฉ๋๋ค.
์ฆ, null์ด๋ผ๋ ๊ฒ์ ์๋ฌด ์ฃผ์๋ ๊ฐ๋ฆฌํค๊ณ ์์ง ์๋ค๋ผ๋ ์๋ฏธ๋ก ์ดํดํ๋ฉด ๋ฉ๋๋ค.
NullPointException
NullPointException(NPE)์ ์ปดํ์ผ ์์ ์ด ์๋ ๋ฐํ์ ์์ ์ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๊น๋ค๋ก์ด ์ค๋ฅ์ ๋๋ค. NPE๋ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ๋ฐ์ํฉ๋๋ค.
- null ๊ฐ์ฒด์ ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ
- null ๊ฐ์ฒด์ ํ๋์ ์ ๊ทผํ๊ฑฐ๋ ๊ฐ์ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ
- ๋น ๋ฐฐ์ด ๊ฐ์ฒด์ ๊ธธ์ด ์์ฑ์ ๊ฐ์ ธ์ฌ ๊ฒฝ์ฐ
...
String ๊ฐ์ฒด๊ฐ ๋น์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ
== null
๋ฌธ์์ด ๊ฐ์ฒด๊ฐ null์ธ ๊ฒฝ์ฐ true๋ฅผ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํฉ๋๋ค. ์ฆ, ""๋ null์ด ์๋๋๋ค.
class Main {
public static void main(String[] args) {
String str1 = null;
String str2 = "";
System.out.println(str1 == null); // true;
System.out.println(str2 == null); // false;
}
}
equals()
"".equals(String)์ผ๋ก null์ธ์ง ํ์ธํ ์ ์์ต๋๋ค. ๋น ๋ฌธ์์ด๊ณผ null์ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ํ, null์ธ ๊ฐ์ฒด๊ฐ equals ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด NPE๊ฐ ๋ฐ์ํฉ๋๋ค.
class Main {
public static void main(String[] args) {
String str1 = null;
String str2 = "";
System.out.println("".equals(str1)); // false;
System.out.println("".equals(str2)); // true;
// System.out.println(str1.equals("")); // NPE!!!
}
}
isEmpty
isEmpty๋ ๋ฌธ์์ด์ด ๋น๊ฐ์ด๋ฉด true, ๋น๊ฐ์ด ์๋๋ฉด false๋ฅผ ๋ฐํํด์ฃผ๋ ๋ฉ์๋์ ๋๋ค. ๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ null์ธ ์ํฉ์์ ์ฌ์ฉํ๋ฉด NPE์ด ๋ฐ์ํฉ๋๋ค.
class Main {
public static void main(String[] args) {
String str1 = null;
String str2 = "";
String str3 = " ";
// System.out.println(str1.isEmpty()); // NPE!!
System.out.println(str1 == null ? true : str1.isEmpty()); // true
System.out.println(str2.isEmpty()); // true
System.out.println(str3.isEmpty()); // false
}
}
public boolean isEmpty() {
return value.length == 0;
}
isBlank
java11์ดํ์ ์ถ๊ฐ๋ ๋ฉ์๋๋ก, ๋ฌธ์์ด์ด ๋น์ด์๊ฑฐ๋, ๊ณต๋ฐฑ์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ์์ผ๋ฉด true๋ฅผ ๋ฐํํฉ๋๋ค. trim ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฌธ์์ด์ด ๋น์ด์๋์ง ์ฝ๊ฒ ํ๋จํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ null์ธ ์ํฉ์์ ์ฌ์ฉํ๋ฉด NPE์ด ๋ฐ์ํฉ๋๋ค.
class Main {
public static void main(String[] args) {
String str1 = null;
String str2 = "";
String str3 = " ";
// System.out.println(str1.isBlank()); // NPE!!
System.out.println(str1 == null ? true : str1.isBlank()); // true
System.out.println(str2.isBlank()); // true
System.out.println(str3.isBlank()); // true
}
}
Optional
java8๋ถํฐ ์ง์ํฉ๋๋ค. null ์ฒดํฌ๋ฅผ ์ํด if-else ์ง์ฅ์ ๋น ์ง๋ ๊ฒ์ ํผํ ์ ์์ต๋๋ค. ์ฐ์ , Optional<> of์ Optional<> ofNullable ๋ ๋ฉ์๋๋ง ๊ณต๋ถํด๋ณด๊ฒ ์ต๋๋ค.
- of ๋ฉ์๋๋ ๋ฐ๋์ ์ฃผ์๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ด null์ธ ๊ฒฝ์ฐ NPE์ด ๋ฐ์ํฉ๋๋ค.
- ofNullable ๋ฉ์๋๋ ๊ฐ์ฒด๊ฐ null์ผ์๋ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํฉ๋๋ค. null์ผ๊ฒฝ์ฐ, NPE๋ฅผ ๋์ง์ง ์๊ณ ๋น Optional ๊ฐ์ฒด๋ฅผ ์ป์ด์ต๋๋ค.
class Main {
public static void main(String[] args) {
String str1 = null;
// Optional<String> opt1 = Optional.of(str1); // NPE!!
Optional<String> opt2 = Optional.ofNullable(str1);
System.out.println(opt2); // Optional.empty
}
}
์ฐธ๊ณ
'๐จโ๐ป Programming > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ํด๋์ค (1) (0) | 2024.12.31 |
---|