๋กœ์ผ“๐Ÿพ
article thumbnail
๋ฐ˜์‘ํ˜•

https://image.freepik.com/free-vector/man-programmer-working-computer-with-code-screen-illustration_87749-275.jpg

 

"์ž๋ฐ”๋ฅผ ์ •๋ง ๋ญ๋ž„๊นŒ.. ์œก๊ตฐ์‚ฌ๊ด€ํ•™๊ต ๋‚˜์˜ค๋Š” ์ค‘๋Œ€์žฅ ๊ฐ™์€ ๋Š๋‚Œ์ด๋‹ค.. ์—„์ฒญ ๋Œ€๋‹จํ•˜์ง€๋งŒ ์—„๊ฒฉํ•ด์„œ ์‹ซ๋‹ค๊ณ  ํ•ด์•ผํ• ๊นŒ..

 

๋ถ„๋ช… ๋ณด์ด๊ธฐ์—” ๊ฐ™์•„๋ณด์ด์ง€๋งŒ ๋‹ค๋ฅธ๊ฒŒ ๋„ˆ๋ฌด ๋งŽ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๊ฐ€ ๊ด€๋Œ€ํ•œ๊ฒƒ์— ๋น„ํ•ด ์ž๋ฐ”๋Š” ์ƒ๋‹นํžˆ ์—„๊ฒฉํ•˜๋‹ค. ์—„๊ฒฉํ•œ ๊ณณ์—์„œ ์˜ค๋Š” ์žฅ์ ์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ ๊ทธ๋งŒํผ ๊ฐœ๋ฐœ์ž๋“ค์„ ๊ฐ€๋” ๊ดด๋กญํžŒ๋‹ค."

 

๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๊ธ€์—๋Š” ์ €๋ฅผ ์—„์ฒญ๋‚˜๊ฒŒ ๊ดด๋กญํ˜”๋˜ equals() ์™€ == ์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๊ธ€์— ์•ž์„œ ์ดํ•ดํ•˜๋Š”๋ฐ ํฐ ๋„์›€์„ ์ฃผ์‹  ๋ฐ• ๋ณธ๋ถ€์žฅ๋‹˜๊ป˜ ๊ฐ์‚ฌ์˜ ์ธ์‚ฌ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค!!

 


l String ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ

 

String์€ int, float, double ๋“ฑ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ž๋ฐ”์—์„œ๋Š” ํด๋ž˜์Šค๋กœ ํ†ตํ•ฉ๋‹ˆ๋‹ค. ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํ˜•๊ณผ ๋‹ค๋ฅด๊ฒŒ ๊ฐ์ฒด๋กœ๋„ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•˜์—ฌ String ์ƒ์„ฑ
  • new ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ String ๊ฐ์ฒด ์ƒ์„ฑ

 

package sec01.seco1;

public class testClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "test"; // ๋ฆฌํ„ฐ๋Ÿด ์‚ฌ์šฉ
		String str2 = new String("test"); // new ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ
		
		System.out.println("str => " + str);
		System.out.println("str2 => " + str2);
	}

}

 

 

๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑํ•  ์‹œ String์€ String Constant Pool ์ด๋ผ๋Š” ๊ณณ์— ์ƒ์„ฑ๋˜๊ณ , new ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๋ฉด Heap ์ด๋ผ๋Š” ๊ณณ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฐฉ์‹๋‹ค ๊ฒฐ๊ตญ ๋ฉ”๋ชจ๋ฆฌ์— ์ฃผ์†Œ ์˜์—ญ์„ ํ• ๋‹นํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๋ก ๋ถ€ํ„ฐ ์–˜๊ธฐํ•˜๋ฉด equals ๊ฒฝ์šฐ ๋ฌธ์ž์—ด ์ž์ฒด๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด๊ณ , == ๋Š” String์˜ ์ฃผ์†Œ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

 

package sec01.seco1;

