프로그래밍 언어/Java

[JAVA] String class 자주사용하는 메서드

반응형
public class StringClass {
	public static void main(String[] args) {
		
		char ch[] = {'h','e','l','l','o'};
		//하나로 묶어서 사용할 수 있게 만든 것이 StringClass
		
		String str;
		str = "hello";
		
		String str1 = new String("hello");
		String str2 = "반갑습니다";
		
	//	String str3 = str1 + str2;
		String str3 = str1.concat(str2);
		
		System.out.println(str3);
		
		/*
		 * function == 함수(process)
		 * 구성요소
		 * 들어가는 값 : 인수, 인자, parameter
		 * 나오는 값 : 돌아오는 값, return value
		 */
		
		//equals 비교
		String str4 = "world";
		String str5 = "worl";
		
		str5 = str5 + "d";
		//if(str4 == str5) {
		//문자열을 ==로 비교하는건 주소값의 실제 값을 비교하는게 아니라 초기값을 가지고 비교를 한다.
		if(str4.equals(str5)) {
			System.out.println("같은 문자열입니다.");
		}else {
			System.out.println("다른 문자열입니다.");
		}
		
		//문자의 위치 탐색
		//indexOf, lastIndexOf
		String str6 = "abcdabcdab";
		//			   0123456789
		int index = str6.indexOf('c');
		System.out.println("index:"+index);
		
		int lastIndex = str6.lastIndexOf('a');
		System.out.println("lastIndex:"+lastIndex);
		
		int len = str6.length(); 
		System.out.println("len:" + len);
		
		//수정
		//replace 
		String str7 = "A*B*C*D";
		String rep = str7.replace("*","-");
		System.out.println("rep:"+rep);
		
		//문자열을 자른다
		//split
		/*
		 * aaaa-bbb-cc	'-' == token
		 * aaaa
		 * bbb
		 * cc
		 * 1001-홍길동-24-서울시
		 */
		String str8 = "1001-홍길동-24-서울시";
		String[] split = str8.split("-");
		System.out.println(split.length);
		System.out.println(Arrays.toString(split));
		
		for(String s : split) {
			System.out.println(s);
		}
		
		//subString
		String str9 = "abcdefghij";
		String str10 = str9.substring(0,5); //0~4 마지막 index 제외후 가져옴
		System.out.println("str10:"+str10);
		
		str10 = str9.substring(5); //5번째 index부터 끝까지 다 가져옴
		System.out.println("str10:"+str10);
		
		//대문자, 소문자
		String str11 = "abcDEF";
		System.out.println(str11.toUpperCase());
		System.out.println(str11.toLowerCase());
		
		//문자열의 앞뒤공백을 삭제 
		//trim : 안쪽공백은 사라지지 않는다.
		String str12 = " java  java  java   ";
		System.out.println(str12.trim()); 
		
		//index를 입력하면 그 위치에 문자를 돌려주는 함수
		//charAt
		String str13 = "가나다라마";
		char c = str13.charAt(3);
		System.out.println("c= " + c);
		
		//문자열 탐색
		//contains
		String str14 = "서울시 마포구 서교동";
		boolean b = str14.contains("마");
		System.out.println(b);
 	}
}

 

1)concat
String + String = 2개의 String을 합칠때 사용!
String을 합칠때 이렇게 간단한 연산으로도 가능하지만, 
String str1 = "He";  String str2= "llo";
String str3 = str1 + str2 -> str3 = "Hello" 

이렇게 concat() 메서드를 통해서도 가능하다.
String str3 = str1.concat(str2);

2)equals
문자열을 비교할때 사용하며, retrun값은 boolean형이다.
String str4 = "world";
String str5 = "worl";
str5 = str5.concat("d");
위에서 사용한 concat() 메서드를 사용해서 str5에 "d"문자열을 추가했다. -> str5 = "world"
그러면 if(str4 == str5)는 당연히 true 일것이다. 
라고 생각하는 사람들이 있을것이다. 이렇게 생각하신 분들은 참조형에 대한 자료를 한번 찾아보시는걸 추천드립니다!

"문자열을 ==로 비교하는건 주소값의 실제 값을 비교하는게 아니라 초기값을 가지고 비교를 한다."
그렇기 때문에 단순하게 동일한 문자열인지 비교하기위해서는 str4.equals(str5)로 비교를 하면 결과값은 true이다.

3)indexOf, lastIndexOf
indexOf는 0번째 문자열에서부터 원하는 문자를 찾아, 위치를 정수로 반환받는다.
String str6 = "abcdabcdab";
                  0123456789
int index = str6.indexOf('c'); -> 2

lastIndexOf는 문자열 끝에서 부터 원하는 문자의 위치를 찾아 정수를 반환 받는다.
int lastIndex = str6.lastIndexOf('a'); -> 8

4)length
문자열의 길이를 int형 정수로 반환받는다.
int len = str6.length(); -> 10

5)replace
replace(target,replacement);
문자열을 치환 혹은 수정하는 메서드.
String str7 = "A*B*C*D";
String rep = str7.replace("*","-");
=> str7의 문자열중 "*"를 "-"로 수정(치환) 하여 rep에 대입 -> rep = A-B-C-D

6)split
서버 혹은 클라이언트를 통해 String타입으로 데이터를 받아왔을 때. 데이터를 구분하기 위해 token을 사용하여 문자열을 잘라서 배열로 반환 한다.
만약에 클라이언트에서 회원번호: 1001, 이름: 홍길동, 나이:24, 주소:서울시 라는 정보를 문자열로 받았을때 str8에 저장한 상태이다. 
String str8 = "1001-홍길동-24-서울시"; 
하지만, 서버에서는 이 정보를 유연하게 다시 사용하기 위해서 split을 통해서 문자열 사이에있는 token "-"구분자를 통해 배열의 각 방에 저장할 수 있다.
String user[] = str8.split("-");  -> [1001, 홍길동, 24, 서울시]

7)substring
substring(int begindex, int endindex)
int형 정수로 beginindex와 endindex를 통해서 그 사이의 문자열을 반환 받는다. 
주의할점!!! endindex의 위치에 포함된 문자열은 제외!
String str9 = "abcdefghij";
String str10 = str9.substring(0,5); //0~4 까지 출력이 된다. 마지막 endindex의 범위는 제외!!
=> str10 = "abcde"

str10 = str9.substring(5); //5번째 index부터 끝까지 다 가져옴
=> str10 = "fghij"

8)trim
문자열의 앞뒤 공백을 삭제!
하지만, 문자열 안쪽의 공백은 사라지지 않는다.
String str12 = "   java  java  java   ";
str12.trim() => "java  java  java"

9)charAt
charAt(int index)
int형 정수를 통해서 문자열의 index의 위치한 문자(char 형)를 반환 받는 함수
String str13 = "가나다라마";
char c = str13.charAt(3);
c = '라';

10)contains
contains(CharSequence s)
해당 문자열에 내가 찾는 문자열이 포함되어 있는지 확인할수 있는 메서드로 반환타입은 boolean형 이다.
String str14 = "서울시 마포구 서교동";
boolean b = str14.contains("가나");   => false
boolean b = str14.contains("마포"); => true

 

반응형