Back-End/Java

[Java] toString()๊ณผ String.valueOf()์˜ ์ฐจ์ด์  ๋น„๊ต

์ฑ”๐Ÿป 2022. 1. 18. 14:46

Object ํ˜•ํƒœ์˜ ๊ฐ’์„ String ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด toString() ํ˜น์€ String.valueOf() ๋ฉ”์†Œ๋“œ์ด๋‹ค.

๋‘ ๋ฉ”์†Œ๋“œ ๋ชจ๋‘ ๊ฐ’์„ String์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค๋Š” ์ ์—์„œ ๋น„์Šทํ•˜์ง€๋งŒ, ๋ณ€๊ฒฝํ•˜๊ณ ์žํ•˜๋Š” Object๊ฐ€ null์ธ ๊ฒฝ์šฐ์—๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

๐Ÿ’กObject๊ฐ€ null์ผ๋•Œ?

toString()

  • Null PointerException(NPE)์„ ๋ฐœ์ƒ
  • ๋Œ€์ƒ ๊ฐ’์ด null์ด๋ฉด NPE๋ฅผ ๋ฐœ์ƒ → Object์— ๋‹ด๊ธด ๊ฐ’์ด String์ด ์•„๋‹ˆ์—ฌ๋„ ์ถœ๋ ฅ

String.valueOf()

  • "null"์ด๋ผ๋Š” ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ
  • ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ null์ด๋ฉด ๋ฌธ์ž์—ด "null"์„ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค → ํ•ญ์ƒ String ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ

์ด๋Ÿฐ ์ฐจ์ด ๋•Œ๋ฌธ์— valueOf๋Š” "null".equals(string)ํ˜•ํƒœ๋กœ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ฒดํฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.

๋˜ํ•œ, null๋กœ ์ธํ•ด ๋ฐœ์ƒ๋œ ์—๋Ÿฌ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ NPE(Null PointerException)๋ฅผ ๋ฐฉ์ง€ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์—์„œ๋Š” String.valueOf()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

destItemMap.get("LOWER_VAL") ์ด null ์ผ ๊ฒฝ์šฐ
String lowerCoatingVal1 = String.valueOf(destItemMap.get("LOWER_VAL"));
String lowerCoatingVal2 = destItemMap.get("LOWER_VAL").toString();
 
lowerCoatingVal1 = "null"
lowerCoatingVal2 = NullPointerException ๋ฐœ์ƒ
 
String.valueOf()์˜ null ์ฒดํฌ
String lowerCoatingVal1 = String.valueOf(destItemMap.get("LOWER_VAL"));
if("null".equals(lowerCoatingVal1)) {
    // To do Somting....
}
 
// equalsํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ์™ผ์ชฝ์— ์žˆ๋Š” ๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜๋ณด๋‹ค๋Š” ๋ฌธ์ž์—ด์„ ์™ผ์ชฝ์— ๋‘๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.
// ์ฆ‰ strTestVal์ด null์ธ ๊ฒฝ์šฐ ret = "1"์ธ if๋ฌธ์€ NPE๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
String strTestVal = null;
String ret = "";
 
/* Exception ๋ฐœ์ƒ */
if( !(strTestVal .equals("")) ) ret = "1";
 
/* ์ •์ƒ */
if( !("".equals(strTestVal)) ) ret = "2";

์ถœ์ฒ˜ : https://devuna.tistory.com/54?category=877323