자바 기본 API 2편 (String Class~~

2022. 9. 30. 21:49Java 프로그램

728x90

이번 편에서는 저번 편인 자바 기본 API 1편에 이어 4) String Class부터 시작 하겠습니다.

4. String Class

- byte[] 배열을 문자열로 변화해주는 생성자

String method 는 여러가지가 있습니다. 대표적으로 

1) charAt(int index) : 특정 위치의 문자를 리턴

2) equals(Object anObject) : 두 문자열을 비교

3) length() : 총 문자열 수를 리턴

... 등등 많은 메소드임에도 불구하고 사용 빈도가 높은 메소드가 많이 있습니다. 아래 참고할 만한 자료를 첨부하였습니다.

String method 중 사용빈도가 많은 Method

1) charAt() 

	String test = "맹구의 코찔찔 교실";
	char charTest = test.charAt(5);
	System.out.println(charTest);
   
0 1 2 3 4 5 6 7 8 9

위 코드에서 test 변수의 String 타입인 문자열 "맹구의 코찔찔 교실" 의 인덱스는 바로 위의 표처럼 부여 됩니다.

저는 charAt(5)를 charTest 변수에 저장 하였고 이 변수를 출력하면 찔이 나와야 저희가 이해한 것이 맞는거라고 할 수 있습니다. 확인해 볼까요?

charAt() 결과 예시

인덱스에 맞게 결과가 나온것을 확인 할 수 있습니다.

 

2) equals()

- 문자열을 비교할 때는 == 연산자를 사용하면 결과값이 이상하게 나올때가 있습니다. 그 이유는 == 연산자는 객체의 내용이 같아도 주소값이 다르다면 false를 리턴하기 때문인데요. 

문자열을 비교할 때는 꼭 equals()를 사용해야 한다는 점!! 잊으면 안되는 부분입니다!

		String str1 = new String("맹구");
		String str2 = "맹구";
		String str3 = "맹구";
		
		
		System.out.println(str1 == str2);		//-----1번행
		System.out.println(str2 == str3);		//-----2번행
		System.out.println("----------equals()사용-------------");
		System.out.println(str1.equals(str2));	//-----3번행
		System.out.println(str2.equals(str3));	//-----4번행

결과 먼저 확인하고 설명하겠습니다.

equals() 예제 결과

보이는 결과처럼 1번행과 2번행 처럼 == 연산자의 결과 중 1번행은 같은 문자열인 "맹구"를 가짐에도 불구하고

false 결과가 나온 것을 확인 할 수 있습니다. 

1번행 == 2번행이 false인 이유 : str1 과 str2는 객체가 저장되는 메모리의 주소값이 다르기 때문에 == 연산자로는 같다는 결과를 도출할 수 없는 것입니다.

2번행 == 3번행이 true인 이유:  str2 와 str3는 반대로 내용도 같고 메모리의 주소값이 같기 때문에 == 로 비교해도 true가나오는 것입니다.

그럼 equals()를 사용한 후에 차이점을 보면 

같은 str1 과 str2 를 비교했는데도 true가 나온것을 확인 할 수 있습니다. 이것은 equals() 비교하여 객체 내용을 같음을 비교하였기 때문이라고 생각하시면 쉽게 이해 할 수 있을 것 입니다.

 

3) 문자열을 찾는 indexOf()

- 매개값으로 주어진 문자열이 시작되는 인덱스 리턴

- 주어진 문자열이 포함되어 있지 않으면 -1 리턴

String test = "맹구의코딩교실";
int indexoftest = test.indexOf("코");
System.out.println("주어진 글자로 시작하는 인덱스는 " + indexoftest +" 입니다. ");

indexOf() 예제 결과

0 1 2 3 4 5 6

이렇게 indexOf(찾길 원하는 글자나 문장(=a라고 하겠습니다.) ) 을 쓰면 a 문자열로 시작하는 인덱스를 리턴해주기 때문에 결과에서 "코"라는 문자열로 시작하는 인덱스 3을 리턴해주는 것 입니다.

인덱스로 원하는 글자를 리턴하는 것의 반대 개념으로 생각하면 될 것 같습니다.

 

4) 문자열의 길이를 리턴해주는 length()

Length는 for문의 조건식에서 주로 많이 쓰면서 익숙할 메소드라고 생각합니다.

가볍게 코드만 확인하고 넘어가 보겠습니다.

String test = "맹구의 코딩교실";
System.out.println(test.length());

이것의 결과는 공백 포함 8로 나옵니다.

5) 문자열을 대치해주는 replace()

replace(a,b)라면 a라는 문자열을 찾아서 b문자열로 대치해줍니다.

		String test = "맹구의 코딩교실";
		String newTest = test.replace("코딩","코찔찔");
		System.out.println(test);
		System.out.println(newTest);

이렇게 기존의 문자열인 "맹구의 코딩교실" 에서

replace를 사용하여 "코딩"이라는 글자를 "코찔찔" 로 대치해주는 예시입니다.

replace() 예제결과

이렇게 결과가 나옴을 확인할 수 있습니다.

!!!결과를 굳이 캡쳐 따서 보이는 것은 개인적인 성향으로 결과를 직접 확인해야 마음이 편해서 그렇습니다..ㅎ!!!

 

6) 문자열을 잘라주는 subString()

- subString(index(시작), index(끝)) 형식으로 사용합니다.

- 시작 인덱스부터 끝 인덱스-1 까지 출력됩니다.

		String test = "맹구의-코딩교실";
		System.out.println(test.substring(3,7));

subString() 예제 결과

위 코드는 인데스 3인 '-' 부터 7-1인 인덱스 6( = 교)까지 결과가 나옴을 확인할 수 있습니다.

만약

- subString(index) 형식이라면 시작 인덱스 부터 끝까지 문자열을 추출해주는 메소드입니다.

 

7) 알파벳을 대/소문자로 바꿔주는 toLowerCase(), toUpperCase()

		String test = "Java Program Test";
		System.out.println(test.toUpperCase());
		System.out.println(test.toLowerCase());

예제 결과

대문자와 소문자가 섞여 있는 문자열인 test가 모두 대/소문자로 바뀌는 것을 확인 할 수 있습니다.

 

8) 공백 잘라내주는 trim()

		String test = "          맹구        맹구          ";
		
		System.out.println(test.trim());

trim() 예제 결과

위처럼 문자열의 중간이 아닌 문자열 앞과 뒤의 공백을 자르는 것을 확인 할 수 있습니다.

 

다음 메소드부터는 자바 기본 API 3편으로 시작하겠습니다 ...😂 생각보다 많아서 3편으로 나누겠습니다.

반응형