본문 바로가기

프로그래밍/Java

19.12.19) Java - 변수와 배열

목차

  • 배열이란?
  • 2차원 배열은 아파트다.
  • 2차원 배열 생성 및 출력

핵심

배열은 여러 개의 변수를 쉽게 이동시키기 위한 자료형이다

배열이란?

만약 정수 5개를 사용해야 한다면 int 변수를 5개를 만들어야 한다. 그런데 이 변수들을 이동시켜야 하는 상황이 발생할 수 있다. 예) 메서드에 인자로 들어갈 때
그럼 이 5개 변수를 하나 하나씩 옮겨야 한다. 이런 불편함을 줄이기 위해 배열을 쓸 수 있다.

배열은 여러 개의 기억공간이 하나로 합쳐진 구조이다. 같은 자료형만 사용할 수 있다. 아까 말한 5개의 정수도 하나의 배열에 넣어두면 이 배열 하나만 들고 다니면 된다.장바구니에 들어간 과일들처럼

여러 개의 변수가 모여있다고 하니 객체랑 비슷하지 않은가? 전에 객체를 덩어리라고 표현했다. 그럼 객체처럼 배열을 담는 변수는 배열을 담고 있는 게 아니라 배열의 주소를 담고 있다. 객체와의 차이점은 다른 자료형은 담을 수 없다는 점. 상황에 따라서 단점일 수도, 장점일 수도

int[] array; // 배열 선언, 메모리에 배열을 담을 수 있는 기억공간이 만들어짐 
array = new int[3]; // 배열 객체 생성. 객체 주소를 array에 담는다. 

2차원 배열은 아파트다.

2차원 배열은 아파트다. 보통 2차원 배열을 어려워 한다.내 이야기..

아파트에는 동이 있고, 동에는 층이 있다.

int[][] a = new int[3][4] // 3개 동이 있고 각 동에는 4개 층이 있다. 

맨 처음 a에 담긴 배열의 주소는 int [3]의 주소이다. 그래서 a.length()하면 3이 나온다.

  • int[0]이 int[4]의 주소를,
  • int[1]이 int[4]의 주소를,
  • int[2]이 int[4]의 주소를,
  • int[3]이 int[4]의 주소를 가지고 있다.

a가 2차원 배열의 주소를 한 번에 가지고 있지 않다는 말!
그래서 행을 아파트의 동, 열을 아파트 동의 층 수라고 표현했다.

가변 배열

행의 길이만 지정하고 열의 길이는 따로 지정할 수 있다. 왜냐? 각 행이 그 열의 주소를 가지고 있기 때문이다.

int[][] arr = new int[3][]; // 3행만 지정
arr[0] = new int[4]; // 0동에 4층 생성
arr[1] = new int[5]; // 1동에 5층 생성
arr[2] = new int[6]; // 2동에 6층 생성

2차원 배열 생성 및 출력

2차원 배열이 메모리에서 어떻게 구조를 이루는지 알고 있으면 생성이 어렵지 않다.

// Two Dimentional array  
int[][] arr = new int[5][4];  
int element;  
for (int i = 0; i < arr.length; i++) {  
  for (int j = 0; j < arr[i].length; j++) {  
      element = arr[i][j];  
      element = 4;  
      System.out.printf("%d\t", element);  
 }  
 System.out.println();  
}
String[][] arr = new String[4][];  
// Create variable array  
for (int i = 0; i < arr.length; i++){  
  arr[i] = new String[i+1];  
}  
// Assign value and print elements  
for (int i = 0; i < arr.length; i++){  
  for (int j = 0; j < arr[i].length; j++){  
  arr[i][j] = "*";  
  System.out.printf("%s", arr[i][j]);  
 }  
 System.out.println();  
}