초보 자 자바 배열

12757 단어 Java배열
배열 이란 무엇 입 니까?
  • 배열 은 같은 유형의 데이터 의 질서 있 는 집합
  • 이다.
  • 배열 은 같은 유형의 몇 개의 데 이 터 를 묘사 하고 일정한 선후 순서에 따라 조합 한 것 이다.
  • 그 중에서 모든 데 이 터 를 하나의 배열 요소 라 고 부 르 고 모든 배열 요 소 는 아래 표 시 를 통 해
  • 을 방문 할 수 있 습 니 다.
    배열 의 성명 생 성
  • 은 먼저 배열 변 수 를 밝 혀 야 프로그램 에서 배열 을 사용 할 수 있 습 니 다.다음은 배열 변 수 를 설명 하 는 문법 입 니 다.
  • 
    dataType[] array;// : int[] nums;         
      
    dataType array[];// : int nums[];
    new 를 사용 하여 배열 의 문법 을 만 듭 니 다:
    
    dataType[] array = new dataType[arraySize]//  int[] nums = new int[10];
    배열 의 요 소 는 색인 을 통 해 접근 합 니 다.배열 색인 은 0 부터 시작 합 니 다.
    배열 의 길이 가 져 오기:array.length연습:배열 에 1 부터 10 까지 반복 적 으로 값 을 부여 하고 배열 의 합 계 를 출력 합 니 다.
    
    public static void main(String[] args) {
            //      
            int[] array = new int[10];
            //sum   
            int sum = 0;
            //       
            for (int i = 1;i<=array.length;i++){
                array[i-1] = i;
            }
            //      ,     sum    
            for (int j = 0;j<array.length;j++){
                sum = sum + array[j];
            }
            System.out.println("     :"+sum);
        }
    메모리 분석:

    상기 연습 과 이 간단 한 메모리 분석 사고 도 를 결합 하여 배열 이 어떻게 자바 메모리 에 생 성 되 었 는 지 간단하게 분석 해 보 세 요.

    세 가지 초기 화 상태
  • 정적 초기 화
  • 
    int[] a = {1,2,3};
    Man[] mans = {new Man(1,1)}//Man   
  • 동적 초기 화
  • 
    int[] a = new int[2];
    a[0] = 1;
    a[1] = 2;
    배열 의 기본 초기 화
    동적 초기 화 는 기본 초기 화 를 포함 합 니 다.배열 은 인용 형식 으로 그 요 소 는 클래스 의 인 스 턴 스 변수 에 해당 하기 때문에 배열 이 공간 을 분배 하면 그 중의 모든 요소 도 인 스 턴 스 변수 와 같은 방식 으로 암시 적 으로 초기 화 됩 니 다.
    
    int[] a = new int[2];//         new    ,                          
    배열 의 네 가지 기본 특징
  • 의 길 이 는 확실 합 니 다.배열 이 만 들 어 졌 을 때 크기 는 바 꿀 수 없습니다.
  • 그 요 소 는 같은 유형 이 어야 하 며 혼합 유형 이 나타 나 면 안 됩 니 다.
  • 배열 의 요 소 는 기본 유형 과 참조 유형 을 포함 하여 모든 데이터 형식 일 수 있 습 니 다.
  • 배열 변 수 는 인용 유형 에 속 하고 배열 도 대상 으로 볼 수 있 으 며 배열 의 모든 요 소 는 이 대상 의 구성원 변수 에 해당 합 니 다.배열 자체 가 대상 이 고 자바 의 대상 은 쌓 여 있 기 때문에 배열 은 원본 형식 이 든 다른 대상 유형 이 든 배열 대상 자체 가 쌓 여 있 습 니 다.
  • 배열 의 사용
    For-each 순환
    
    public static void main(String[] args) {
            int[] arrays = {1,3,5,7,9};
            //JDK1.5      ,      
            for (int array : arrays) {
                System.out.println(array);
            }
        }
    배열 방법 입 참
    
    public static void main(String[] args) {
            int[] arrays = {2,4,6,8,10};
            printArray(reverse(arrays));//  10 8 6 4 2
        }
        //      
        public static void printArray(int[] arrays){
            for(int i = 0; i < arrays.length; i++){
                System.out.print(arrays[i]+" ");
            }
        }
    배열 반환 값
    
     public static void main(String[] args) {
            int[] arrays = {2,4,6,8,10};
            //  for-each         
            for(int array : reverse(arrays)){
                System.out.print(array+" ");
            }
        }
        //    ,               
        public static int[] reverse(int[] arrays){
            int[] result = new int[arrays.length];
            for (int i = 0,j=arrays.length-1; i < arrays.length; i++,j--) {
                result[j] = arrays[i];
            }
            return result;
        }
    다 차원 배열
    다 차원 배열 은 배열 의 배열 이 라 고 볼 수 있다.예 를 들 어 2 차원 배열 은 특수 한 1 차원 배열 로 모든 요 소 는 1 차원 배열 이다.
    2 차원 배열
    
    int a[][] = new int[3][2]//      3 2       

    예:2 차원 배열 의 모든 요 소 를 만 들 고 인쇄 합 니 다.
    
    public static void main(String[] args) {
            int[][] arrays = {{1,2},{3,4},{5,6}};
            for (int i = 0; i <arrays.length ; i++) {
                for (int j = 0;j<arrays[i].length;j++){
                    System.out.print(arrays[i][j]+" ");
                }
                System.out.println();
            }
        }
    Arrays 클래스
  • 배열 의 도구 류 java.util.Arrays
  • 은 배열 대상 자체 가 우리 가 호출 할 수 있 는 방법 이 없 기 때문에 API 에서 도구 류 Arrays 를 제공 하여 우리 가 사용 할 수 있 도록 제공 하여 데이터 대상 에 대해 기본 적 인 조작 을 할 수 있 습 니 다.
  • Arrays 클래스 의 방법 은 모두 static 수식 의 정적 방법 입 니 다.사용 할 때 유형 명 을 직접 사용 하여 호출 할 수 있 습 니 다.'사용 하지 않 음'대상 을 사용 하여 호출 할 수 있 습 니 다.
    상용 기능:
    지정 한 배열 의 내용 을 나타 내 는 문자열 형식 을 되 돌려 줍 니 다.toString 방법 을 통 해.
    
    public static void main(String[] args) {
            int[] arrays = {9,5,8,7,100,365,277,25,64};
    		System.out.println(Arrays.toString(arrays));
        }
    지정 한 int 값 을 지정 한 int 배열 의 모든 요소 에 할당 합 니 다:fill 방법 을 통 해.
    
    public static void main(String[] args) {
            int[] arrays = {9,5,8,7,100,365,277,25,64};
            Arrays.fill(arrays,0);//            0
            System.out.println(Arrays.toString(arrays));
            //  [0, 0, 0, 0, 0, 0, 0, 0, 0]
            int[] arr = {9,5,8,7,100,365,277,25,64};
    //      a -       
    //      fromIndex -              (  )   
    //      toIndex -               (  )   
    //      val -               
            Arrays.fill(arr,0,5,9);//              9
            System.out.println(Arrays.toString(arr));
        }
    배열 정렬:sort 방법 을 통 해 오름차 순 으로 합 니 다.
    
    public static void main(String[] args) {
            int[] arrays = {9,5,8,7,100,365,277,25,64};
            Arrays.sort(arrays);//      :  
            System.out.println(Arrays.toString(arrays));
            //  [5, 7, 8, 9, 25, 64, 100, 277, 365]
        }
    비교 배열:equals 방법 을 통 해 배열 의 요소 값 이 같 는 지 비교 합 니 다.
    
    public static void main(String[] args) {
            int[] arrays = {9,5,8,7,100,365,277,25,64};
            int[] arrays2 = {9,5,8,7,100,365,277,25,64};
            boolean flag = Arrays.equals(arrays, arrays2);
            System.out.println("arrays arrays2        :"+flag);
        }
    거품 정렬
    거품 정렬 알고리즘 작 동:
  • 비교적 인접 한 원소.첫 번 째 가 두 번 째 보다 크 면 두 사람 을 교환 하 세 요.
  • 은 모든 인접 요소 에 대해 똑 같은 작업 을 하고 첫 번 째 쌍 부터 마지막 쌍 까지 한다.마지막 한 쌍 을 비교 하면 마지막 원소 가 가장 큰 수 입 니 다.
  • 모든 요소 에 대해 이상 의 절 차 를 반복 하고 마지막 을 제외 합 니 다.
  • 은 한 쌍 의 숫자 를 비교 할 필요 가 없 을 때 까지 점점 적어 지 는 요소 에 대해 위의 절 차 를 반복 한다.
  • 코드 예제:
    
    public static void main(String[] args) {
            int[] arrays = {9,5,8,7,100,365,277,25,64};
            sort(arrays);
        }
        //    :       。          ,         
        public static void sort(int array[]){
            //temp     ,          
            int temp = 0;
            for (int i = 0; i < array.length-1; i++) {
                for (int j = 0; j < array.length-1-i; j++) {
                    if(array[j]>array[j+1]){
                        temp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = temp;
                    }
                }
            }
            System.out.println(Arrays.toString(array));
        }
    상기 코드 는 정지점 Debug 를 통 해 정렬 과정 에서 마지막 정렬 을 실행 한 후에 데이터 가 모두 정렬 되 었 지만 프로그램 이 정렬 을 완 료 했 는 지 판단 할 수 없습니다.
    이 부족 함 을 해결 하기 위해 서 는 플래그 비트 flag 를 설정 하여 최적화 할 수 있 습 니 다.초기 값 을 false 로 설정 하면 정렬 된 표 가 무질서 한 표 임 을 표시 합 니 다.정렬 이 시작 되 기 전에 flag 값 을 false 로 설정 하고 데이터 교환 을 할 때 flag 를 비 true 로 수정 합 니 다.새로운 정렬 이 시 작 될 때 이 플래그 를 검사 합 니 다.이 플래그 가 false 라면 지난번 에 데 이 터 를 교환 하지 않 았 음 을 나타 내 고 정렬 을 끝 냅 니 다.그렇지 않 으 면 정렬 하기;
    예:
    
    public static void main(String[] args) {
            int[] arrays = {9,5,8,7,100,365,277,25,64};
            sort(arrays);
        }
        public static void sort(int array[]){
            //temp     ,          
            int temp = 0;
            for (int i = 0; i < array.length-1; i++) {
                boolean flag = false;
                for (int j = 0; j < array.length-1-i; j++) {
                    if(array[j]>array[j+1]){
                        temp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = temp;
                        flag = true;
                    }
                }
                if(flag==false){
                    break;
                }
            }
            System.out.println(Arrays.toString(array));
        }
    희소 배열
  • 은 한 배열 의 대부분 요소 가 0 이거 나 같은 값 의 배열 일 때 희소 한 배열 로 이 배열 을 저장 할 수 있다.
  • 희소 배열 의 처리 방식 은:
  • 기록 배열 은 모두 몇 줄 몇 열 이 있 고 몇 개의 서로 다른 값 이
  • 입 니까?
  • 은 서로 다른 값 을 가 진 요소 와 행렬 및 값 을 소 규모 배열 에 기록 하여 프로그램의 규 모 를
  • 으로 축소 한다.
  • 다음 과 같은 그림:왼쪽 은 원시 배열 이 고 오른쪽 은 희소 배열
  • 이다.

    예:11 행 11 열 이 있 는 오목 판
    (0:없 음)(1:검은색)(2:흰색)

    이 2 차원 배열 의 많은 값 이 기본 값 0 이기 때문에 의미 없 는 데 이 터 를 많이 기록 했다.우 리 는 희소 한 배열 로 압축 을 최적화 할 수 있다.
    
    public static void main(String[] args) {
            //1.        array1   11 11  (0:  1:  2: )
            int[][] array1 = new int[11][11];
            //       ,1       ,2       
            array1[1][2] = 1;
            array1[2][3] = 2;
            //      
            System.out.println("      ");
            for(int[] ints : array1){
                for (int anInt : ints){
                    System.out.print(anInt+"\t");
                }
                System.out.println();
            }
            System.out.println("==========================================");
            //2.        
            int sum = 0;//sum        
            //11        
            for (int i = 0; i < 11; i++) {
                //11        
                for (int j = 0; j <11 ; j++) {
                    //          0,      +1
                    if(array1[i][j]!=0){
                        sum++;
                    }
                }
            }
            System.out.println("      :"+sum);
            //3.             array2
            //sum+1  +1                     ,3       、 、 
            int[][] array2 = new int[sum+1][3];
            array2[0][0] = 11;//     
            array2[0][1] = 11;//     
            array2[0][2] = sum;//     
            //4.      ,  0          
            int count = 0;//    
            for (int i = 0; i < array1.length ; i++) {
                for (int j = 0; j < array1[i].length; j++) {
                    if (array1[i][j]!=0){
                        count++;//         +1        array2 
                        array2[count][0] = i;//   
                        array2[count][1] = j;//   
                        array2[count][2] = array1[i][j];// 
                    }
                }
            }
            System.out.println("      ");
            System.out.println(" "+"\t"+" "+"\t"+" ");
            for (int i = 0; i < array2.length; i++) {
                System.out.println(array2[i][0]+"\t"
                                    +array2[i][1]+"\t"
                                    +array2[i][2]+"\t");
            }
            System.out.println("==========================================");
            //5.     array2       array3
            //     array2[0][0] [0][1]           ,array2 11 11 
            int[][] array3 = new int[array2[0][0]][array2[0][1]];
            //           ,  i  1  ,  array2[0]         
            for (int i = 1; i < array2.length; i++) {
                //0 int       ,              
                array3[array2[i][0]][array2[i][1]] = array2[i][2];
            }
            //  array3
            System.out.println("      ");
            for(int[] ints : array3){
                for (int anInt : ints){
                    System.out.print(anInt+"\t");
                }
                System.out.println();
            }
        }
    결과:

    총결산
    이 글 은 여기까지 입 니 다.당신 을 도 울 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 기 를 바 랍 니 다!

    좋은 웹페이지 즐겨찾기