본문 바로가기
Java/Basic

String 배열

by 최로이 2021. 2. 23.

2.1 String배열의 선언과 생성

배열 타입이 String일 경우에도 선언은 int배열의 선언과 동일하다.

String[] name = new String[3];
  • String배열은 수정할 수 없다.
  • 값을 넣어주지 않으면 String의 기본값은 null이므로 각 배열의 요소에는 null로 초기화 된다(앞의 int형은 기본값 0으로 초기화 됐다)

**null은 어떤 객체도 가리키고 있지 않다는 의미다.

 

2.2 String 배열의 초기화

① String[] name  = new String[]{"Min", "Lee", "Choi"};
String[] name = {"Min", "Lee", "Choi"};  //new String[]를 생략할 수 있다.
String[] name = new String[3];
name[0] = "Min";
name[1] = "Lee";
name[2] = "Choi";
→ 원래는 new String[]을 붙여줘야 하지만 생략 가능하다

위와 같은 선언과 생성 초기화를 그림으로 표현하면 아래와 같다.

String배열의 선언과 생성 및 초기화

그림을 보면 실제 객체가 아닌 객체의 주소가 저장되어 있다. 이처럼 기본형 배열이 아니라 참조형 배열일 경우 저장되는 것은 '객체의 주소'다.

**참조현 변수는 객체가 메모리에 저장된 주소인 4byte의 정수값(0x0~0xffffffff) 또는 null이 들어있다.

 

2.3 char배열과 String클래스

char와 String타입의 차이점이 무엇인지는 자바를 하는 사람이라면 거의 알고 있겠지만 문자와 문자열은 일맥상통 하는 부분이 있다. 그렇다면 문자를 배열로 만든다면? 문자배열과 문자열은 다른 걸까? 그렇지 않다. 문자배열과 문자열은 같다고 볼 수 있다.

그런데 왜 자바에서는 char배열이 아닌 String클래스를 이용해서 문자열을 처리할까? 그 이유는 String클래스가 char배열에 여러 기능을 추가하여 확장한 것이기 때문이다. 그래서 char배열을 사용하는 것보다 String클래스를 사용하는 것이 문자열을 다루기 더 편리하다.

C언어에서는 문자열을 char배열로 다룬다고 하는데, 객체지향언어인 자바에서는 char배열과 그에 관련된 기능들을 함께 묶에 클래스에 정의한다. 객체지향개념이 나오기 전의 언어는 데이터와 기능을 따로 두었으나, 객체지향언어에서는 데이터와 그에 관련된 기능을 하나의 클래스에 묶어서 다룰 수 있게 한다.  즉, 서로 관련된 것들끼리 데이터와 기능을 구분하지 않고 함께 묶는다는 다.

앞서 말했지만 클래스를 구성하는 가장 기본적인 것은 변수와 메소드다. 변수는 속성을 메소드는 기능이라는 역할을 맡고 있으며, 특히 메소드는 함수라고도 말한다.

 

1) String클래스의 주요 메소드

메소드 역할
char charAt(int index) 문자열에서 해당 위치(index)에 해당하는 문자를 반환한다.
int length() 문자열의 길이를 반환한다.
String substring(int from, int to) 문자열에서 해당 범위(from~to)에 있는 문자열을 반환한다. 단, to에 속하는 인덱스 값은 포함하지 않는다.
boolean equals(String str) 문자열의 값이 같은지 확인한다. 같으면 true, 다르면 false 반환.
char[] toCharArray() 문자열을 문자배열 char[]로 변환하여 반환한다.

 

2) String 메소드를 사용한 예

public class stringEx {

	public static void main(String[] args) {
		
		String str = "ABCDE";
		char ch = str.charAt(2);		//문자열 str의 세번쨰 문자 C를 ch에 저장.
		System.out.println("charAt(inedx) = " + str.charAt(2));		// C가 출력된다.
		
		String str2 = "012345";
		String tmp = str2.substring(1, 5);
		System.out.println(tmp);
		
		String str3 = "abc";
			if(str3.equals("abc")) {
			System.out.println("str3과 abc는 같은 문자열 값입니다.");
		}
			
		char[] chArr = {'A', 'B', 'C'};
		String str4 = new String(chArr);	//char배열에서 String타입으로 변경
		char[] tmp2 = str4.toCharArray();	//String에서 char배열로 변경
	}
}

'Java > Basic' 카테고리의 다른 글

객체지향  (0) 2021.03.03
2차원 배열, Arrays클래스  (0) 2021.02.25
배열(Array)  (0) 2021.02.21
반복문(for, while, do-while)  (0) 2021.02.20
조건문(if, switch)  (0) 2021.02.19

댓글