책읽기

[Java의 정석][Chapter-5] 배열

pythaac 2021. 8. 5. 19:42
이 글은 "Java의 정석 (남궁 성 지음)"을 읽고 주관적으로 요약한 글입니다. 

출처 : http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788994492032#N

 

※ 요약

  • 배열
    • 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
  • 배열의 선언과 생성
    • int[] score; (메모리를 할당하지 않은 상태)
    • int[] score = new int[3];
    • int[] socre = int[]{1, 2, 3};
    • int[] score = {1,2,3};
    • 안되는 케이스
      int[] score;
      score = {1,2,3};
    • 기본값인 0으로 초기화
  • 배열의 길이
    • 범위 : 0 ~ 약 20억
    • 변수로 길이 선언 가능
    • 배열이 길이가 0인 경우
      - main args에 아무것도 들어오지 않을 때
      - JVM이 args를 길이 0인 배열로 생성하여 args.length가 0이므로, null인지 검사할 필요가 없음
    • 배열의 길이는 JVM의 별도로 관리
  • 배열 출력
    • Arrays.toString
      - "[요소1, 요소2, ... 요소n]" 형식의 문자열로 변경
    • 배열의 값 출력
      - 타입@주소
      - I@14318bb : 1차원 int형 @ 배열의 내부주소
    • char배열 출력
      - println으로 출력시, 각 요소가 구분자 없이 그대로 출력
      - 예제
      char[] charArr = {'a','b','c','d'};
      System.out.println(charArr); -> abcd
  • 배열 복사
    • System.arraycopy(num, 0, newNum, 0, num.length)
      - num의 0부터 newNum의 0으로 num.length만큼 복사
  • String배열
    • String[] str = new String[3];
    • 기본값은 null
    • 특별히 String 클래스만 간략한 표현이 허용?
      - String[] name = new String[3];
      - name[0] = "Kim";
      cf. name[0] = new String("Kim");
  • char배열 & String클래스
    • String클래스는 char배열에 여러 기능(메서드)을 추가하여 확장
    • String객체는 immutable
      - 값을 바꾸려면 새로운 객체를 만들어야함(연산자)
  • String클래스의 주요 메서드
    • charAt(index) : 특정 인덱스 문자
    • length() : 길이
    • substring(from, to) : to는 포함되지 않음
    • equals() : 같은 문자열 값인지 확인
    • toCharArray() : char[]로 변경
  • 다차원 배열
    • int[][] arr;
    • for문
      for (int[] tmp : scope){
          for (int i : tmp){
    • 가변 배열
      - 마지막 차수의 길이는 지정하지 않고, 나중에 생성 가능