Java

[Java] ๋ฌธ์ž์—ด์˜ ๋ฌต์‹œ์  ์„ ์–ธ๊ณผ ๋ช…์‹œ์  ์„ ์–ธ์— ๋”ฐ๋ฅธ ๋ฌธ์ž์—ด ๋น„๊ต(Heap

joheamin 2025. 3. 28. 15:30

๐Ÿ”ท ๋ฌธ์ž์—ด ์„ ์–ธ๊ณผ ๋น„๊ต

โ— ==๋Š” ์ฃผ์†Œ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

โ— equals๋Š” ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

โ—พ ๋ฌต์‹œ์  ๋น„๊ต
String s1 = "๊ทธ๋ฆฐ"; String s2 = "๊ทธ๋ฆฐ"; 

if(s1 == s2))System.out.println("== : true"); 
else System.out.println("== : false"); 

if(s1 == s2))System.out.println("eqauls : true");
else System.out.println("eqauls : false");โ€‹

๐Ÿ‘‰ == : true
      eqauls : true


โ—พ ๋ฌต์‹œ ๋ช…์‹œ ๋น„๊ต
String s1 = "๊ทธ๋ฆฐ";
String s2 = "๊ทธ๋ฆฐ";
		
String s3 = new String("๊ทธ๋ฆฐ");
String s4 = new String("๊ทธ๋ฆฐ");

if(s1 == s3))System.out.println("== : true");
else System.out.println("== : false");

if(s1 == s2))System.out.println("eqauls : true");
else System.out.println("eqauls  : false");โ€‹

๐Ÿ‘‰ == : false
      eqauls : true


โ—พ ๋ช…์‹œ์  ๋น„๊ต
String s3 = new String("๊ทธ๋ฆฐ");
String s4 = new String("๊ทธ๋ฆฐ");

if(s3 == s4)System.out.println("== : true");
else System.out.println("== : false");

if(s3 == s4))System.out.println("eqauls : true");
else System.out.println("eqauls  : false");โ€‹

๐Ÿ‘‰ == : false
      eqauls : true

 

 

 


โ“ ์™œ ์ด๋Ÿฐ ๊ฒฐ๊ณผ?

์šฐ์„  eqauls ๋Š” ๊ฐ’๋งŒ์„ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๊ฐ€ ๋ช…ํ™•ํ•˜๋‹ค.

 

 

โœ”๏ธ ๊ทธ๋ ‡๋‹ค๋ฉด ์ฃผ์†Œ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” == ์— ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

 

โ—พ ๋ฌต์‹œ์  ๋ฌธ์ž์—ด์˜ ๋น„๊ต

new ์—†์ด ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์œผ๋กœ๋งŒ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์ผ ๊ฒฝ์šฐ
ex) String s1 = “๊ทธ๋ฆฐ”

“๊ทธ๋ฆฐ” ์ด๋ผ๋Š” ๋ฌธ์ž์—ด ์ž์ฒด๊ฐ€ Spring pool์ด๋ผ๋Š” ๊ณต๊ฐ„์— ์ €์žฅ๋œ๋‹ค.

๋ฆฌํ„ฐ๋Ÿด๊ฐ’์˜ ๋‹จ์œ„๋กœ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋˜ ๋‹ค๋ฅธ ๋ฌต์‹œ์  ์„ ์–ธ๋œ ๋ณ€์ˆ˜๊ฐ€
“๊ทธ๋ฆฐ” ์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ

Sptring pool ์—์„œ ๋™์ผํ•œ ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์ธ “๊ทธ๋ฆฐ” ์„ ์ฐพ์•„ ๊ฐ™์€ ๊ฒƒ์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ s1 = “๊ทธ๋ฆฐ” ๊ณผ s2 = “๊ทธ๋ฆฐ” ์€ Spring pool ๋‚ด์—์„œ
๊ฐ™์€ ์ฃผ์†Œ์— ์ €์žฅ๋˜ ์žˆ์œผ๋ฏ€๋กœ true๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

