char배열과 String클래스
1. String 클래스는 char[] 와 메서드(기능)을 결합한 것
String 클래스 = char[] + 메서드(기능)
char배열이 아닌 String클래스를 이용하여 문자열을 처리하는 이유는
String 클래스가 char배열에 여러가지 기능을 추가하여 확장한 것이기 때문이다.
2. String 클래스는 내용을 변경할 수 없다(read only)
직접 값이 들어간 것처럼 그렸지만 문자열이 만들어지고 그 주소가 요소에 들어간다.
문자열 str의 내용이 바뀌는 것 같지만, 문자열은 변경할 수 없으므로 새로운 내용의 문자열이 생성된다.
3. String 클래스의 주요 메서드
charAt메서드는 문자열에서 지정된 index에 있는 한 문자를 가져온다.
substring()은 문자열의 일부를 뽑아낼 수 있다. 주의할 점은 범위의 끝은 포함되지 않는다는 것이다.
예를 들어, index의 범위가 1~4라면 4는 범위에 포함되지 않는다.
equals()는 문자열의 내용이 같은지 다른지 확인하는데 사용된다.
기본형 변수의 값을 비교하는 경우 '==' 연산자를 사용하지만, 문자열의 내용을 비교할 때는 equals()를 사용해야한다.
*이 메서드는 대소문자를 구분한다.
대소문자를 구분하지 않으려면 equalsIgnoreCase()를 사용해야한다.
4. char배열과 String 클래스의 변환
예14)
public class ArrayEx14 {
public static void main(String[] args) {
String src = "ABCDE";
// for문으로 src배열의 요소 하나씩 출력
for (int i = 0; i < src.length(); i++) {
char ch = src.charAt(i); // src의 i번째 문자를 ch에 저장. //i가 바뀔때마다 ch값이 바뀜
System.out.println("src.charAt(" + i + "): " + ch);
}
// String을 char[]로 변환
char[] chArr = src.toCharArray();
// char배열(char[])을 출력
System.out.println(chArr);
}
}
예15) //모르스 부호
public class ArrayEx15 {
public static void main(String[] args) {
String source = "SOSHELP";
String[] morse = {".-", "-...", "-.-.", "-..", "."
,"..-.", "--.", "....", "..", ".---"
,"-.-", ".-..", "--", "-.", "---"
, ".--.", "--.-", ".-.", "...", "-"
, "..-", "...-", ".--", "-..-", "-.--"
, "--.."};
String result ="";
for(int i=0; i<source.length(); i++) {
result+=morse[source.charAt(i)-'A'];
}
System.out.println("source:"+source);
System.out.println("morse:"+result);
}
}
문자열(String)을 모르스(morse)부호로 변환한다.
String문자의 개수는 length()를 통해서 얻을 수 있고, charAt(int i)메서드는 String의 i번째 문자를 반환한다.
그래서 for문의 조건식에 legth()를 사용하고 charAt(int i)를 통해서 한 문자씩 차례대로 읽어올 수 있다.
result += morse[source.charAt(i)-'A']; //i가 0일 때
->result += morse[source.chaAt(0)-'A']; //source.charAt(0)는 첫 번째 문자
->result += morse['S'-'A']; //'S'-'A' -> 83-65 ->18
->result += morse[18];
->result+= "..."; // result = result+"..."; 와 같다.
'JAVA > 배열(array)' 카테고리의 다른 글
[JAVA] Array로 배열 다루기 (0) | 2021.06.17 |
---|---|
[JAVA] 가변 배열 (0) | 2021.06.15 |
[JAVA] String 배열 (0) | 2021.06.15 |
[JAVA] 배열의 활용 예제/총합과 평균/ 최대값과 최소값/섞기/난수/정렬/빈도수 구하기 (0) | 2021.06.15 |
[JAVA] 배열의 복사 /System.arraycopy() (0) | 2021.06.15 |