1. String배열

배열 에 대한 간략한 개요를 알려드리고자 합니다 String.

앞에서 말했듯이 배열은 모든 유형이 될 수 있습니다. 이것은 s의 배열을 만들 수 있음을 의미합니다 String. "키보드에서 10줄을 읽고 역순으로 표시"하는 프로그램을 작성하려는 경우 코드는 다음과 같습니다.

Scanner console = new Scanner(System.in);
String[] array = new String[10];
for (int i = 0; i < 10; i++)
{
   array[i] = console.nextLine();
}
for (int i = 9; i >= 0; i--)
{
   System.out.println(array[i]);
}
Scanner개체 만들기
10개 요소 배열 개체 만들기
0에서 9까지

반복 키보드에서 문자열을 읽고 배열의 다음 셀에 저장
9에서 0까지 반복

배열의 다음 셀 표시

코드가 거의 변경되지 않았습니다! 어레이를 생성할 때 int로 교체하기만 하면 되었습니다 . String음, 그리고 키보드에서 문자열을 읽을 때 메서드 nextInt()nextLine().


2. String메모리의 배열

그리고 한 가지 더 유용한 사실. 3개의 사진을 살펴보겠습니다.

그림 1. 객체가 메모리에 배열되는 방식 String:

메모리의 문자열 배열

이 사진은 이전 수업에서 찍은 사진입니다.

문자열의 텍스트는 변수에 직접 저장되지 않는다는 점에 유의하십시오. 별도의 메모리 블록이 할당됩니다. 변수 String는 텍스트를 저장하는 개체에 대한 주소(참조)를 저장합니다.

그림 2. 정수 배열이 메모리에 배열되는 방식:

메모리 2의 문자열 배열

이 그림도 익숙하다.

그림 3. 문자열 배열이 메모리에 배열되는 방식:

문자열 배열이 메모리에 배열되는 방식

왼쪽에는 String[]배열 객체의 주소를 저장하는 유형의 배열 변수가 있습니다.

중간에 String배열 개체 자체가 있습니다.

오른쪽에는 일부 텍스트를 저장하는 문자열 개체가 있습니다.

배열 의 셀은 String문자열 자체(String 개체의 텍스트)를 저장하지 않습니다. 대신 주소(참조)를 저장합니다. String변수가 문자열 개체(텍스트가 저장되는 위치)의 주소를 저장하는 것과 같은 방식입니다 .

배열 셀을 비교할 때 다음 사항을 고려하십시오 .

String[] array = new String[10];

array[1] = "Hello";
array[2] = array[1];
array[3] = new String("Hello");
// Compare
array[1] == array[2];
array[1] == array[3];
array[1].equals(array[3]);
array[1].equalsIgnoreCase(array[3]);
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"};