학습 개요: 처음 8일 동안 우리는 구문, 연산자 및 표현식, 루프 구조, 분기 구조에 대한 기본 사항을 배웠습니다. 오늘은 배열의 정의, 관련 속성 메서드, 배열의 메모리 맵을 주로 배웁니다.
학습 목표: 배열의 두 가지 정의 방법, 관련 속성 이해, 메모리 원리 이해 및 오류 해결
어떤 방법을 사용해야 합니까? 같은 반 친구의 성적을 모직물로 보관해야 하나요?
이전에 배운 것처럼 여러 변수를 정의하여 다양한 점수를 저장할 수 있습니다. 하지만 학생이 1,000명 이상이라면 변수를 1,000개 이상 정의하는 것은 어떨까요? 물론 그렇지 않습니다. 이를 위해서는 배열을 사용해야 합니다.
특징: 배열을 정의할 때 배열에 값을 직접 할당하면 시스템이 배열 길이를 결정합니다.
일반 형식:
데이터 유형 [] 배열 이름 = {요소 1 , 요소 2, 요소 3, … };
예:
int [] array= {1,2,3,4,5};
double[] 점수 = {88.5, 99.5, 59.5};
특징 : 배열을 정의할 때 요소의 유형과 배열의 길이를 결정한 후 데이터를 저장합니다
일반 형식:
데이터 유형 [] 배열 이름 = 새로운 데이터 유형 [길이];
예:
int [] array= new int[5];
double[] Score = new double[3];
기본값:
데이터 유형 | 구체적으로 정의된 유형 | 기본값 |
기본 유형 | byte, short, char, int, long |
0 |
float, double |
0.0 | |
부울 |
false | |
참조 유형 | 클래스, 인터페이스, 배열, 문자열 |
null |
같은 종류의 데이터가 많은 경우 배열이 적합합니다
정적 초기화는 요소 값을 알 때 적합합니다
동적 초기화는 어떤 데이터를 저장할지 알 수 없을 때 적합합니다
배열에 액세스하는 일반적인 방법은 다음과 같습니다.
배열 이름 [색인]
예제 질문:
//静态初始化数组 int [] array= {1,2,3,4,5}; System.out.println(array[0]);//输出 1 System.out.println(array[1]);//输出 2 System.out.println(array[3]);//输出 4
예제 질문:
//静态初始化数组 int [] array= {1,2,3,4,5}; System.out.println(array.length);//调用方法,输出长度 5 //最大索引array.length-1
3. Traversal
앞으로 루프 구조와 분기 구조를 배웠습니다. for 루프를 사용하여 배열을 탐색하세요
예제 질문:
주어진 요소 {10,8,9,4,5,6,8,71,2,3,9,99}에서 정적 배열을 사용하여 요소를 저장하고 출력합니다. 배열에서 5보다 큽니까?
코딩 구현:
//静态初始化数组 int [] array= {10,8,9,4,5,6,8,71,2,3,9,99}; for(int i=0;i<array.length;i++) { if(array[i]>5) System.out.println(array[i]); }
출력 결과:
10 8 9 6 8 71 9 994. 메모리 맵
코딩 구현:
//动态初始化数组 int [] arr=new int[3]; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); //修改值 arr[0]=100; arr[2]=200; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]);
출력 결과:
[I@15db974200
원리 설명:
0
[I@15db9742
100
0
200
2.
3. 배열은 동일한 메모리를 가리킵니다
두 배열의 주소 값을 동일하게 변경하면 아래 코드와 같이 수정된 결과는 어떻게 될까요? 인코딩 구현://动态初始化数组 int [] arr=new int[3]; arr[0]=100; arr[1]=200; arr[2]=300; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); int [] arr2=arr; arr2[0]=111; arr2[1]=222; arr2[2]=333; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr2); System.out.println(arr2[0]);
[I@15db9742
100200
300[I@15db9742111
[I@15db9742
111
원리 설명:
힙 메모리에 있는 한 어레이의 주소는 001이고 두 번째 어레이의 주소도 001이므로 두 번째 어레이의 값을 수정하는 것은 실제로 동일한 어레이 메모리입니다. 그에 따라 첫 번째 배열의 값도 변경되며 결과는 다음과 같습니다.
5. 자주 묻는 질문
1. 범위를 벗어난 인덱스
//静态初始化数组 int [] array= {1,2,3}; System.out.println(array[3]);위 코드를 실행한 후 다음과 같습니다. 오류 예외가 나타납니다:
//动态初始化数组 int [] array= new int[3]; array=null; System.out.println(array[0]);
위 내용은 Java 배열 사용 방법에 대한 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!