public class testClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "test"; // ๋ฆฌํ„ฐ๋Ÿด ์‚ฌ์šฉ
		String str2 = new String("test"); // new ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ
		String str3 = "test";
		
		
		if(str == str2) {
			System.out.println("str ์™€ str2 ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค.");
		}else{
			System.out.println("str ์™€ str2 ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค."); // ์ถœ๋ ฅ
		}
		
		if(str == str3) {
			System.out.println("str ์™€ str3 ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค."); // ์ถœ๋ ฅ
		}else {
			System.out.println("str ์™€ str3 ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.");
		}
		
		if(str.equals(str3)) {
			System.out.println("equal ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ str ์™€ str3 ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค."); //์ถœ๋ ฅ
		}else {
			System.out.println("equal ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ str ์™€ str3 ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.");
		}
	}

}

 

๊ฐ๊ฐ์˜ ์กฐ๊ฑด๋ฌธ์—์„œ ๊ณผ์—ฐ ์–ด๋–ป๊ฒŒ ์ถœ๋ ฅ๋ ๊นŒ์š”??

 

์ฒซ๋ฒˆ์งธ ์กฐ๊ฑด๋ฌธ์€ "๋‹ค๋ฆ…๋‹ˆ๋‹ค"๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ , ๋‘๋ฒˆ์งธ ์กฐ๊ฑด๋ฌธ์€ "๊ฐ™์Šต๋‹ˆ๋‹ค"๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

 

๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑ์‹œ์ผœ์ค€ String ์˜ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด ๋น„๊ต ํ•  ๋•Œ  ๋ฌธ์ž์—ด์ด ๊ฐ™์œผ๋ฉด true๋ฅผ ์ถœ๋ ฅํ•˜์ง€๋งŒ, ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑ์‹œ์ผœ์ค€ String์™€ new ์—ฐ์‚ฐ์‚ฌ๋ฅผ ์ด์šฉํ•ด ์ƒ์„ฑํ•œ String์€ ๋ถ„๋ช… ๋ฌธ์ž์—ด์€ ๊ฐ™์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋œ ์ฃผ์†Œ ์˜์—ญ์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅด๋‹ค๊ณ  ์ถœ๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰ ==๋Š” ์ฃผ์†Œ๋ฅผ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํ„ฐ๋Ÿด๊ณผ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ–ˆ์„ ๋•Œ๋Š” ๋‹ค๋ฅด๋‹ค๊ณ  ๋‚˜์˜ฌ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์„ธ๋ฒˆ์งธ equals๋Š” ๋ฌธ์ž์—ด ์ž์ฒด๋ฅผ ๋น„๊ตํ•œ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ์ฃผ์†Œ๊ฐ€ ๋‹ฌ๋ผ๋„ true๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋ฌธ์ž์—ด์„ ๊ฐ์ฒด๋กœ ๋ฐ›์„ ๊ฒฝ์šฐ ๊ทธ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋น„๊ต๋Š” String ์ฃผ์†Œ๊ฐ’์ด ๋‹ฌ๋ผ์„œ ๋น„๊ต ํ• ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 


l new ์—ฐ์‚ฐ์ž๋ฅผ == ๋กœ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?

 

package sec01.seco1;

public class testClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = new String("test");
		
		System.out.println(str == "test"); //false
		System.out.println(str.equals("test")); //true
		
		System.out.println(str.toString() == "test"); //false
		System.out.println((String) str == "test"); //false
		System.out.println(String.valueOf(str) == "test"); //false
	}

}

 

new ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑํ•œ String์„ ๊ทธ๋Ÿผ == ๋น„๊ต๋ฅผ ํ•˜์—ฌ์„œ true๋กœ ๋‚˜์˜ค๊ฒŒ ํ•ด์ค„์ˆœ ์—†์„๊นŒ๋ผ๋Š” ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ง  ํ›„ ์‹คํ–‰์‹œ์ผœ๋ดค๋Š”๋ฐ ๋‘๋ฒˆ์งธ ๋ง๊ณ ๋Š” ๋‹ค false๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค. 

 

