JAVA/배열(array)

[JAVA] char배열과 String클래스

prize1209 2021. 6. 15. 04:00

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+"...";  와 같다.