๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โ˜•Java

[Java ์ดํ•ดํ•˜๊ธฐ] 8. ์ž๋ฐ”์˜ String(๋ฌธ์ž์—ด) ๊ธฐ์ดˆ (1)

by Luvbit 2024. 5. 12.

 


 

๐ŸฉทJava์˜ String์ด๋ž€?

Java์—์„œ์˜ String์€ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด์€ ๋ฌธ์ž๋“ค์˜ ๋ชจ์Œ์œผ๋กœ, ๋‘ ๊ธ€์ž ์ด์ƒ์˜ ๋ฌธ์ž๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

๐ŸŒŸ

๐Ÿ’ก  String์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์•„๋‹Œ ํด๋ž˜์Šค์ด๋‹ค.

 

String์€ 'int' ๋‚˜ 'double' ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์•„๋‹Œ Java์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‚ด์žฅ ํด๋ž˜์Šค๋ผ๋Š” ์ ์„ ๊ผญ ์ˆ™์ง€ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

String ํด๋ž˜์Šค๋กœ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๋ฉด, String ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ ์ด๋Š” ์ฐธ์กฐ ํƒ€์ž…์— ์†ํ•ฉ๋‹ˆ๋‹ค. 

๋ฐ์ดํ„ฐํƒ€์ž…๊ณผ ๊ฐ์ฒด์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

ํ•ญ๋ชฉ ์„ค๋ช…
ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ
ํƒ€์ž…
(๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…)
ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ํƒ€์ž…์€ ์ •์ˆ˜ํ˜•(int, long, short, byte), ์‹ค์ˆ˜ํ˜•(float, double), ๋ฌธ์žํ˜•(char), ๊ทธ๋ฆฌ๊ณ  ๋ถˆ๋ฆฐํ˜•(boolean)์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋Š” ์ง์ ‘์ ์œผ๋กœ ํ•ด๋‹น ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’๋“ค์€ ์ฃผ๋กœ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ณ€์ˆ˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์งง์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ์œผ๋กœ, ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜๋ฉฐ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.
์ฐธ์กฐ ํƒ€์ž…
(๊ฐ์ฒด)
์ฐธ์กฐ ํƒ€์ž…์€ ๋ฐฐ์—ด, ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ์ด ํฌํ•จ๋˜๋ฉฐ, ๋ณ€์ˆ˜๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋ฉฐ, ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ํž™ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํž™ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋” ํฌ๊ณ  ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋ž€?  ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํšŒ์ˆ˜ํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

 

 

 

๐Ÿ”Ž String์˜ ์ฃผ์š” ํŠน์ง• 

 

1. ๋ถˆ๋ณ€์„ฑ (Immutability) : Java์˜ 'String' ๊ฐ์ฒด๋Š” ์ƒ์„ฑ๋œ ํ›„ ๊ทธ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 'String'์— ์–ด๋– ํ•œ ์—ฐ์‚ฐ์„ ํ•˜๋”๋ผ๋„ , ์›๋ณธ  'String'์€ ๋ณ€ํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด 'String' ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋˜๋Š” ๋ณ€์ˆ˜์™€ ๋‹ค๋ฅธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

2. ํ’€ (Pool) : Java๋Š” ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด 'String'ํ’€์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ๋œ ๋ชจ๋“  'String' ๊ฐ์ฒด๋Š” ํ’€์— ์ €์žฅ๋˜๊ณ , ๊ฐ™์€ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ํ’€์—์„œ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” 'new' ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ํ•œ , ๋™์ผํ•œ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

3. ๋ฉ”์„œ๋“œ : 'String' ํด๋ž˜์Šค๋Š” ๋ฌธ์ž์—ด์„ ์กฐ์ž‘ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 'length()', 'substring()', 'indexOf()', 'charAt()', 'toLowerCase()', 'toUpperCase()', 'trim()' , 'replace()' ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

4. ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ : Java์—์„œ๋Š” '+' ์—ฐ์‚ฐ์ž๋ฅผ ๋ฌธ์ž์—ด์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” 'StringBuilder'๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 


 

 

 

 

์œ„์˜ ๋‚ด์šฉ์ด ์™€๋‹ฟ์ง€ ์•Š์œผ์‹ค ๊ฒƒ ๊ฐ™์•„, ์‹ค์Šต์„ ํ†ตํ•ด์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

