다크호스 프로그래머 자바 과정 노트 005 배열

자바 레 슨 노트 005
  • 제1장 수조 개념
  • 1.1 배열 의 정의 형식 1 - 동적 초기 화
  • 1.2 배열 의 정의 형식 2 - 정적 초기 화
  • 1.3 배열 의 정의 형식 3 - 생략 된 정적 초기 화
  • 1.4 배열 요 소 를 방문 하여 가 져 오기
  • 1.5 방문 배열 요 소 를 구분
  • 제2 장 배열 의 메모리 구분
  • 2.1 자바 의 메모리 구분
  • 2.2 한 배열 의 메모리 구분
  • 2.3 두 배열 의 구조 구분
  • 제3 장 이상 및 기타
  • 3.1 배열 이 월경 이상 을 일으킨다
  • 3.2 빈 포인터 이상
  • 3.3 배열 의 길 이 를 가 져 옵 니 다
  • 3.4 배열 의 전체 출력
  • 3.5 배열 의 최대 치
  • 3.6 배열 반전
  • 3.7 배열 을 방법 매개 변수 로전달 주소
  • 배열 을 방법 으로 하 는 반환 값주소 되 돌려 주기

  • 이전 절 보기: 자바 과정 노트 004 방법 및 방법 재 업로드
    다음 절 보기: 자바 과정 노트 006 가지 와 대상, 패키지, 구조 방법
    제1장 수조 개념
    1.1 배열 의 정의 형식 1 - 동적 초기 화
    배열: 하나의 용기 로 여러 개의 데이터 값 을 동시에 저장 할 수 있 습 니 다.
    배열 의 특징:
  • 배열 은 인용 데이터 형식
  • 이다.
  • 배열 중의 여러 데이터, 유형 은 반드시 통일 되 어야 한다
  • 배열 의 길 이 는 프로그램 이 실행 되 는 동안 변경 할 수 없습니다
  • 배열 의 초기 화: 메모리 에 배열 을 만 들 고 기본 값 을 부여 합 니 다.두 가지 흔히 볼 수 있 는 초기 화 방식:
  • 동적 초기 화 (길이 지정)
  • 정적 초기 화 (지정 내용)
  • 동적 초기 화 배열 의 이름:
    데이터 형식 [] 배열 이름 = new 데이터 형식 [배열 길이];해석 의미: 왼쪽 데이터 형식: 즉 , 모두 통 일 된 어떤 유형 입 니까?왼쪽 의 중 괄호: 나 를 대표 하 는 왼쪽 배열 의 이름: 배열 에 오른쪽 에 있 는 new 를 가 져 다 줍 니 다. 오른쪽 에 있 는 데이터 형식 을 만 드 는 것 을 대표 합 니 다. 와 일치 해 야 합 니 다. 즉, 배열 에서 가능 한 지 는 int 숫자 입 니 다.
    package cn.itcast.day05;
    /*
      :     ,           。
    
         :
    1.            
    2.          ,      
    3.                 
    
          :          ,            。
              :
    1.      (    )
    2.      (    )
    
              :
        []      = new     [    ];
        :
          :            ,          。
          :        
          :        
       new:         
           :              
            :       ,          ,   int  
    
     */
    public class Demo01Array {
         
        public static void main(String[] args) {
         
        /*    int score1 = 100;
            int score2 = 98;
            int score3 = 99;
            System.out.println(score3); // 99
            score3 = 100;
            System.out.println(score3); // 100*/
    //            ,      300 int   
    //        :    []      = new      [    ];
            int[] arrayA = new int[300];
    
    //            ,   10 double     
            double[] arrayB = new double[10];
    
    //            ,    5    
            String[] arrayC = new String[5];
    
        }
    }
    
    

    1.2 배열 의 정의 형식 2 - 정적 초기 화 : 배열 을 만 들 때 배열 의 데이터 요소 갯 수 ( ) 를 직접 지정 합 니 다. 배열 을 만 들 때 데이터 갯 수 를 직접 지정 하지 않 고 구체 적 인 데이터 내용 을 직접 지정 합 니 다.
    정적 초기 화 기본 형식:
    데이터 형식 [] 배열 이름 층 = new 데이터 형식 [] {요소 1, 요소 2,...};
    주의사항:
    정적 초기 화 는 길 이 를 직접 알려 주지 않 았 지만 괄호 안의 요소 의 구체 적 인 내용 에 따라 배열 의 길 이 를 계산 할 수 있 습 니 다.
    package cn.itcast.day05;
    /*
         (    ):        ,               
         (    ):        ,            ,                。
    
             :
        []      = new     []{  1,  2,...};
    
        :
                   ,                ,          。
     */
    public class Demo02Array {
         
        public static void main(String[] args) {
         
    //                ,       int  ,   5,15,25
            int[] arrayA = new int [] {
         5, 15, 25};
    
    //              ,      :"Hello"、"World"、"Java"
            String[] arrayB = new String[]{
         "Hello", "World", "Java"};
    
        }
    
    }
    
    

    1.3 배열 의 정의 형식 3 - 생략 된 정적 초기 화
    정적 으로 배열 을 초기 화 할 때 형식 은 다시 생략 할 수 있 습 니 다.표준 형식:
        []      = new     [] {
           1,   2, ...};
    

    형식 생략:
    데이터 형식 [] 데이터 이름 = {요소 1, 요소 2,...}
    주의사항:
  • 정적 초기 화 는 길 이 를 지정 하지 않 았 지만 길 이 를 자동 으로 계산 합 니 다.
  • 정적 초기 화 표준 형식 은 두 단계 로 나 눌 수 있다.
  • 동적 초기 화도 두 단계 로 나 눌 수 있다.
  • 정적 초기 화 는 생략 형식 을 사용 하면 두 단계 로 나 눌 수 없습니다.

  • 사용 제안: ( ) 동적 으로 초기 화 합 니 다. 정적 초기 화 를 사용 합 니 다.
    package cn.itcast.day05;
    
    /*
                ,          。
        :
        []      = new     [] {  1,   2, ...};
    
        :
        []      = {  1,   2, ...}
    
        :
    1.            ,             。
    2.                    。
    3.                。
    4.              ,           。
    
        :
                ,      。
                  ,       。
     */
    public class Demo03Array {
         
        public static void main(String[] args) {
         
    //                  
            int[] arrayA = {
         10, 20, 30};
            
    //                  ,         
            int[] arrayB;
            arrayB = new int[] {
         10,20,23};
            
    //                       
            int[] arrayC;
            arrayC = new int[5];
            
    //                  ,         。
            int[] arrayD;
    //        arrayD = {10,20,40}; 
        }
    }
    
    

    1.4 배열 요소 에 접근 하여 가 져 오기
    package cn.itcast.day05;
    /*
            ,         ,       。
             :    [   ]。
       :    int  ,           。
    【  】    0  ,   “     -1”  。
     */
    public class Demo04ArrayUse {
         
        public static void main(String[] args) {
         
    //                  
            int[] array = {
         10, 20, 30};
    
            System.out.println(array); // [I@50cbc42f
    
    //                  
            System.out.println(array[0]); // 10
            System.out.println(array[1]); // 20
            System.out.println(array[2]); // 30
    
    //                         ,      
            int number = array[1];
            System.out.println(number); // 20
        }
    }
    
    

    1.5 액세스 배열 요소 구분
    정수 형식 이 라면 기본 값 은 0 입 니 다.부동 소수점 형식 이 라면 기본 값 은 0. 0 입 니 다.문자 형식 이 라면 기본 값 은 '\ u0000' 입 니 다. 불 형식 이 라면 기본 값 은 false 입 니 다. 참조 형식 이 라면 기본 값 은 null 입 니 다.
    package cn.itcast.day05;
    /*
                ,               。    :
           ,     0;
           ,     0.0;
           ,     '\u0000'
           ,     false
           ,     null
    
        :
                   ,                           。
     */
    public class Demo05ArrayUse {
         
        public static void main(String[] args) {
         
    //                 
            int[] array = new int[3];
    
            System.out.println(array); //      
            System.out.println(array[0]); // 0
            System.out.println(array[1]); // 0
            System.out.println(array[2]); // 0
            System.out.println("=============");
    
    //         123    array   1   
            array[1] = 123;
            System.out.println(array[1]); // 123
            System.out.println(array[2]); // 0
            System.out.println(array[0]); // 0
        }
    }
    
    

    제2 장 배열 의 메모리 구분
    2.1 자바 의 메모리 구분
    자바 의 메모 리 는 5 개 부분 으로 나 뉜 다.
  • 스 택 (Stack): 저장 하 는 것 은 모두 방법 중의 부분 변수 입 니 다.방법의 운행 은 반드시 창고 에 있어 야 한다.부분 변수: 방법의 매개 변수 또는 방법 {} 내부 의 변수 역할 영역: 역할 영역 을 초과 하면 즉시 스 택 메모리 에서 시간
  • 더미 (Heap): 모든 일 에 new 에서 나 오 는 물건 은 모두 쌓 여 있다.메모리 에 있 는 것 은 모두 주소 값 이 있 습 니 다. 16 진수 메모리 에 있 는 데 이 터 는 모두 기본 값 이 있 습 니 다. 규칙: 정수 가 0 이면 부동 소수점 이 0 이면 기본 값 이 0 입 니 다. 문자 가 '\ u0000' 이면 불 이 기본 값 이면 false 이 고 인용 형식 이 라면 null
  • 이 라 고 생각 합 니 다.
  • 방법 구역 (Method Area):. class 관련 정 보 를 저장 하고 방법 에 대한 정 보 를 포함 합 니 다.
  • 로 컬 방법 스 택 (native Method Stack): 운영 체제 와 관련 이 있 습 니 다.
  • 레지스터 (pc 레지스터): CPU 관련
  • 2.2 한 배열 의 메모리 구분
    package cn.itcast.day05.demo02;
    /*
    
     */
    public class Demo01ArrayOne {
         
        public static void main(String[] args) {
         
            int[] array = new int[3]; //      
            System.out.println(array); //    
            System.out.println(array[1]); // 0
            System.out.println(array[2]); // 0
            System.out.println(array[3]); // 0
            System.out.println("===============");
    
    //                  
            array[1] = 10;
            array[2] = 20;
            System.out.println(array); //    
            System.out.println(array[0]); // 0
            System.out.println(array[1]); // 10
            System.out.println(array[2]); // 20
        }
    }
    // :
    // --main (String args[])
    // ------int[] array
    // ----System.out.println(array); //    
    // ----array[1] = 10;
    // ----array[2] = 20;
    // :
    // --new int[3]    
    // ----[0][1][2]  
    //   :public static void main(String[] args)
    

    2.3 두 배열 의 구조 구분
    각각 new, 서로 상관 없어 요.만약 array B = array A 가 사실 주소 가 같다 면, 수조 내용 도 마찬가지다.이것 도 인용 이 라 고 한다.
    package cn.itcast.day05.demo02;
    
    public class Demo02ArrayTwo {
         
        public static void main(String[] args) {
         
            int[] arrayA = new int[3]; //      
            System.out.println(arrayA); //    
            System.out.println(arrayA[1]); // 0
            System.out.println(arrayA[2]); // 0
            System.out.println(arrayA[0]); // 0
            System.out.println("===============");
    
    
            arrayA[1] = 10;
            arrayA[2] = 20;
            System.out.println(arrayA); //    
            System.out.println(arrayA[0]); // 0
            System.out.println(arrayA[1]); // 10
            System.out.println(arrayA[2]); // 20
    
            int[] arrayB = arrayA; //      
            System.out.println(arrayB); //    
            System.out.println(arrayB[1]); // 0
            System.out.println(arrayB[2]); // 0
            System.out.println(arrayB[0]); // 0
            System.out.println("===============");
    
    
            arrayB[1] = 100;
            arrayB[2] = 200;
            System.out.println(arrayB); //    
            System.out.println(arrayB[0]); // 0
            System.out.println(arrayA[1]); // 100
            System.out.println(arrayA[2]); // 200
    
    
        }
    }
    
    

    제3 장 이상 및 기타
    3.1 배열 이 월경 이상 을 일으킨다.
    배열 의 색인 번 호 는 0 에서 시작 하여 배열 의 길이 - 1 까지 입 니 다.
    배열 요소 에 접근 할 때 색인 번호 가 존재 하지 않 으 면 배열 이 발생 합 니 다.
    배열 크로스 오 버 이상 ArrayIndexOutOfBounds 예외
    원인: 해결 을 잘못 썼 습 니 다. 수정 이 존재 하 는
    package cn.itcast.day05.demo03;
    /*
            0  ,        -1  
    
               ,        ,                
          
    ArrayIndexOutOfBoundsException
    
      :       
      :             
     */
    public class Demo01ArrayIndex {
         
        public static void main(String[] args) {
         
            int[] array = {
         15, 25, 35};
    
            System.out.println(array[0]); // 15
            System.out.println(array[1]); // 25
            System.out.println(array[2]); // 35
    
    //            
    //            3   ,      
    //        System.out.println(array[3]);
        }
    }
    
    

    3.2 빈 포인터 이상
    모든 인용 형식 은 null 값 을 부여 할 수 있 지만 아무것도 없다 는 뜻 입 니 다.배열 은 new 초기 화 를 해 야 그 중의 요 소 를 사용 할 수 있 습 니 다.하나만 할당 하고 new 생 성 을 하지 않 으 면 빈 포인터 이상 null 이 발생 합 니 다.
    package cn.itcast.day05.demo03;
    /*
                 null ,           。
          new            。
             null,    new  ,
          :
          NullPointerException
    
      :  new
      :  new
     */
    public class Demo02ArrayNull {
         
        public static void main(String[] args) {
         
    //
            int[] array = null;
           array = new int[3];
            System.out.println(array[0]); // Variable 'array' might not have been initialized
    
        }
    }
    
    

    3.3 배열 의 길 이 를 가 져 옵 니 다.
    배열 의 길이, 형식 을 가 져 오 는 방법: 배열 이름. length 는 int 숫자, 표 배열 의 길 이 를 가 져 옵 니 다.
    배열 이 생 성 되면 프로그램 이 실행 되 는 동안 길 이 를 바 꿀 수 없습니다.
    package cn.itcast.day05.demo03;
    /*
             、  :
        .length
    
           int  ,       。
    
          ,      ,      。
     */
    public class Demo03ArrayLength {
         
        public static void main(String[] args) {
         
            int[] arrayA = new int[3];
    
            int[] arrayB = {
         10, 20, 30, 3, 4,  5, 6, 7, 8, 9};
            int len = arrayB.length;
            System.out.println("ArrayB      :" + len);
            System.out.println("=================");
    
            int[] arrayC = new int[3];
            System.out.println(arrayC.length); // 3
            arrayC = new int[5]; //       ,   arrayC
            System.out.println(arrayC.length); // 5
        }
    }
    
    

    3.4 배열 의 반복 출력
    package cn.itcast.day05.demo03;
    /*
        :                   、     。             。
     */
    public class Demo04Array {
         
        public static void main(String[] args) {
         
            int[] array = {
         15, 20, 30, 40, 50, 4};
    
            //         
            System.out.println(array[0]); // 15
            System.out.println(array[1]); // 20
            System.out.println(array[2]); // 30
            System.out.println(array[3]); // 40
            System.out.println(array[4]); // 50
            System.out.println(array[5]); // 4
            System.out.println("==============");
            
            //     ,           
            for (int i = 0; i < array.length; i++) {
         
                System.out.println(array[i]);
            }
        }
    }
    
    

    3.5 배열 의 최대 값 구하 기
    package cn.itcast.day05.demo03;
    
    public class Demo04ArrayMax {
         
        public static void main(String[] args) {
         
            int[] array = {
         10, 20, 30, 20, 1000};
            int max = array[0]; //     
            for (int i = 1; i < array.length; i++) {
         
                //       , max  ,   
                if(array[i] > max){
         
                    max = array[i];
                }
            }
            //     。   max        。
            System.out.println("   :" + max);
    
            int min = array[0];
            for (int i = 1; i < array.length; i++) {
         
                //        min  ,   
                if(array[i] < min){
         
                    min = array[i];
                }
            }
            System.out.println("   :" + min);
        }
    }
    
    

    3.6 배열 반전
    배열 요소 의 반전: 원래 의 모습: [1, 2, 3, 4] 이후 의 모습: [4, 3, 2, 1] 새 배열 을 사용 할 수 없 도록 요구 합 니 다.원래 의 유일한 배열 로 원소 반전 을 진행 합 니 다.
  • 배열 요소 가 반전 되 는데 사실은 대칭 적 인 위치 에 있 는 요소 교환 이다.
  • 보통 배열 을 옮 겨 다 니 는 색인: int i = 0;현재 대칭 위 치 를 표시 하려 면 두 개의 색인 이 필요 합 니 다: int min = 0;int max = array.length -1;
  • 어떻게 두 변수의 값 을 교환 합 니까?int a = 10; int b = 10; 세 번 째 변 수 를 빌려: int temp = a;a = b; b = temp;
  • 교환 은 언제 중단 합 니까?(1) min = = max (2) min > max 는 언제 부터 min < max
  • 를 교환 합 니까?
    package cn.itcast.day05.demo03;
    /*
           :
         :[1, 2, 3, 4]
         :[4, 3, 2, 1]
             。                 。
    1.       ,             。
    2.              :
    int i = 0;
                  :
    int min = 0;
    int max = array.length -1;
    3.           ?
    int a = 10;
    int b = 10;
           :
    int temp = a;
    a = b;
    b = temp;
    4.         ?
    (1)min == max
    (2)min > max
            
    min < max
     */
    public class Demo07Reverse {
         
        public static void main(String[] args) {
         
            int[] array = {
          10, 20, 30, 40, 50};
    
    //                   
            for(int i = 0; i < array.length; i++){
         
                System.out.println(array[i]);
            }
            System.out.println("=================");
    
    //            
            /*
                 :int min = 0, max = array.length - 1;
                :min < max
                :min++,max--
               :  array[]
             */
            for(int min = 0, max = array.length-1; min < max; min++,max--){
         
                int temp = array[max];
                array[max] = array[min];
                array[min] = temp;
            }
            for(int i = 0; i < array.length; i++){
         
                System.out.println(array[i]);
            }
        }
    }
    
    

    3.7 배열 을 방법 매개 변수 로전달 주소
    배열 은 방법 으로 할 수 있다 NullPointerException.방법 을 호출 할 때 방법의 작은 괄호 에 인삼 을 전달 하고 전달 하 는 것 은 사실 이다.
    package cn.itcast.day05.demo04;
    /*
               。
            ,           ,     ,         。
     */
    public class Damo01ArrayParam {
         
        public static void main(String[] args) {
         
            int[] array = {
         10, 20, 30, 40, 50};
    
            System.out.println(array);
    
            printArray(array); //      array        
            System.out.println("==================aaaa========================");
            printArray(array);
            System.out.println("==================bbbb========================");
            printArray(array);
    
        }
        /*
           :
             :        ,       ,     ,void
            :printArray
            :      ,          
         */
        public static void printArray(int[] array){
         
            for (int i = 0; i < array.length; i++) {
         
                System.out.println("printArray      " + array);
                System.out.println(array[i]);
            }
        }
    }
    
    

    배열 을 방법 으로 하 는 반환 값반환 주소
    한 가지 방법 이 있 을 수 있다 .그러나 0、1、 만 있 을 수 있 고 여러 개의 반환 값 이 있 을 수 없다.만약 한 방법 중 에 여러 개의 결과 데이터 가 발생 하여 되 돌아 오 기 를 원한 다 면 어떻게 합 니까?해결 방안;반환 값 형식 으로 배열 을 사용 하면 됩 니 다.0 1 모두 방법의 매개 변수 유형 또는 반환 값 유형 으로 할 수 있 습 니 다.배열 을 방법 으로 하 는 전달 하 는 것 은 사실 이다.배열 을 방법 으로 하 는 , 전달 하 는 것 도 이다.
    package cn.itcast.day05.demo04;
    /*
           0、1    ;     0  1    ,        。
                           ,   ?
        ;               。
    
                     ,       。
             ,              。
              ,             。
     */
    public class Demo02ArrayReturn {
         
        public static void main(String[] args) {
         
            int[] result = calculate(10,20,30);
            System.out.println("main            :" + result);
            System.out.println("  :" + result[0]);
            System.out.println("   :" + result[1]);
        }
        public static int[] calculate(int a, int b, int c){
         
            int sum = a + b + c;
            int vrg = sum / 3;
            int array[] = new int[2];
            array[0] = sum; //   
            array[1] = vrg; //    
    //        int[] array = {sum, vrg};
            System.out.println("calculate        :" + array);
            return array;
        }
    }
    
    

    이전 절 보기: 자바 과정 노트 004 방법 과 방법 다시 불 러 오기 다음 절 보기: 자바 과정 노트 006 가지 와 대상, 패키지, 구조 방법

    좋은 웹페이지 즐겨찾기