โ—พ ๋ช…์‹œ์  ๋ฌธ์ž์—ด์˜ ๋น„๊ต

new๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ํ•ด๋‹น ๋ฌธ์ž์—ด์€ heap ์˜์—ญ ์— ๊ฐ๊ฐ ์ €์žฅ๋œ๋‹ค.

heap์˜์—ญ์˜ ๊ฒฝ์šฐ ๊ฐ’์ด ๋™์ผํ•˜๋‹ค๊ณ  ํ•˜์—ฌ๋„ ์ฃผ์†Œ๊ฐ’์€ ์ „๋ถ€ ๋‹ค๋ฅด๊ฒŒ
์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ==์„ ํ†ตํ•ด ์ฃผ์†Œ ๊ฐ’์„ ๋น„๊ตํ•  ๊ฒฝ์šฐ

false๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค

๐Ÿค” ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์— ๋‹ค์‹œ ๋ฌต์‹œ์ ์œผ๋กœ ์„ ์–ธํ•  ๊ฒฝ์šฐ?

โ—พ๋ช…์‹œ์  ์„ ์–ธ๊ณผ ๋ฌต์‹œ์  ์„ ์–ธ
//๋ฌต์‹œ์  ์„ ์–ธ	
String s1 = "๊ทธ๋ฆฐ";
//๋ช…์‹œ์  ์„ ์–ธ
String s3 = new String("๊ทธ๋ฆฐ");

if(s3 == s1)System.out.println("s1 == s1 : true");
else System.out.println("s1 == s2 : false");

๐Ÿ‘‰ true


โ—พ ๋ช…์‹œ์  ๋ณ€์ˆ˜์— ๋ฌต์‹œ์  ์žฌ์„ ์–ธ

s1 = "ํ™๊ธธ๋™"; //๋ฌต์‹œ -> ๋ฌต์‹œ
s3 = "ํ™๊ธธ๋™"; //๋ช…์‹œ -> ๋ฌต์‹œ

if(s3 == s1)System.out.println("s1 == s1 : true");
else System.out.println("s1 == s2 : false");

๐Ÿ‘‰ true ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

 

 


๐Ÿค” ๋ฌต์‹œ์ ์œผ๋กœ ์žฌ์„ ์–ธํ•  ๊ฒฝ์šฐ heap์˜์—ญ์—์„œ Spring pool๋กœ ์ด๋™ํ•˜๋Š” ๊ฑธ๊นŒ?

โ— ๊ฐ’์„ ๋ฆฌํ„ฐ๋Ÿด๋กœ ์žฌํ• ๋‹น ํ•œ๋‹ค๊ณ ํ•ด์„œ heap์• ์„œ String pool๋กœ ์ด๋™ํ•˜๋Š”๊ฒƒ์€ ์šฐ์„  ์•„๋‹ˆ๋‹ค.

 

๋‹ค๋งŒ ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’์œผ๋กœ ์žฌํ• ๋‹น ํ•  ๊ฒฝ์šฐ

์ฐธ์กฐ ๋ณ€์ˆ˜๋Š” Spring pool ์— ์žˆ๋Š” “ํ™๊ธธ๋™”์˜ ์ฃผ์†Œ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ฒŒ๋œ๋‹ค.

 

new๋กœ ์ธํ•ด heap์˜์—ญ์— ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ทธ๋Œ€๋กœ ์กด์žฌํ•˜๋˜

 

์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ ํ•ด๋‹น ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐ ํ•˜์ง€ ์•Š๊ฒŒ ๋˜๊ธฐ๋•Œ๋ฌธ์—

๊ฒฐ๊ตญ ๊ฐ€๋น„์ง€์ปฌ๋ ‰ํ„ฐ๋กœ ์ธํ•ด ์ œ๊ฑฐ๋œ๋‹ค.