1. 자료구조 : 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계

  2. 배열 : 같은 자료형의 변수로 이루어진 구성 요소가 모인 집합 >> 가장 기본적인 자료구조

    1. int[] arr; // arr는 자료형이 int형인 배열 >> 더 자주 사용 : int형인 배열이라는 것을 명확하게 표현

    2. int arr []; // arr는 자료형이 int형인 배열

      1. arr = new int[5]; >> int형의 배열 본체를 생성, 변수 a가 “참조” 하도록 설정한다는 선언

        new >> 배열 본체에 대한 참조 생성

        arr.length // 배열의 구성 요솟수

        배열의 구성 요소는 자동으로 0으로 초기화됨.

        int[] arr = new int[] {1, 2, 3, 4, 5}; >> 초기화 방법

        arr.clone() // 배열의 복제

        ex) 배열 요솟수 중 최댓값 구하기

        max = arr[0];

        for (int i = 1; i < arr.length(); ++i) {

        if (a[i] > max)

        max = a[i];

        }

        위 방식을 주사(traverse)라 표현. 데이터를 하나씩 지나면서 살피고, 조사한다는 뜻.

      접근 제한자 : 객체 멤버에 대한 접근을 제한함.

      public : 모든 접근 허용

      protected : 같은 패키지(폴더)의 객체, 상속 관계의 객체 허용

      default : 같은 패키지(폴더)의 객체 허용

      private : 현재의 객체 안에서만 허용

      사용

      클래스 : public, default

      생성자 : public, protected, default, private

      멤버 변수 : public, protected, default, private

      멤버 메서드 : public, protected, default, private

      지역 변수 : 사용불가

      전위형 증가 연산자와 후위형 증가 연산자

      ++a : 피연산자 증가 시킨후 식 전체를 평가

      ex)

      a = 3;

      b = ++a; >> b = 4, a =4

      a++ : 식 전체를 평가한 후 피연산자 증가

      ex)

      a = 3;

      b = ++a; >> b = 3, a =4

    1. 2차원 배열 : 배열을 구성원으로 삼는 배열이라 생각하면 편함.

    2. 확장 for문

      1. for (double i : a)

        sum += i;

        : >> ~의 안에 있는 in이라고 읽음. 즉 배열 a의 처음부터 끝까지 모든 요소를 한 개씩 스캔.

        장점 : 배열의 길이를 조사하지 않아도 됨, iterator와 같은 방법으로 스캔할 수 있음.

    3. 클래스 : 임의의 데이터형을 자유로이 조합하여 만들 수 있는 자료구조.

      class XYZ {

      int x; // x는 int형 필드

      long y; // y는 long형 필드

      double z; // z는 double형 필드

      }

      XYZ a; // XYZ형의 클래스형 변수 a 선언

      a = new XYZ(); // XYZ형의 클래스 인스턴스(실체) 생성

      XYZ a = new XYZ(); // 변수와 인스턴스 생성

      • 클래스 본체와 멤버
        • 클래스 본체에서는 다음과 같은 내용을 선언할 수 있음.
          • 멤버(필드/메서드/중첩(nested) 클래스/중첩(nested) 인터페이스)
          • 클래스 초기화/ 인스턴스 초기화
          • 생성자
        • 필드/메서드/생성자를 선언할 때 public/protected/private을 지정할 수 있음.
        • 메서드/생성자는 다중으로 정의(overload)할 수 있음.
        • final로 선언한 필드는 한 번만 값을 대입할 수 있음.
        • 생성자는 새로 생성한 인스턴스의 초기화를 위해 사용.