하나. 배열의 특성에 대해
1. Java에서는 배열 또는 컬렉션을 사용하는지 여부를 확인하는 경계가 있습니다. 작업이 한계를 벗어난 경우 runtimeexception을 얻습니다.
2. 배열은 특정 유형 만 저장할 수 있습니다. 배열은 기본 데이터 유형을 저장할 수 있지만 컬렉션은 할 수 없습니다. 컬렉션은 특정 유형의 객체를 처리하지 않습니다. 객체 유형에 따라 모든 객체를 처리합니다. 컬렉션에 저장되는 것은 객체 자체가 아닌 객체의 참조입니다.
3. 컬렉션 클래스는 객체에 대한 참조 만 저장할 수 있습니다. 기본 데이터 유형을 직접 저장하거나 객체에 대한 참조를 저장하기 위해 배열을 만들 수 있습니다. 컬렉션에서는 정수, 이중 등과 같은 래퍼 클래스를 사용하여 기본 데이터 유형 값을 저장할 수 있습니다.
예제 코드 :
int a = 10; 정수 정수 = 새로운 정수 (a); int b = integer.intValue (); System.out.println (a = b);
4. 객체 배열과 기본 데이터 유형 배열은 거의 동일합니다. 유일한 차이점은 객체 배열이 참조를 저장하고 기본 데이터 유형 배열은 기본 데이터 유형의 값을 유지한다는 것입니다.
2. 배열의 올바른 사용
예를 들어 100 개의 숫자를 읽어야하는 경우 많은 양의 데이터를 저장 해야하는 경우 100 개의 변수를 정의해야합니다. 분명히 코드를 100 번 반복하는 것은 그리 의미가 없습니다. 이 문제를 해결하는 방법? Java Language는 배열 (배열) 데이터 구조를 제공하며, 동일한 데이터 유형의 요소를 저장하고 100 개의 숫자를 배열에 저장할 수있는 컨테이너입니다. 이 시점에서 배열이 큰 도움이 될 것입니다 ~
1. 배열의 이점
데이터 저장과 데이터를 저장하지 않는 것 사이에 차이가 있습니까? 배열의 가장 큰 장점은 모든 저장된 요소를 자동으로 번호로 매수 할 수 있다는 것입니다. 숫자는 0에서 시작합니다.이 데이터를 쉽게 작동시키기 쉽습니다.
예를 들어, 학생 번호는 해당 학생을 찾는 데 사용될 수 있습니다.
2. 배열 형식
형식 1 :
요소 유형 [] 배열 이름 = 새 요소 유형 [요소 수 또는 배열 길이];
예:
int [] arr = new int [5]; ARR [0] = 1; ARR [1] = 2;
형식 2 :
요소 유형 [] 배열 이름 = 새 요소 유형 [] {요소,…};
int [] arr = new int [] {3,5,1,7}; int [] arr = {3,5,1,7};참고 : 공간을 배열에 할당 할 때 배열이 저장할 수있는 요소 수를 지정하여 배열 크기를 결정해야합니다. 배열을 작성한 후에는 배열의 크기를 수정할 수 없습니다. 길이 속성을 사용하여 배열의 크기를 얻을 수 있습니다.
3. 배열 변수를 선언합니다
배열을 사용하려면 배열을 프로그램에서 선언해야하며 배열의 요소 유형을 지정해야합니다.
= 왼쪽 절반 :
먼저 요소 유형이 int이고 컨테이너가 배열을 사용한다는 것을 명확히하기 위해 왼쪽을 작성하십시오. 그렇다면 어레이를 어떻게 식별합니까? 그런 다음 특수 기호 [] 브래킷을 사용하여 그것을 나타냅니다. 배열을 사용하려면 배열에 이름을 부여해야하므로 여기에서 배열 X를 지정합니다. 그런 다음 동일한 부호를 따르십시오.
코드는 다음과 같습니다.
int [] x
참고 : int x []는 또한 배열 생성 형식입니다. int [] x를 선언하는 것이 좋습니다.
4. 배열을 만듭니다
= 오른쪽 절반 :
새로운 키워드를 사용합니다. 새로운 것은 메모리에서 컨테이너 엔티티를 생성하는 데 사용됩니다. 데이터 스토리지에는 공간이 필요합니다. 많은 데이터를 저장하기위한 공간은 새 연산자와 함께 열립니다. 새로운 int [3]; 이 3은 요소 수입니다. 오른쪽의 부품은 3 가지 요소를 저장할 수있는 메모리의 실제 배열을 정의합니다.
New Int [3]는 두 가지를 수행합니다. 먼저 새 Int [3]를 사용하여 배열을 만들고 배열 변수 x에 대한 참조를 할당하십시오.
int [] x=new int[3];
x는 어떤 유형입니까?
모든 변수에는 자체 데이터 유형이 있어야합니다. 이 X는 유형 int가 아닙니다. int는 컨테이너의 요소 유형을 나타냅니다. 그런 다음 X는 배열 유형입니다.
배열은 별도의 데이터 유형입니다. 데이터 유형은 기본 데이터 유형과 참조 데이터 유형으로 나뉘어 진 두 가지 주요 학교로 나뉩니다. 두 번째로 큰 학교는 참조 데이터 유형입니다. 따라서 이제 세 가지 유형의 참조 데이터 중 하나와 접촉했습니다. 즉, 배열 유형 [] 브래킷은 배열을 나타냅니다.
int[] arr = new int[5]; 메모리에서 어떻게됩니까?
프로그램이 실행될 때 메모리에서 공간을 열어야합니다. INT [] arr = new int [5];이 프로그램은 메모리에서 어떻게 생겼습니까? 여기에는 프로그램을 실행할 때 Java Virtual Machine에서 열린 공간이 포함됩니다. 그렇다면 Java는 얼마나 많은 공간이 열리나요? Java의 기억 구조를 계속 배우십시오.
5. 배열 초기화
방법 1 : 운영자를 새로 사용하지 마십시오
int [] arr = {1, 2, 3, 4, 5};방법 2 : 운영자를 사용하십시오
int [] arr2 = new int [] {1, 2, 3, 4, 5}; int [] arr3 = new int [3]; arr3 [0] = 1; arr3 [1] = 5; arr3 [2] = 6;어레이 초기화에 새로운 연산자가 사용되지 않은 경우. 참고 : 다음 작성 방법이 올바르지 않습니다.
int [] arr; arr = {1,2,3,4,5};현재 배열 초기화를 초기화하면 한 명령문에 선언, 생성 및 초기화를 배치해야합니다. 분리하면 구문 오류가 발생합니다.
따라서 다음과 같이 쓸 수 있습니다.
int [] arr = {1,2,3,4,5};6. 배열 트래버스
public static void main (String [] args) {int [] x = {1, 2, 3}; for (int y = 0; y <3; y ++) {system.out.println (x [y]); // system.out.println ( "x ["+y+"] ="+x [y]); 인쇄 효과 x [0] = 1;} // 그러면 이것은 배열의 첫 번째 공통 작업입니다. Traversal}배열에는 배열의 요소 수, 즉 배열의 길이를 얻을 수있는 속성이 있습니다. 배열 이름
public static void main (String [] args) {int [] x = {1, 2, 3}; for (int y = 0; y <x.length; y ++) {system.out.println (x [y]); // system.out.println ( "x ["+y+"] ="+x [y]); 인쇄 효과 x [0] = 1;} // 그러면 이것은 배열의 첫 번째 공통 작업입니다. Traversal}7. 배열의 일반적인 예외
배열 코너 마커는 경계 예외를 가로 지릅니다. 참고 : 배열의 각도 마커는 0에서 시작합니다.
public static void main (String [] args) {int [] x = {1, 2, 3}; System.out.println (x [3]); // java.lang.arrayindexOutofBoundSexception}2 널 포인터 예외 :
public static void main (String [] args) {int [] x = {1, 2, 3}; x = null; system.out.println (x [1]); // java.lang.nullpointerexception}정렬:
배열을 사용하는 시점 : 많은 요소가 있으면 이러한 배열의 작동을 용이하게하기 위해 임시 스토리지가 먼저 수행되고 사용 된 컨테이너가 배열입니다.
특징:
배열 길이가 고정되어 있습니다.
8. 배열의 일반적인 작동
1 : 케이스 :
배열은 최대 값을 가져옵니다
/*최대 값을 얻기 위해 함수를 정의합니다.
1. 결과를 결정하십시오. 반환 값 유형 int
2. 알 수없는 콘텐츠 : 배열이 결정되지 않은 최대 값은 배열이 결정되지 않습니다.
아이디어 :
1. 변수를 정의하고 배열의 더 큰 요소를 기록하십시오.
2. 전체 배열을 반복하고 배열의 각 요소를 변수와 비교하십시오.
3. 변수가 그보다 더 큰 요소를 만나면 변수가 요소의 값을 기록하게하십시오. 루프가 끝나면 최대 값이 생성됩니다.
*/public static int getMax (int [] arr) {// 변수를 더 큰 값을 기록하여 배열의 모든 요소로 초기화합니다. int max = arr [0]; for (int x = 1; x <arr.length; x ++) {if (arr [x]> max) max = arr [x];} return max;}둘 : 직접 분류
사례 2 : 직접 정렬을 사용하여 배열 정렬 :
/*
정렬을 선택하십시오.
한 모서리의 요소를 다른 요소와 비교하십시오.
내부 루프의 첫 번째 끝에서 가장 많은 값은 헤드 각도 위치에 나타납니다.
*/public static void selectsort (int [] arr) {for (int x = 0; x <arr.length-1; x ++) {for (int y = x+1; y <arr.length; y ++) // 왜 y x+1의 초기화 값은 왜됩니까? 비교할 때마다 //는 X 코너에 표시된 다음 요소와 비교됩니다. {if (arr [x]> arr [y]) {int temp = arr [x]; arr [x] = arr [y]; arr [y] = temp;}}}}3 : 버블 분류
/*버블 링 정렬. 비교 방법 : 인접한 두 가지 요소를 비교하십시오. 조건이 충족되면 위치 교체가 수행됩니다. 원리 : 내부 루프가 한 번 끝나고 가장 많은 값은 꼬리 코너 위치에 나타납니다. */public static void bubblesort (int [] arr) {for (int x = 0; x <Ar // -1 : 경계를 넘는 모서리 자국을 피하십시오. {if (arr [y]> arr [y+1]) {int temp = arr [y]; arr [y] = arr [y+1]; arr [y+1] = temp;}}}}4 : 반 폭도 검색 (이중 입자 방법)
/*검색 효율성을 향상시키기 위해 반 마감 검색 방법을 사용할 수 있습니다. 참고 :이 검색은 주문 배열에만 유효합니다. 이 방법은 또한 이진 검색 방법이되었습니다. */public static int halfseach (int [] arr, int key) {int min, mid, max; min = 0; max = arr.length -1; mid = (max+min)/2; while (arr [mid]! = key) {if (key> arr [mid]) min = mid+1; else if (key <arr [mid]) max = mid -1; if (min+min); 중간;}5 : 배열 플립
/*반전은 실제로 헤드와 테일 코너 마크의 요소의 위치 교체이며 헤드 코너 마크가 자동으로 증가합니다. 꼬리 코너 마크가 자체적으로 재입어되었습니다. 헤드 각도 마크가 <꼬리 각인 인 경우, 치환 동작을 수행 할 수 있습니다. */public static void reversearray (int [] arr) {for (int start = 0, end = arr.length-1; start <end; start ++, end-) {스왑 (arr, start, end);}} // 배열 요소의 위치 변위를 수행합니다. public static void swap (int [] arr, int a, int b) {int temp = arr [a]; arr [a] = arr [b]; arr [b] = temp;}11. 2 차원 배열
배열 사용
Java 어레이에 대한 자세한 설명
Traversal : ToString () 배열의 요소를 문자열로 반환합니다.
정렬 : 정렬 () 배열을 오름차순 순서로 주문하십시오
검색 : binarySearch () 지정된 배열에서 지정된 요소를 검색하고 요소의 인덱스를 반환합니다. 리턴이없는 경우 (-insert point-1) 참고 : 검색 기능을 사용하는 경우 배열을 먼저 정렬해야합니다.
2 차원 배열 :
흡연:
1 변수를 구입할 돈이 없습니다
작은 돈은 1 차원 배열 20 변수의 팩입니다.
매우 풍부한 10 팩 (2 차원 배열) 2D 어레이
2 차원 배열 : 본질적으로 스토리지는 1 차원 배열입니다.
배열 정의 :
배열 유형 [] [] 배열 이름 = 새 배열 유형 [1 차원 배열 번호] [각 1 차원 배열의 요소 수];
Java 어레이에 대한 자세한 설명
질문 : 왜 A.length = 3, a [0] .length = 4인가?
Java 어레이에 대한 자세한 설명
배열 초기화 :
정적 초기화 :
int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };
동적 초기화 :
Java 어레이에 대한 자세한 설명
2 차원 배열에 대한 일반적인 작업 :
1. 2 차원 배열을 가로 지르십시오
2. 2 차원 배열을 요약하십시오
클래스 demo3 {// 2 차원 배열 공개 정적 무효 printarr2 (int [] [] a) {// 1. (int i = 0; i <a.length; i ++) {// 2. 1 차원 배열을 분리하여 (int J = 0; ) {system.out.print (a [i] [j]+","); }}} // 2 차원 배열에서 요소의 축적 합계를 계산하는 함수를 정의합니다. public static long getsum (int [] [] a) {// 0. 결과 변수 long sum = 0l을 정의하십시오. // 1. (int i = 0; i <a.length; i ++)에 대한 2 차원 배열을 분해합니다. {// 2. (int j = 0; j <a [i] .length; j ++) {sum+= a [i] [j]; }} return sum;} // 통계 2 차원 배열의 요소 수를 public static int getDatacount (int [] [] a) {// 0. 요소 수를 기록 int count = 0; // 1. (int i = 0; i <a.length; i ++)에 대한 2 차원 배열을 분해합니다. {// 2. 1 차원 배열을 분해하여 (int j = 0; j <a [i] .length; j ++) {count ++; }} return count;} public static void main (string [] args) {int [] [] a = new int [] [] {{23,4,5}, {2}, {4,5,78,56,90}}; printarr2 (a); System.out.println (); System.out.println ( "축적 된 합계 :"+getsum (a)); System.out.println ( "통계적 요소 :"+getDatacount (a)); System.out.println ( "Hello World!");}}위는 Java 어레이에 대한 모든 주제입니다. 보시다시피, Java 어레이는 매우 강력한 데이터 구조입니다.