String str1 = "rabbit";
String str2 = "rabbit"; 
		
if(str1 == str2) { // ์ด '=='์€ ๊ฐ์ฒด๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๊ฐ’์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
	System.out.println("๋˜‘๊ฐ™์€ ๋ฌธ์ž์—ด์ด๋ผ ์ฃผ์†Œ๊ฐ€ ๋˜‘๊ฐ™์•„์š”. ํ’€ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. \n");
}
		
str2 = "Luvbit";

if(str1 == str2) { // ์กฐ๊ฑด์‹ false
	System.out.println("String์€ ๋ถˆ๋ณ€์ž…๋‹ˆ๋‹ค.");
} else {
	System.out.println("๋ฌธ์ž์—ด์ด ๋ฐ”๋€Œ๋Š”๊ฒŒ์•„๋‹Œ ์ฃผ์†Œ๊ฐ’์ด ๋ฐ”๋€๋‹ˆ๋‹ค.");
}

print >> 

๋˜‘๊ฐ™์€ ๋ฌธ์ž์—ด์ด๋ผ ์ฃผ์†Œ๊ฐ€ ๋˜‘๊ฐ™์•„์š”. ํ’€ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด์ด ๋ฐ”๋€Œ๋Š”๊ฒŒ์•„๋‹Œ ์ฃผ์†Œ๊ฐ’์ด ๋ฐ”๋€๋‹ˆ๋‹ค.

 

  • ์ฒซ ๋ฒˆ์งธ if๋ฌธ์€  [ ๊ฐ™์€ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ํ’€์—์„œ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค ]๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ if๋ฌธ์€ [ Java์˜ 'String' ๊ฐ์ฒด๋Š” ์ƒ์„ฑ๋œ ํ›„ ๊ทธ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ]๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. 

 

String str1 = new String("Rabbit");
String str2 = new String("Rabbit");
		
		
//๋ฌธ์ž์—ด์ด ๊ฐ™์ง€๋งŒ newํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ๋กœ์šด ์ฃผ์†Œ๊ฐ’์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ์—,
//str1 ๊ณผ str2์˜ ์ฃผ์†Œ๊ฐ’์€ ๋‹ค๋ฅด๋‹ค๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค.
if(str1 == str2) {
	System.out.println("์ฃผ์†Œ๊ฐ’์ด ๊ฐ™์•„์š”");
} else {
	System.out.println("์ฃผ์†Œ๊ฐ’์ด ๋‹ฌ๋ผ์š”");
}
		
		
//equals ํ•จ์ˆ˜๋Š” ์ฃผ์†Œ๊ฐ’์ด ์•„๋‹Œ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
//๋ฌธ์ž์—ด์„ ๋น„๊ตํ• ๋–„๋Š” ==์ด ์•„๋‹Œ equals๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
if(str1.equals(str2)) {
	System.out.println("๋ฌธ์ž์—ด ๊ฐ’์€ ๊ฐ™์•„์š”");
} else {
	System.out.println("๋ฌธ์ž์—ด ๊ฐ’์€ ๋‹ฌ๋ผ์š”");
}

print >>

์ฃผ์†Œ๊ฐ’์ด ๋‹ฌ๋ผ์š”
๋ฌธ์ž์—ด ๊ฐ’์€ ๊ฐ™์•„์š”

 

  • ์œ„ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด new ํ‚ค์›Œ๋“œ์™€ equals์— ๋Œ€ํ•ด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
String str1 = new String("love IT, ");
String str2 = new String("Luvbit!");
		

// + ์—ฐ์‚ฐ์ž๋Š” ๋‘ ์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•  ๋•Œ ์‚ฌ์šฉ๋˜์ง€๋งŒ 1+2 = 3
// ๋ฌธ์ž์—ด์—์„œ๋Š” ๋‘ ๋ฌธ์ž์—ด์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
		
System.out.println(str1 + str2);

print >>

love IT, Luvbit!

 

 

 

 

 

๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”
String ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

๊ถ๊ธˆํ•˜์‹  ์ ์ด ์žˆ์œผ์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!
๐Ÿฉต๐Ÿฐ๐Ÿฉต