BackEnd/JAVA

[JAVA]배열

이수밈 2023. 7. 22. 23:57

 

배열

  • 배열 : 참조자료형/ 같은 종류의 데이터(자료형/타입)를 저장하기 위한 자료구조
    • 고정된 크기 → 한번 생성된 배열은 크기를 바꾸지 못함 → 배열의 길이는 임의로 변경 불가
    • 배열을 객체로 취급 = 주소를 가리키고 있음
    • 배열의 요소를 참조하려면 배열이름(변수명)과 색인이라고 하는 음이 아닌 정수값을 조합 : 변수명[값(index)]
    • index 번호는 0부터 시작, index 번호로 각 요소에 접근가능 : 배열은 주소값이 0에서 얼마나 떨어져 있는지 계산해서 인덱스에 바로 접근 가능!
    • 배열이름.length : ‘배열이름’이 가지고 있는 길이→배열의 길이 조회가능
    • 길이 변경 필요시, 새로운 배열을 생성 후 내용을 옮긴다
  • 배열의 선언
    • 타입[] 변수 (이 형태를 조금 더 권장)
    • 타입 변수[]
  • 배열의 생성과 초기화
    • 자료형[] 배열이름 = new 자료형[길이]; // 배열생성(초기값으로 초기화)
    • 자료형[] 배열이름 = new 자료형[]{값1, 값2, 값3, 값4}; //배열 생성 및 값 초기화
    • 자료형[] 배열이름 = {값1, 값2, 값3, 값4};
    • 참조자료형의 기본값은 null
  • 배열의 메모리 생성과정
    • int[] nums = new int[3];
  • 배열의 순회 : 반복문을 이용해 배열의 요소를 순회 / for-each문 → for(자료형 변수명 : 반복할 수 있는 것){}
  • 배열의 복사 : 배열은 생성하면 길이를 변경할 수 없기 때문에 더 많은 저장공간이 필요하다면 큰 배열을 생성하고 이전 배열의 값을 복사해야함.
    • 나머지 남는 칸은 초기값으로..
    • 반복문으로 할당 가능
  • 최대최소값 찾기 : min은 크게 만들고, max는 작게 만들어서 시작→ 기초자료형을 객체로 만들어 놓은 것이 Integer
    • 빈도수 구하기 : 수의 범위를 알고있다면, 해당크기 +1만큼 new int, 그 인덱스값에 값 ++ , count[arr[i]]++, 최대수를 알고있어야 쉬움 → APS 카운팅정렬
    다차원 배열
    • 2차원 이상의 배열, 멀티탭
    • 배열 요소로 또 다른 배열을 가지는 배열
    • 2차원 배열은 배열요소로 1차원 배열의 참조를 가지고, 3차원 배열은 배열요소로 2차원 배열의 참조를 가짐.
      • int[][] iArr (선호)
      • int iArr[][]
      • int[] iArr[]
    • 탐색 : grid[i][j] :i랑 j조절
    • %n: 현재까지 출력된 문자열 숫자