Java & Spring

java string관련 함수정리

닥치고개돌 2021. 8. 8. 23:55
728x90

알고리즘이나 웹 개발의 기본이되는 String관련 함수정리

 

1. equals()

equals는 두개의 문자열이 동일한 값을 가지고 있는지를 비교하여 결과값을 리턴.

사용형태 a.equals(b)  실제 문자열이 가지고 있는 내용을 비교하는 것이다.

a==b 와는 다르다 a==b는 문자열변수의 주소값을 비교하는 것.

 

String a = "test";
String b = a;
String c = "test";
String d = new String("test");
String e = "wtf";
		
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는 새로만든 것이라서 다른 주소값을 가리킬텐데 왜 a==c 도 true가 나오는 건가에 대해 궁금했는데 기본적으로 JAVA는 로컬함수(같은 제어블록)내에서 같은 문자열이 나오면 공유상수pool에서 관리를 하기 때문에 새로 메모리를 잡지않고 원래있던 주소로 배정한다

 

2. length()

문자열의 길이를 반환한다.

 

3. substring()

substring은 문자열 중 특정 부분을 뽑아낼 경우에 사용한다. 

파라미터로 시작점위치만 쓸수도 있고 시작점, 끝나는점을 넘길 수 있다.

substring(3) => 문자열의 3번째부터 끝까지 출력,

substring(3,7) => 문자열의 3번째부터 7번째 위치의 앞에 문자까지. (3,4,5,6) 출력

위 이미지처럼 끝나는 위치의 앞에까지만 출력되는걸 주의.

 

 

4. toUpperCase() 와 toLowerCase()

toUpperCase는 문자열을 모두 대문자로 변경, toLowerCase는 모두 소문자로 변경할때 사용.

 

 

5. indexOf()

indexOf는 문자열에서 특정 문자가 시작되는 인덱스를 리턴한다.

 

 

6. replace(), replaceAll(), replaceFirst()

특정 문자를 원하는 문자로 변경하고 싶을 경우에 사용

 

replace와 replaceAll와 replaceFirst()의 차이점은

replace는 첫번째 인자값으로 문자열이 들어가고

replaceAll은 첫번째 인자값에 정규식이 들어간다.

replaceFirst는 처음으로 찾은 문자만 변경.

 

 

**replaceAll의 정규식에 자주 쓰이는 문법들

더보기

. ^ $ * + ? { } [ ] \ | ( )

위의 기호들은 메타문자로, 정규표현식에서 쓰일경우 특정 의미를 가지는 문자들이다.
각 문자의 의미는 아래와 같다.

  • .x: 임의의문자 + x
    ex) a.c : abc, a0c ,,
    ex) a..c : abbc, a00c ,,
  • x* : x의 0번 이상 반복
  • x+ : x의 1번 이상 반복
  • ^x : 문자열이 x로 시작
  • x$ : 문자열이 x로 끝남
  • x? : x가 존재할수도, 하지 않을 수도 있음
    ex) ab?c : ac, abc 모두 가능
  • x|y : x 또는 y
    ex) (x|y)z : xy 또는 yz 모두 가능
  • x{n} : x의 n번 반복
  • x{m,n} : x의 m번 이상 n번 이하 반복
  • x{n,} : x의 n번 이상 반복
  • [xy] : x 또는 y 한 문자
  • [x-z] : x~z 범위 내의 한 문자
  • [^xy] : x 또는 y를 제외한 한 문자
    ex) [^yz] : a, b, c, ,,, w, x 중 한 문자를 의미

 

이외에도, 자주 사용되는 표현들은 별도의 표기법이 존재한다.
대표적으로 [0-9] 대신에 \d를, [a-zA-Z0-9_] 대신에 \w를 사용할 수 있다.

 

7. split()

지정한 문자로 문자열을 나눌수 있다. 나눠진 부분들의 결과 값은 배열로 반환된다. 따라서 받는 변수가 배열로 선언돼야함.

String str = "abc#def#ghi";
String[] splitStr = str.split("#");

 

 

8. trim()

문자열의 앞뒤에 있는 공백을 없애준다. 중간 공백은 없애주지 않는다.

String test = " te s t  ";
String result = test.trim();
System.out.println(result); // "te s t"

 

 

9. contains

두개의 String을 비교해서 비교대상 String을 포함하고 있으면true, 다르면 false를 반환한다.

String str1 = "abcd"; 
String str2 = "c"; 

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

 

 

10. charAt

지정한 index번째에 문자를 반환한다.

String str1 = "abcd"; 
String str2 = "1235"; 

System.out.println(str1.charAt(2)); //c
System.out.println(str1.charAt(2)); //3
728x90

'Java & Spring' 카테고리의 다른 글

java int to char 형변환  (0) 2021.08.15
java Collection 프레임워크 정리  (0) 2021.08.11
java array관련 함수  (0) 2021.08.09
자바 parseInt vs valueOf 차이  (0) 2021.08.07
자바 알고리즘 입출력 받기  (0) 2021.08.05