2022. 9. 30. 21:49ㆍJava 프로그램
이번 편에서는 저번 편인 자바 기본 API 1편에 이어 4) String Class부터 시작 하겠습니다.
4. String Class
- byte[] 배열을 문자열로 변화해주는 생성자
String method 는 여러가지가 있습니다. 대표적으로
1) charAt(int index) : 특정 위치의 문자를 리턴
2) equals(Object anObject) : 두 문자열을 비교
3) length() : 총 문자열 수를 리턴
... 등등 많은 메소드임에도 불구하고 사용 빈도가 높은 메소드가 많이 있습니다. 아래 참고할 만한 자료를 첨부하였습니다.
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 변수에 저장 하였고 이 변수를 출력하면 찔이 나와야 저희가 이해한 것이 맞는거라고 할 수 있습니다. 확인해 볼까요?
인덱스에 맞게 결과가 나온것을 확인 할 수 있습니다.
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번행
결과 먼저 확인하고 설명하겠습니다.
보이는 결과처럼 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 +" 입니다. ");
맹 | 구 | 의 | 코 | 딩 | 교 | 실 |
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를 사용하여 "코딩"이라는 글자를 "코찔찔" 로 대치해주는 예시입니다.
이렇게 결과가 나옴을 확인할 수 있습니다.
!!!결과를 굳이 캡쳐 따서 보이는 것은 개인적인 성향으로 결과를 직접 확인해야 마음이 편해서 그렇습니다..ㅎ!!!
6) 문자열을 잘라주는 subString()
- subString(index(시작), index(끝)) 형식으로 사용합니다.
- 시작 인덱스부터 끝 인덱스-1 까지 출력됩니다.
String test = "맹구의-코딩교실";
System.out.println(test.substring(3,7));
위 코드는 인데스 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());
위처럼 문자열의 중간이 아닌 문자열 앞과 뒤의 공백을 자르는 것을 확인 할 수 있습니다.
다음 메소드부터는 자바 기본 API 3편으로 시작하겠습니다 ...😂 생각보다 많아서 3편으로 나누겠습니다.
'Java 프로그램' 카테고리의 다른 글
제네릭(Generic) 1편[제네릭 기본] (0) | 2022.10.12 |
---|---|
자바 기본 API 3편<마지막> (StringTokenizer~Date 클래스) (0) | 2022.10.12 |
자바 기본 API 1편 (0) | 2022.09.30 |
예외처리(Exception) (2) | 2022.09.20 |
인터페이스(interface) (0) | 2022.08.30 |