Java - 기본기

13. String 클래스, Arrays로 배열 다루기(feat. String 클래스 매서드, Arrays 클래스 매서드)

TerianP 2021. 10. 14.
728x90

1. String 클래스

  • String 클래스는 사실 char[] 와 메서드(기능)를 결합한 것
  • 즉, 문자 배열 char[] 에다가 어떠한 메서드(기능)을 결합한 형태라고 생각하면 된다.
  • String 클래스는 내용을 변경할 수 없다(read only) : 읽기만 가능
String a = "a";
String b = "b";

a = a + b 

이때 a 는 어떻게 될까?
a = ab 로 기존의 문자열이 바뀌는 것이 아닌
새로운 "ab" 라는 문자열이 생성 & 저장된다

 

2-1. String 클래스의 주요 매서드

메서드 설명
char : charAt(int index) 문자열에서 해당 위치(index)에 있는 문자를 반환한다.
int : length() 문자열의 길이를 반환한다.
String : substring(int from, int to) 문자열에서 해당 범위(from ~ to) 의 문자열을 반환한다. 단 to 는 포함 안 됨.
boolean : equals(Object obj) 문자열의 내용이 같은지 확인한다. 같으면 true, 다르면 false
char[] : toCharArray() 문자열을 문자배열(char[]) 로 변환해서 반환한다.

 

2-2. String 클래스 주요 매서드 활용

		//index =     012345
		String str = "String";
		
		System.out.println(str.charAt(1)); // t, 해당 인덱스의 문자 출력
		
		System.out.println(str.length()); // 6, 길이구하는 방식은 상수X 메서드임으로 () 가 필수
		
		System.out.println(str.substring(1,5)); // trin
		System.out.println(str.substring(3)); // ing , to 를 생략하면 시작지점부터 끝까지 출력됨
		
		System.out.println("String".equals(str)); // true , 동일하면 true
		System.out.println("Stringg".equals(str)); // false , 다르면 false
		
		char[] charr = str.toCharArray();
		
		for(int i=0; i<charr.length; i++) {
			System.out.println("charr["+i+"] = "+charr[i]);
		}
		
//		출력	
//		charr[0] = S
//		charr[1] = t
//		charr[2] = r
//		charr[3] = i
//		charr[4] = n
//		charr[5] = g

 

3-1. Arrays 클래스의 주요 매서드

  • 수학 관련 메서드를 모아놓은 Math 클래스처럼 Arrays 도 배열을 다루는 다양한 메서드를 모아놓은 클래스 
메서드 설명
비교 : equals() , deepEquals() 1차원 배열 비교는 equals , 2차원 이상의 배열 비교는 deepEquals 
출력 : toString(), deepToString() 배열을 문자열로 출력할때는 toString() 또는 deepToString() 사용
복사 : copyOf(배열이름, 복사할 요소의 갯수) 해당 배열에서 복사할 요소의 갯수만큼 복사해옴
만약 복사할 요소가 전체 배열 갯수보다 많다면, 나머지 값은 0 이 넣어짐
복사 : copyOfRange(배열이름, from, to) 해당 배열에서 from 부터 to 까지 복사, 단 to 는 포함X
정렬 : sort(배열이름) 오름차순으로 배열 정렬됨

 

3-2. Arrays 클래스 주요 매서드 활용

  • 이번 공부하면서 가장 놀랐던 sort 매서드. 사실 정렬 할 때마다 삽입정렬이니 버블정렬이니를 하지않겠지 했지만, 그래도 이렇게 편하게 하는 방법이 있다는 것에 굉장히 새로웠다.
	static void Array_1() {
		
		int[] arr = {0,1,2,3,4}; // 1차원은 equals
		int[][] arr2D = {{11,12},{21,22}}; // 2차원 이상 deepEquals
		
		System.out.println(Arrays.toString(arr)); 
//		[0, 1, 2, 3, 4]

		System.out.println(Arrays.deepToString(arr2D));
//		[[11, 12], [21, 22]]
		
		int[] arr2 = {1,2,3,4,5};
		
		System.out.println(Arrays.equals(arr, arr2)); // false
		System.out.println(Arrays.deepEquals(arr2D, arr2D)); // true

		//index =     0  1  2  3  4
		int[] arr3 = {10,20,30,40,50};
		System.out.println(Arrays.toString(arr3));
		
		int[] arr4 = Arrays.copyOf(arr3, arr.length); 
		System.out.println(Arrays.toString(arr4)); // {10,20,30,40,50}. arr3 에서 index 4번까지 복사됨
		
		int[] arr4_1 = Arrays.copyOf(arr3, 7); 
		System.out.println(Arrays.toString(arr4_1)); // {10,20,30,40,50,0,0}, 배열의 전체 요소보다 많은 경우 0 이 넣어짐
		
		int[] arr5 = Arrays.copyOfRange(arr4, 2, 4); 
		System.out.println(Arrays.toString(arr5)); // {30,40}, index 2부터 4까지 단 4는 포함X
		
		int[] arr6 = {56,32,21,99,89};
		System.out.println(Arrays.toString(arr6)); // [56, 32, 21, 99, 89]
		Arrays.sort(arr6); // sort 메서드를 이용한 정렬
		System.out.println(Arrays.toString(arr6)); // [21, 32, 56, 89, 99] 알아서 정렬해줌
	}

 

댓글