티스토리 뷰

728x90

서문



자바의 정석 기초편 챕터 5편을 기재합니다.
목적은 공부한 내용을 기록하는 것에 있기 때문에 완전한 문장이 아닐 수도 있습니다.









자바의 정석 ( CH.5 )



배열


배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

int score1, score2, score3, score4, score5;

int[] scores = new int[5]; // 연속적인 공간에 score들을 붙여서 사용

배열의 선언

  • 배열을 다루기 위한 참조변수가 만들어짐
  • 선언 후 new 를 통해 배열을 생성해야함
  • 선언과 동시에 배열의 공간을 생성할 수 있음
선언방법 선언 예
타입[] 변수이름; int[] score;
타입 변수이름[]; int score[];
int[] score; // 배열을 참조변수로 선언
score = new int[5]; // int 타입의 값 5개가 저장될 공간 생성

int[] score = new int[5]; // 배열 선언과 동시에 공간생성 가능

배열의 인덱스

  • 배열의 각 요소에 자동으로 붙는 일련번호
  • 인덱스(index)는 0에서 시작
int[] score = new int[5]; // score[0], score[1], score[2], score[3], score[4];;

배열의 길이

  • 배열이름.length, int형 상수
  • 배열의 길이는 한번 생성되면 실행하는 동안에 그 길이를 바꿀 수 없음
int[] arr = new int[5]; // 배열 길이가 5인 배열 생성

배열의 초기화

  • 배열의 각 요소에 처음으로 값을 저장하는 것
int[] arr = new int[5];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;

int[] arr = new int[]{10,20,30,40,50}; // new int[] 생략 가능
int[] arr = {10,20,30,40,50}; // new int[] 생략 가능

int[] arr;
arr = {10,20,30,40,50} // error, new int[] 생략 불가능

배열의 출력

int[] iArr = {10,20,30,40,50};
System.out.println(iArr); // [배열주소] 가 출력됨

char[] chArr = {'a','b','c'};
System.out.println(chArr); // a,b,c가 출력됨, 문자는 println으로 출력 가능

for (int i=0; i<=iArr.length; i++){ // for문을 통해 직접 요소에 접근하여 출력
  System.out.println(iArr[i]);
}

System.out.println(Arrays.toString(iArr)); //[10,20,30,40,50]으로 출력


String(참조형) 배열의 선언과 생성

String[] strArr = new String[3]; // 참조형(주소를 저장),3개의 문자열을 담을 수 있는 배열을 생성
strArr[0] = "wi";
strArr[1] = "kim";
strArr[2] = "park"

String[] strArr2 = {"wi", "kim", "park"};


2차원 배열

  • 테이블 형태의 데이터를 저장하기 위한 배열
  • int[][] score = new int[4][3]; row, col
  • 1차 배열의 배열이 2차원 배열

국어 수학 영어
1 100 100 100
2 20 100 95
3 50 80 90
4 80 60 100
int[][] arr = new int[][]{{1,2,3}, {4,5,6}};
int[][] arr2 = {
                  {1,2,3},
                  {4,5,6}
                } // arr[2][3], arr[0][0]은 1


String 클래스

  • String 클래스는 char[]와 메서드를 결합한 것
  • String class = char[] + 메서드
  • String 클래스는 내용을 변경할 수 없다 (read only)

String a = "a";
String b = "b";
a = a + b; // 기존에 있던 a의 값은 변경되지 않고 a가 참조하는 공간이 달라지고 결과값이 거기에 새로 저장된다. 즉 참조 주소값만 바뀜

String 클래스의 주요 메서드

메서드 설명
char charAt(int index) 문자열에서 해당위치(index)에 있는 문자를 반환
int length() 문자열의 길이를 반환
String substring(int from, int to) 문자열에서 해당하는 범위의 문자열을 반환(to는 포함하지 않음), 만약 to를 생략하면 문자열 끝까지 반환
boolean equals(Object obj) 문자열의 내용이 같은지 확인, 같으면 true 다르면 false
char[] toCharArray() 문자열을 문자배열(char[])로 변환하여 반환

String str = "abcde";
char ch = str.charAt(3); // 문자열 str에서 인덱스 3에 해당하는 d문자를 ch에 저장
System.out.print(ch);
> d

String str = "abcde";
str.length(); // 5
> 5

String str = "abcde";
String tmp = str.substring(1,4); // str에서 index범위로 1~4의 문자 반환, 이때 4는 포함하지 않음, 
> "bcd"

String str = "yes";
boolean result = str.equals("yes");
System.out.print(result);
> true

String str = "abcde";
char[] ch = str.toCharArray();


Arrays로 배열 다루기

  • 배열 비교 - equals(), toString()(1차원배열), deepToString()(2차원배열)
int[] arr = {0,1,2,3,4};
int[][] arr2d = {
                  {0,1,2},
                  {3,4,5}
                };
int[][] arr2d2 = {
                  {0,1,2},
                  {3,4,5}
                };

String[][] str2d = new String[][]{{"aaa","bbb"},{"ccc","ddd"}};

String[][] str2d2 = new String[][]{{"aaa","bbb"},{"ccc","ddd"}};



System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr2d));

System.out.println(Arrays.equals(str2d,str2d2)); // false, 2차원 이상의 비교는 deepEquals()로
> false

System.out.println(Arrays.deepEquals(str2d,str2d2)); // true
> true


copyOf(), copyOfRange()

  • 배열을 복사
int[] arr = {0,1,2,3,4};
int[] arr2 = Arrays.copyOf(arr, arr.length); // arr의 얼마나 복사할 것인가
> arr2 = [0,1,2,3,4]

int[] arr3 = Arrays.copyOf(arr, 3); // 인덱스 3까지인데 3은 포함하지 않음
> arr3 = [0,1,2]

int[] arr4 = Arrays.copyOf(arr, 7); // 원래 arr보다 길게 copy한다면
> arr4 = [0,1,2,3,4,0,0] // 0으로 채움

int[] arr5 = Arrays.copyOfRange(arr, 2, 4) // from to, to는 포함하지 않음
> arr5 = [2,3]

int[] arr6 = Arrays.copyOfRange(arr,0,7) 
> arr6 = [0,1,2,3,4,0,0];


sort()

  • 배열을 정렬

int[] arr = {3,2,0,1,4};
Arrays.sort(arr); // default가 오름차순

> [0,1,2,3,4]





  • 자바의 정석 챕터 5에서는 배열에 대해 배웠습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함