곰돌이볼 2022. 9. 1. 09:20

📄 학습내용

배열

  • 배열이란?
    • 같은 타입의 변수들의 집합
    • 참조타입으로 메모리에는 배열이 저장된 주소값을 가지고 있음
  • 요소 & 인덱스
    • 요소 : 배열의 각 값들
    • 인덱스 : 배열의 위치, 0부터 (배열의 길이 - 1)
  • 1차원 배열 & 2차원 배열
    • 1차원 배열 : 배열의 요소가 값인 경우
    • 2차원 배열 : 배열의 요소가 배열인 경우
  • 배열 선언 및 초기화
    • 배열 선언 : 배열 선언만 할 경우, 메모리 공간 확보 및 메모리 이름 붙임
    • 배열 초기화 : 배열의 값을 할당해서 메모리 공간에 배열의 시작 주소값을 가짐
int[] arr; //배열 선언
arr = new int[5]; //배열 초기화
  • 1차원 배열
    • 배열 선언 및 초기화
      • 배열 선언 : 타입[] 배열명;
      • 초기화
        • 배열명 = new 타입[배열길이];
        • 배열명 = { 요소1, 요소2, 요소3 ... };
    • 값(요소) 접근
      • 배열명[인덱스]
    • 배열 길이
      • 배열명.length
    • 배열 출력
      • Arrays.toString(배열명)
      • import java.utill.Arrays;
int[] array = {1, 2, 3};
System.out.println(Arrays.toString(array)); // [1, 2, 3]
  • 2차원 배열
    • 배열 선언 및 초기화
      • 배열 선언 : 타입[][] 배열명;
      • 배열 초기화
        • 배열명 = new 타입[행길이][열길이];
        • 배열명 = {{요소1, 요소2...}, {요소3, 요소4 ...} ... };
    • 값(요소) 접근
      • 배열명[행][열]
    • 배열 길이
      • 배열명.length : 배열의 행 개수
      • 배열명[행 인덱스].length : 배열의 행의 개수, 즉 해당하는 배열의 열의 개수
    • 배열 출력
      • Arrays.toString(배열명)
      • import java.utill.Arrays;
int[][] array = {{1, 2}, {3, 4}};
System.out.println(Arrays.toString(array)); // [조소값1], [주소값2]
System.out.println(Arrays.toString(array[0])); // [1, 2]
System.out.println(Arrays.toString(array[1])); // [3, 4]
  • 가변배열
    • 2차원 이상인 배열에서 마지막 차수를 정하지 않아서 배열의 길이가 가변적으로 변하는 배열
    • 열의 개수는 행마다 다르게 선언 가능
int[][] arr = new int[3][];
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3];

System.out.println(Arrays.toString(arr[0])); // [0]
System.out.println(Arrays.toString(arr[1])); // [0, 0]
System.out.println(Arrays.toString(arr[2])); // [0, 0, 0]
  • 배열 탐색
    • for문, while 문 : 배열 탐색 및 배열의 요소 수정 가능
    • 향상된 for문 : 배열 탐색만 가능, 배열의 요소 수정 불가능

 

계산기 과제

심화기능을 구현해보았다.

https://github.com/kung036/be-sprint-calculator

 

🧶 발생한 문제 및 해결방법

  • 문제점) String의 length()와 배열의 length의 차이점은?
  • 해결방법) String의 length() 메서드가 선언될 때 String 변수의 길이를 측정해서 반환하고, 배열이 처음 생성될 때 배열의 길이는 length 상수에 저장된다. 즉 String의 length()는 메서드이고 배열의 length는 상수이다.

 

  • 문제점) 빈 배열은 어떻게 생성할 수 있을까?
  • 해결방법)
    • 배열명 = new 타입[0]
    • 배열명 = new 타입[] {}

 

  • 문제점) String을 어떻게 배열로 만들 수 있을까?
  • 해결방법) String의 split() 메서드
    • 사용방법 : 문자열 배열 = 문자열.split(분리할_기준문자열)

 

  • 문제점) 배열의 길이를 어떻게 수정할 수 있을까?
  • 해결방법 1) Arrays.copyOf() 사용
    • 사용방법 : 배열 = Arrays.copyOf(배열, 배열길이)
    • 설정한 배열의 길이만큼 배열이 생성
    • 원래 길이보다 길어진 경우에는 추가된 길이만큼 배열 뒤에 0이 추가되고, 짧아진 경우에는 뒤의 부분이 사라진다.
  • 해결방법 2) Arrays.copyOfRange() 사용
    • 사용방법 : 배열 = Arrays.copyOfRange(배열, 시작인덱스, 종료인덱스)
    • 시작인덱스부터 (종료인덱스-1)만큼의 부분 배열
  • 해결방법 3) System.arraycopy() 사용
    • 사용방법 : System.arraycopy(원본_배열, 복사시작_인덱스, 붙일_배열, 복사시작_인덱스, 복사한_배열길이)

 

  • 문제점) 과제 push할 때 문제 발생

  • 해결방법) 나의 github의 repository의 주소가 아닌 코드스테이츠 gitjub의 repository로 연결해서 해서 실패했다. 그래서 remote 명령어를 통해서 이 문제를 해결했다.

 

  • 문제점) 문자열의 특정 문자를 대체하는 방법은?
  • 해결방법 1) String 메소드 replace()
    • 사용방법 : 문자열 = 문자열.replace(대체_전_문자열, 대체_후_문자열)
  • 해결방법 2) String 메소드 replaceAll()
    • 사용방법 : 문자열 = 문자열.replaceAll(대체_전_문자열, 대체_후_문자열)
    • 정규식 사용 가능

 

 공부 난이도

배열 ☆☆☆☆★

 

🎡 페어리뷰

 

🌕 느낀점

  아직까지는 저녁 복습 시간이 없어도 진도를 따라가는데 큰 어려움이 없다. 배열 사용 방법이 C언어나 파이썬이랑 달라서 아직 익숙해지는데 시간이 걸렸다. 그리고 다양한 함수를 적절하게 사용하는게 중요한 것 같다. 배열과 계산기 과제 이외에 여러 추가 과제들(하지 않아도 괜찮은 추가 과제)이 있던데 주말에 git을 하고 해봐야겠다. 원래 3일동안 페어와 같이해야 했지만 아쉽게도 하루만 같이해서 아쉬웠다.