์ฒซ๋ฒˆ์งธ ๊ฒฝ์šฐ, ์•ž์—์„œ ๋‹ค๋ฃจ์—ˆ๋“ฏ์ด ๋‹น์—ฐํžˆ ์ฃผ์†Œ ๋น„๊ต๋ฅผ ํ–ˆ์„ ๋•Œ ๊ทธ๋ƒฅ ๋ฌธ์ž์—ด๊ณผ new ์—ฐ์‚ฐ์ž๋กœ ๋งŒ๋“ค์–ด์ค€ String์˜ ์ฃผ์†Œ๋Š” ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— false๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค.

 

๋‘๋ฒˆ์งธ ๊ฒฝ์šฐ, equasl()๋ฅผ ์ด์šฉํ•˜์—ฌ String์˜ ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด ์ž์ฒด๋ฅผ ๋น„๊ตํ•จ์œผ๋กœ true๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค.

 

์„ธ๋ฒˆ์งธ,๋„ค๋ฒˆ์งธ, ๋‹ค์„ฏ๋ฒˆ์งธ ๊ฒฝ์šฐ new ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑ์„ ํ–ˆ์„์‹œ Object ํ˜•ํƒœ๋ฅผ String ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์ค€ ํ›„ == ๋น„๊ต๋ฅผ ํ•˜๋ฉด ๋ ์ค„ ์•Œ์•˜๋Š”๋ฐ false๊ฐ€ ์ถœ๋ ฅ๋์Šต๋‹ˆ๋‹ค.

 

์ •ํ™•ํ•œ ์ด์œ ๋Š” ์•„๋‹์ˆ˜ ์žˆ์ง€๋งŒ, ์ œ ์ถ”์ธก์œผ๋กœ๋Š” new ์—ฐ์‚ฐ์ž๋กœ ์ƒ์„ฑํ–ˆ์„ ๋‹น์‹œ str ๊ฐ์ฒด๋Š” ์ด๋ฏธ ๋ฉ”๋ชจ๋ฆฌ์— ์ž์‹ ๋งŒ์˜ ์ฃผ์†Œ ์˜์—ญ์„ ๊ฐ–๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ casting, toString, String.valueOf ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด์˜ ํ˜•์„ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ์ด์ง€ ๊ทธ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ”๊ฟ”์ฃผ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด์˜ ํ˜•ํƒœ๋Š” ๋ฐ”๋€Œ์—ˆ์ง€๋งŒ ์ฃผ์†Œ ์˜์—ญ์€ ์—ฌ์ „ํžˆ ๊ทธ๋Œ€๋กœ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์†Œ๋ฅผ ๋น„๊ตํ•ด์ฃผ๋Š” == ํ•  ๊ฒฝ์šฐ ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— false๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ œ ๊ฒฐ๋ก ์€ ๋”ฐ๋ผ์„œ str ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝ์‹œ์ผœ์ฃผ์ง€ ์•Š๋Š” ํ•œ ์ด๋ฏธ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์— ๋Œ€ํ•ด ์•„๋ฌด๋ฆฌ ํ˜•ํƒœ๋ฅผ ๋ฐ”๊ฟ”๋ณด์•„๋„ == ๋น„๊ต๋Š” ํ• ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

์ •ํ™•ํ•œ ๋‹ต์€ ์•„๋‹ˆ์ง€๋งŒ, ์ €๋Š” ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ˜น์‹œ ๋‹ต์— ๋Œ€ํ•ด ์•„์‹œ๋Š” ๋ถ„์ด ์žˆ์œผ์‹œ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

 


l ์š”์•ฝ

 

๋ฌธ์ž์—ด ๋น„๊ต ํ• ๊ฒฝ์šฐ ์›ฌ๋งŒํ•˜๋ฉด ๊ทธ๋ƒฅ equals๋ฅผ ์‚ฌ์šฉํ•ด๋ผ ์ž…๋‹ˆ๋‹ค.

  • equals : ๋ฌธ์ž์—ด ์ž์ฒด ๋น„๊ต
  • == : ์ฃผ์†Œ ๋น„๊ต

 

 

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

 

"๋‚œ ๋ฐ˜๋“œ์‹œ ๋ฐฑ์—”๋“œ ์™•์ด ๋ ๊ฑฐ์•ผ"

 

๋ฐ˜์‘ํ˜•
profile on loading

Loading...