[자바] 배열
자바를 공부하면서 복습 겸 공부 한걸 기록하고 싶어서 블로그를 시작하게 되었습니다. 글 중에 틀린 부분이 있으면 피드백 주시면 감사하겠습니다!
배열:
자바(java)에서의 배열은 선형 자료구조로 동일한 데이터 타입의 메모리에 연속적으로 저장하여 하나의 변수로 관리하는 자료 구조입니다.
자바에서의 배열 선언
int[] arr; or int arr[]; // 크기 할당과 초기화 없이 참조 변수 만 선언
int[] arr = {1,2,3,4,5}; // 크기와 초기화를 한번에 선언
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]; // 선언과 생성을 한번에 할 수 있습니다.
arr = new int[5]; //초기화 없이 크기만 지정(c언어에서는 초기화를 하지 않으면 메모리 안에
//쓰레기 값이 들어가지만 자바에서는 자동으로 0으로 초기화 됩니다.
int[] arr = new int[5]; // 선언과 생성을 한번에 할 수 있습니다.
[그림을 보면 메모리에 5바이트 크기만큼 공간이 생긴 걸 볼 수 있습니다.(배열에서의 시작은 0부터 시작합니다.)]
배열의 생성은 먼저 new 연산자를 통해 메모리에 공간을 할당해 줍니다.
그런 다음 자료형[index(메모리 크기)]를 지정해 주면 메모리 안에 index 크기만큼 메모리를 할당받습니다.
new 연산자란 히프(heap) 영역에 저장할 공간을 할당해서 참조 값을 객체에 반환해 주는 역할을 합니다. 즉 공간을 만들어 주는 역할을 한다고 생각하면 됩니다.
배열 초기화
arr[0] = 값;
arr[1] = 값;
arr[2] = 값;
arr[3] = 값;
arr[4] = 값;
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];
-
두 개의 가리키는 주소 값은 다릅니다.
-
위에 예시와 같이 선언하게 되면 처음 가리키는 메모리 주소를 삭제하고 두 번째 가리키는 메모리 주소를 가리킵니다.
배열 출력
System.out.println(arr); //1번
System.out.println(arr[index]); //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배열 안에 찾은 최소값 출력
}
}
Author And Source
이 문제에 관하여([자바] 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sunnamgung8/자바-배열저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)