1. String
배열
배열 에 대한 간략한 개요를 알려드리고자 합니다 String
.
앞에서 말했듯이 배열은 모든 유형이 될 수 있습니다. 이것은 s의 배열을 만들 수 있음을 의미합니다 String
. "키보드에서 10줄을 읽고 역순으로 표시"하는 프로그램을 작성하려는 경우 코드는 다음과 같습니다.
|
Scanner 개체 만들기 10개 요소 배열 개체 만들기 0에서 9까지 반복 키보드에서 문자열을 읽고 배열의 다음 셀에 저장 9에서 0까지 반복 배열의 다음 셀 표시 |
코드가 거의 변경되지 않았습니다! 어레이를 생성할 때 int
로 교체하기만 하면 되었습니다 . String
음, 그리고 키보드에서 문자열을 읽을 때 메서드 nextInt()
도 nextLine()
.
2. String
메모리의 배열
그리고 한 가지 더 유용한 사실. 3개의 사진을 살펴보겠습니다.
그림 1. 객체가 메모리에 배열되는 방식 String
:
이 사진은 이전 수업에서 찍은 사진입니다.
문자열의 텍스트는 변수에 직접 저장되지 않는다는 점에 유의하십시오. 별도의 메모리 블록이 할당됩니다. 변수 String
는 텍스트를 저장하는 개체에 대한 주소(참조)를 저장합니다.
그림 2. 정수 배열이 메모리에 배열되는 방식:
이 그림도 익숙하다.
그림 3. 문자열 배열이 메모리에 배열되는 방식:
왼쪽에는 String[]
배열 객체의 주소를 저장하는 유형의 배열 변수가 있습니다.
중간에 String
배열 개체 자체가 있습니다.
오른쪽에는 일부 텍스트를 저장하는 문자열 개체가 있습니다.
배열 의 셀은 String
문자열 자체(String 개체의 텍스트)를 저장하지 않습니다. 대신 주소(참조)를 저장합니다. String
변수가 문자열 개체(텍스트가 저장되는 위치)의 주소를 저장하는 것과 같은 방식입니다 .
배열 셀을 비교할 때 다음 사항을 고려하십시오 .
|
10개의 문자열로 구성된 배열 만들기 배열 에 값 넣기 true (참조가 같음) false (참조가 같지 않음)true (문자열이 같음) true (문자열이 여전히 같음) |
3. Java에서 빠른 배열 초기화
배열은 매우 유용하므로 Java 작성자는 가능한 한 편리하게 작업할 수 있도록 노력했습니다.
그들이 한 첫 번째 작업은 배열의 초기 값을 제공하는 프로세스인 배열 초기화를 단순화하는 것이었습니다.
결국 어딘가에서 읽은 데이터 외에도 프로그램이 작동하려면 자체 내부 데이터가 필요한 경우가 많습니다. 예를 들어 각 월의 길이를 배열에 저장해야 한다고 가정합니다. 코드는 다음과 같습니다.
int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December
그러나 Java 제작자 덕분에 이를 보다 간결하게 작성할 수 있는 방법이 있습니다.
// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
배열의 모든 값을 쉼표로 구분하여 간단히 나열할 수 있습니다!
편리하죠? 하지만 그게 다가 아닙니다.
그럴 때 컴파일러는 배열 값의 유형을 기반으로 컨테이너(배열 객체)의 유형을 결정할 수 있습니다. 그리고 배열의 길이를 결정하기 위해 중괄호 안에 쓰여진 요소의 수를 세는 것은 간단합니다.
즉, 이 코드를 더 짧게 작성할 수 있습니다.
// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
아름다움이지 않습니까? 🙂
이것을 "빠른 배열 초기화"라고 합니다. 그건 그렇고, 이것은 int
... 이외의 유형에서도 작동합니다.
// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};
GO TO FULL VERSION