Java

Java) Array(배열) 정리

pogun 2024. 12. 27. 00:53

Array(배열)

: 같은 자료형(변수들)의 묶음

: 접근의 요소로 index(번호)로 접근한다

: 변수가 많을 시 하나씩 다 입력하는 것은 비효율적

 

형식 : 자료형 변수명[ ] = new 자료형[배열의 총수];

new : 동적 할당이라고 보면 된다

staic heap static system

: 동적변수와 정적변수 모두 staic에 저장된다

: 근데 변수의 value(값)은 다르게 저장된다

: 동적변수의 value는 동일하게 staic에 저장(자동 삭제도 됨)

: 정적변수의 value는 heap에 저장(Grabage Collector(가비지콜렉터)가 자동 삭제해줌)


int array[] = new int[3];

array[0] = 11;          // 0, 1, 2 -> index number
array[1] = 12;
array[2] = 13;

System.out.println(array[0]); // 첫번째 데이터 확인
System.out.println(array); // heap이랑 연결된 주소
System.out.println(array.length); // 배열 전체 길이
System.out.println(Arrays.toString(array)); // 배열에 삽입된 데이터 전체 확인

: new int[3] : {0 ,0 ,0} 생성

배열의 초기화

int nArray[] = {10, 20, 30, 40, 50};
System.out.println(Arrays.toString(nArray));
System.out.println(nArray[2]);
System.out.println(nArray.length);

{ } : 초기화

배열에 몇개의 변수를 사용할지 모를 때

int numArray[] = null; // 초기화(null로 채우기)
int length = 5; // 배열 크기 지정

numArray = new int[length]; // 대입
// (null, null, null, null, null)에서 (0, 0, 0, 0, 0)으로 바뀜

numArray[0] = 5;
numArray[2] = 6;
System.out.println(Arrays.toString(numArray));
// 결과 5, 0, 6, 0, 0

배열의 Alias(별명)

int arrayBase[] = {1, 2, 3};
int arrayAlias[] = arrayBase;

arrayAlias[2] = 33;

System.out.println(Arrays.toString(arrayAlias));
// 결과 : 1, 2, 33

System.out.println(Arrays.toString(arrayBase));
// 결과 : 1, 2, 33

: 결과를 보듯 Alias 변수명으로 데이터 값을 변경하여도 원본 변수의 데이터도 변경된다

int myChracterPostionX[] = {1, 2, 3};
int myChPosX[] = myChracterPostionX;

myChPosX[0] = 33;

System.out.println(Arrays.toString(myChracterPostionX));
// 결과 33, 2, 3

: 변수명이 너무 길다! 이럴 때 쓰는거다!

배열 교환

int arrayOne[] = {1, 2, 3};
int arrayTwo[] = {11, 22,33};
int temp[];

temp = arrayOne;
arrayOne = arrayTwo;
arrayTwo = temp;

System.out.println( Arrays.toString(arrayOne));
System.out.println( Arrays.toString(arrayTwo));

: 변수가 3개라서 간단하게 보이지만 실제로(현업에선) 많을 시 복잡하다고 한다

: 저런식으로 사용된다는 흐름 정도 알기