[Java] String 관련 내장함수

김호준·2021년 11월 2일
2
post-custom-banner

String 관련 함수를 정리해 보면서 복습하는 시간을 가져보려고 한다 !! 이유는 코딩테스트를 준비하는데 함수가 바로바로 제대로 안떠올라서이기도 하다 ... 힝

1. equals()

  • equals는 두개의 문자열이 동일한 값을 가지고 있는지 비교하여 결과값을 리턴한다.
    • 여기서 중요한 것은 a==b는 문자열 변수의 주소값을 비교하는 것이고 a.eqauls(b)는 문자열이 가지고 있는 값 자체를 비교한다는 것이다.
String a = "banana";
String b = a;
String c = "banana";
String d = new String("banana");
String e = "coconut";

System.out.println(a==b);		//true
System.out.println(a.equals(b));	//true

System.out.println(a==c);		//true
System.out.println(a.equals(c));	//true

System.out.println(b==c);		//true
System.out.println(b.equals(c));	//true

System.out.println(a==d);		//false
System.out.println(a.equals(d));	//true

System.out.println(a==e);		//false
System.out.println(a.equals(e));	//false
  • 여기서 중요한 것은 a==c가 true인 것이다. 이유는 java에서 로컬함수 내에 같은 문자열이 나오면 공유상수 pool에서 관리하기 때문에 새로운 메모리를 할당하지 않고 원래 있던 주소로 배정해주기 때문이다.

2. indexOf()

  • 문자열에서 특정 문자가 시작되는 인덱스를 리턴한다.
String str1 = "문자열을 공부해보자";
String str2 = "abcedf";

System.out.println(str1.indexOf("공부"));	// 5
System.out.println(str2.indexOf("b"));		// 1

3. length()

  • 문자열의 길이를 반환한다.
String str = "abcdef"; 
int length = str.length(); 
System.out.println("length: " + length);	// 6

4. substring()

  • 문자열 중 특정 부분을 뽑아낼 경우에 사용한다.
  • 사용방법은 2가지로 매개변수에 1개를 입력할 경우 시작지점으로 인식하여 시작지점부터 해당 문자열의 끝까지 출력하고, 매개변수에 2개를 입력할 경우 시작지점과 끝지점으로 인식하여 출력된다.
    • 여기서 subString(5,8)을 사용했을 때, 인덱스 5,6,7에 해당하는 문자열만 출력되는 것에 유의하자 !!
String str = "ABCDEF"; 
String substring = str.substring(0, 2); 
System.out.println("substring: " + substring);	// substring: AB

5. toUpperCase()와 toLowerCase()

  • 문자열을 모두 대문자로 변경하거나 소문자로 변경할 때 사용된다.
String str = "abcDEF"; 
String toLowerCase = str.toLowerCase(); 
System.out.println("toLowerCase: " + toLowerCase);	// abcdef

String str = "abcDEF"; 
String toUppercase = str.toUpperCase(); 
System.out.println("toUppercase: " + toUppercase);	// ABCEDF

6. concat()

  • 문자열과 문자열을 이어주고자 할 때 사용한다.
  • 사실 java에서는 문자열 + 문자열을 해주기만 해도 사용 가능한데 이 기능이 특별히 사용되는 시점을 공부해야 될 듯 하다.
String str1 = "안녕 !"; 
String str2 = "나는 호준이야."; 
String concat = str1.concat(str2); 
System.out.println(concat);	// 안녕 ! 나는 호준이야.

7. startWith()

  • 문자열이 지정한 문자로 시작하는지 체크하여 맞을 경우 true를 맞지 않을 경우 false를 반환한다. 여기서 대소문자를 구별한다는 것에 주의하자 !!
String str1 = "김호준";
String str2 = "abcde";

System.out.println(str1.startWith("김"));	// true
System.out.println(str1.startWith("호"));	// false
System.out.println(str2.startWith("A"));	// false

8. endWith()

  • 문자열의 마지막에 지정한 문자가 있는지 체크하여 있다면 true를 없다면 false를 반환한다. 여기서도 대소문자를 구별한다 !!!!
String s = "I have a book";
System.out.println(s.endsWith("book")); 	// true
System.out.println(s.endsWith("a")); 		// false

9. replaceAll

  • 문자열 중 특정 문자를 다른 문자로 바꾸고 싶을 경우에 사용하는 내장함수이다.
  • replace와는 다르게 정규표현식을 지정한 문자로 바꿔서 출력한다 !!
String str = "AB CD"; 
String replaceAll = str.replaceAll("\\p{Space}", "*");
System.out.println("replaceAll: " + replaceAll);	// AB*CD

10. replace

  • 문자열에 특정한 문자를 원하는 문자로 변경하고 싶을 경우에 사용한다.
  • replace(기존 문자열, 새로바꿀 문자열) 의 형태로 사용한다.
String str = "A*B*C*D"; 
String replace = str.replace("*", "-"); 
System.out.println("replace: " + replace);		// A-B-C-D

ㅣ나ㅓㅁ리ㅏㄴ;ㅇㅁ러ㅣㄴㅇㅁ;ㅏ러
//여기에 9번과 10번 차이점 설명 넣어라

11. split()

  • 지정한 문자로 문자열을 나눌 때 사용한다.
  • 나눠진 문자열은 배열로 반환되어 배열에 저장된다 !!
String str = "A:B:C:D:ab:cd"; 
String[] split = str.split(":");

System.out.println(split[1]);		// B
System.out.println(split[2]);		// C
System.out.println(split[4]);		// ab
System.out.println(split[5]);		// cd

12. trim()

  • 문자열의 시작과 끝에 있는 공백을 제거한 뒤의 값을 반환한다.
  • 중요한 점은 문자열 중간의 공백은 제거하지 않는다는점이다 !!
String str1 = "     김  호준     ";
System.out.println(str1.trim());		// 김   호준

13. contains

  • 두개의 문자열을 비교하여 비교대상 String을 포함하고 있으면 true를 포함하고 있지 않다면 false를 반환한다.
String str1 = "abcd";
String str2 = "a";
String str3 = "가";

System.out.println(str1.contains(str2));	// true
System.out.println(str1.contains(str3));	// false

14. charAt

  • 지정한 index 번째 문자를 반환한다.
String str1 = "안녕하세요 호준이에욤";
String str2 = "abced";

System.out.println(str1.charAt(2));		// 하
System.out.println(str2.charAt(3));		// e
profile
Go-getter Developer
post-custom-banner

0개의 댓글