본문 바로가기

개발

Java - 배열

반응형

배열
 - 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
int score1, score2, score3, score4, score5;
int[] score = new int[5];
- 변수는 저장공간이 따로따로, 배열은 저장공간이 연속 
- 배열의 선언 : 배열을 다루기 위한 참조변수의 선언

선언방법 선언 예
타입[] 변수이름 -- 이거를 더 선호  ** 나도 ^_^ int [] score;
String[] name;
타입 변수이름[] int score[];
String name[];

int [] score; // 참조변수 선언
score = new int[5]; // int 타입 값 5개를 저장할 수 있는 배열 생성

배열길이
 - 배열이름.length - 배열의 길이 (int형 상수)
 int[] arr = new int[5]; // 길이 5
 배열은 한번 생성하면 실행 동안 그 길이를 바꿀 수 없다.
   >> 왜 ?? 연속적인 메모리 선언 
                 길이를 바꾸면 처음에 쓰던 메모리 뒤에 빈 곳이 있는지 알 수 없다.
                 따라서 늘릴 수 없어 부족하면 큰것을 새로 만들고 옮겨야한다.


  배열 초기화
  int[] score = new int[3];
   score[0] = 50;
   score[1] = 60;
   score[2] = 70;

  int[] score = new int[]{50,60,70};
  int[] score = {50,60,70}; // new int[]생략가능

  int[] score;
  score = {50,60,70};                // new int[]생략가능 에러! 
  score = new int[]{50,60,70}; // 가능

배열의 출력
  int[] iArr = {100, 90, 80};
 System.out.println(iArr); // 배열의주소값 출력된다 [I@14318bb 와 같은 값
>> for문 이용하여 출력해야한다.
>> System.out.println(Arrays.toString(iArr)); // 배열의 내용을 문자열로 변환하여 출력해준다. [100, 90, 80] 이 출력된다.

  예외로 char 배열은 값이 출력된다.
 char[] chArr = {'a', 'b', 'c', 'd'};
 System.out.println(chArr); // abcd 출력된다

2차원배열
 - int [][] score = new int[4][3];

  0 1 2
0 score[0][0] score[0][1] score[0][2]
1 score[1][0] score[1][1] score[1][2]
2 score[2][0] score[2][1] score[2][2]
3 score[3][0] score[3][1] score[3][2]

2차원 배열 초기화
 int[][] arr = new int[][]{{1,2,3},{4,5,6}};
 int[][] arr = {{1,2,3},{4,5,6}};

String 클래스
 - String 클래스는 char[]와 메서드(기능)를 결합한 것
 String 클래스 = char[] + 메서드(기능) 
  문자 배열에 관련된 기능을 추가한 것
 - String 클래스는 내용을 변경할 수 없다.
 
char charAt(int idx) : 문자열에서 해당 위치에 있는 문자를 반환한다.
int length() : 문자열의 길이를 반환한다.
String substring(int from, int to) : 문자열에서 해당 범위 문자열을 반환한다.
boolean equals(Object obj) : 문자열 내용이 같은지 확인한다. 같으면 true, 다르면 false
char[] toCharArray() : 문자열을 문자배열(char[])로 변환해서 반환한다.

Arrays로 배열 다루기
 - 문자열 비교와 출력 - equals(),  toString()
 int[] arr = {0,1,2,3,4};
 int[][] arr2D = {{11,12},{21,22}};
 System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4] 
 System.out.println(Arrays.deepToString(arr2D)); // [[11, 12], [21, 22]]

 String[][] str2D = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
 String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
 System.out.println(Arrays.equals(str2D,str2D2));        // false
 System.out.println(Arrays.deepEquals(str2D,str2D2)); // true

- 배열의 복사 - copyOf(), copyOfRange()
 int[] arr = {0,1,2,3,4};
 int[] arr2 = Arrays.copyOf(arr, arr.length); // arr2=[0,1,2,3,4]
 int[] arr3 = Arrays.copyOf(arr, 3); // arr3=[0,1,2]
 int[] arr4 = Arrays.copyOf(arr, 7); // arr4=[0,1,2,3,4,0,0]
 int[] arr5 = Arrays.copyOfRange(arr, 2, 4); // arr5=[2,3] index가 2이상 4 미만
 int[] arr6 = Arrays.copyOfRange(arr, 0, 7); // arr5=[0,1,2,3,4,0,0] index가 0이상 9 미만

- 배열의정렬 - sort()
  int[] arr = {3,2,0,1,4};
  Arrays.sort(arr); // 오름차순 정렬

반응형

'개발' 카테고리의 다른 글

Java - 추상클래스  (0) 2021.06.05
Java - 객체지향개념  (0) 2021.05.30
Java - 변수  (0) 2021.05.05
Java  (0) 2021.05.05
클라우드 컴퓨팅의 이점  (0) 2021.04.08