[자바] 배열

컴공생의 코딩 일기·2021년 7월 22일
0

자바

목록 보기
1/10
post-thumbnail

자바를 공부하면서 복습 겸 공부 한걸 기록하고 싶어서 블로그를 시작하게 되었습니다. 글 중에 틀린 부분이 있으면 피드백 주시면 감사하겠습니다!

배열:

자바(java)에서의 배열은 선형 자료구조로 동일한 데이터 타입의 메모리에 연속적으로 저장하여 하나의 변수로 관리하는 자료 구조입니다.

자바에서의 배열 선언

int[] arr; or int arr[]; // 크기 할당과 초기화 없이 참조 변수 만 선언 

int[] arr = {1,2,3,4,5}; // 크기와 초기화를 한번에 선언

먼저 맨 앞에는 자료형[] 을 정해줘야 합니다. 예시에서는 int 정수 형으로 지정을 해주었지만 long, String, double, float 등 다른 자료형이 올 수 있습니다. 그런 다음 배열의 이름을 지정해 주면 됩니다.(배열에서 [] 대괄호는 배열 이름 앞에 올 수도 있고 뒤에 올 수도 있습니다.)

배열 생성

arr = new int[5];  //초기화 없이 크기만 지정(c언어에서는 초기화를 하지 않으면 메모리 안에 
                  //쓰레기 값이 들어가지만 자바에서는 자동으로 0으로 초기화 됩니다.

int[] arr = new int[5]; // 선언과 생성을 한번에 할 수 있습니다.

그림을 보면 메모리에 5바이트 크기만큼 공간이 생긴 걸 볼 수 있습니다.(배열에서의 시작은 0부터 시작합니다.)
[그림을 보면 메모리에 5바이트 크기만큼 공간이 생긴 걸 볼 수 있습니다.(배열에서의 시작은 0부터 시작합니다.)]

배열의 생성은 먼저 new 연산자를 통해 메모리에 공간을 할당해 줍니다.

그런 다음 자료형[index(메모리 크기)]를 지정해 주면 메모리 안에 index 크기만큼 메모리를 할당받습니다.

new 연산자란 히프(heap) 영역에 저장할 공간을 할당해서 참조 값을 객체에 반환해 주는 역할을 합니다. 즉 공간을 만들어 주는 역할을 한다고 생각하면 됩니다.

배열 초기화

arr[0] =;
arr[1] =;
arr[2] =;
arr[3] =;
arr[4] =;

배열을 선언과 생성을 했으면 배열의 공간만큼 값을 넣어 주면 됩니다.

하지만 위에 예시처럼 값을 넣게 되면 매우 번거롭기 때문에 만약 초기화할 값을 알면 다음과 같이 선언해 줄 수 있습니다.

int[] arr = {,,,,}; //배열 크기와 값을 한번에 초기화해 줄수 있습니다.

//tip! arr에 값을 넣어 준 후 값을 아래와 같이 초기화 해주면 오류가 발생합니다.
arr = {,,,,}; 

오류 예시

tip!

int[] arr = new int[5];
arr = new int[5];
  1. 두 개의 가리키는 주소 값은 다릅니다.

  2. 위에 예시와 같이 선언하게 되면 처음 가리키는 메모리 주소를 삭제하고 두 번째 가리키는 메모리 주소를 가리킵니다.

배열 출력

System.out.println(arr); //1번
System.out.println(arr[index]); //2번

1번처럼 arr를 출력하게 되면 어떻게 될까? arr를 출력하게 되면 arr에 메모리 주소 값을 출력하게 됩니다. 왜냐하면 배열은 하나에 메모리 구조입니다. 메모리는 주소로 이루어져 있고 메모리 주소 안에 들어가 있는 게 우리가 원하는 값이 들어 있습니다.

2번처럼 arr[index]를 출력하게 되면 우리가 원하는 위치에 값을 출력할 수 있습니다.

//예시
int[] arr = { 1, 2, 3, 4, 5 }; // 배열 초기화

		System.out.println("arr : " + arr);
		System.out.println("arr[3] : " + arr[3]);

출력 결과

<예시> 배열과 random 함수를 이용해서 배열 안에 최소값을 찾는 문제

import java.util.Arrays;

public class ArrayTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int[] arrMin = new int[10]; // Min 배열 초기화
		int min = 51; // min에 random함수 보다 큰 값을 초기화 합니다. 그이유는 min이 random 함수 보다 큰값으로 시작해서 가장 
                        //작은 값으로 값이 바뀌여야 되기 때문입니다.
					
		for (int i = 0; i < arrMin.length; i++) { // arrMin.length는 배열의 길이를 알고자 할 때 사용합니다.
													// 배열.length는 0부터 시작이 아닌 1부터 시작이기 때문에 만약
                                                    // new int[10]으로 배열을 생성 했으면 length에 값은 10이 됩니다.
													//즉 우리는 i를 0으로 초기화 했기 때문에 i < arrMin.length로
													// 10 이기 전에 반복문을 빠져 나가야 합니다.

			arrMin[i] = (int) (Math.random() * 50) + 1; // 1 ~ 50까지 무작위 수를 arrMin에 대입;

			if (arrMin[i] < min) { // 만약 arrMin[i]이 min보다 작을 경우 min에 arrMin[i]값으로 바꿉니다.(min이 최소값을 찾을 때 까지 반복)
				min = min = arrMin[i];
			}

		}
		System.out.println("arrMin : " + Arrays.toString(arrMin)); // java.util 패키지에 Arrays.toString()을 사용하면
																	// 반복문 없이 배열을 문자열로 출력 할 수 있습니다.

		System.out.println("최소값 : " + min); // arrMin배열 안에 찾은 최소값 출력

	}

}

결과 값

profile
더 좋은 개발자가 되기위한 과정

0개의 댓글