JAVA

[ java ] 배열 (복사, 비교) , 2차원배열 개념

Adose 2024. 12. 4. 16:32

📌 배열 , 2차원 배열


  • 배열(array)은 인덱스(index)와 인덱스에 상응하는 데이터들로 이루어진 연속적인 자료구조
  • 배열은 기본형 배열참조형 배열로 나뉜다.
  • 데이터형[] 배열이름 = new 데이터형[ ]
  • 데이터형 배열이름 [] = new 데이터형 [ ]
  • int [] aa = new int[4]

 

[ 기본형 배열 ]

  • 기본형 배열이란 primitive(int, double) 타입의 변수를 여러개 선언할 필요가 있을 때 사용한다.

 

[ 참조형 배열 ]

  • 참조형 배열이란 배열의 타입이 기본형이 아닌 경우를 말한다.
  • 배열 변수가 참조하는 배열의 공간이 값을 저장하는 것이 아니라 값을 참조한다는것을 의미

 

 

1️⃣  배열 선언 및 생성


  • 배열에 대한 레퍼런스 변수 선언(=intArray) -1 
  • 배열 생성 - 배열의 저장 공간 할당 -2 
  • 자바는 배열을 객체로 다룬다.
    • 메모리 상에서 생성된 클래스를 객체 혹은 인스턴스라고 한다.
  • 레퍼런스 변수란?
    • 레퍼런스 변수는 메모리상에 생성된 인스턴스를 가리키는데 사용되는 변수이다.
//(1) 배열에 대한 레퍼런스 변수 intArray 선언
int intArray [];
// 배열타입 int
// 배열에 대한 레퍼런스 변수 intArray
// 배열선언  []

//(2) 배열생성
intArray = new int [5];
// 배열에 대한 레퍼런스 변수 intArray
// 배열생성 new
// 타입 int
// 원소 개수 5

 

 

❗ 배열 선언 : int Array[];

  1. 선언만으로는 배열 공간이 할당되지 않으며 레퍼런스 변수 intArray만 생성된다.
  2. intArray는 배열 공간에 대한 주소 값 (레퍼런스 값)을 가지며 그 자체가 배열은 아니다.

 

배열 생성 - > intArray = new int[5];

  1. 배열 생성은 데이터를 저장할 배열 공간을 할당받는 과정이다.
  2. 반드시 new연산자 를 이용하여 배열을 생성하며 [] 안에 생성할 원소 개수를 지정한다.
  • 배열 선언과 배열 생성을 동시에
int intArray[] = new int[5];

 

 

❗ 배열 초기화

int intArray[] = {4, 3, 1, 0};
//자동으로 크기가 4가 된다. 
double doubleArray[] = {0.01, 0.02};
//자동으로 크기가 2가 된다. 

int array[]=new int[]{1,2,3,4};
// 크기가 4 초기화 가능 

int[] array3 = {1,2,3,4};
//초기화 값 지정시 new 사용 안 하고 바로 가능 

 

 

❗ 배열 치환

  1. intArray 배열이 복사되는 것이 아닌, 배열에 대한 주소만 복사된다.
  2. myArray는 intArray의 배열을 공유하게 되고, myArray는 intArray의 배열 원소를 마음대로 접근할 수 있다.
int intArray[] = new int[3];
int myArray[] = intArray;
//같은 주소값을 가리키게 된다.

intArray[1] = 2;
myArray[1] = 6

System.out.println(intArray[1]); // 결과 6 
System.out.println(myArray[1]); // 결과 6 

 

 

2️⃣ 2차원 배열 선언,생성


//2차원 배열 선언
int intarray[][];
int [][] intarray;

//2차원 배열 생성
array= new int[2][]

int array[][]=new int[][]

int array[][] = new int[3][4]
//앞이 row 뒤가 col 
  • array[n].length : n번째 행의 열의 개수
    • array[1].length : 1번째 행의 열의 개수
  • array.length : 전체 행의 개수

 

❗ 2차원 배열 생성 예시

int i[][]=new int[2][5];
int size1=i.length;         //2
int size2=i[0].length;          //5
int size3=i[1].length;          //5

 

❗ 행만 생성하고 싶다면

int array[][] = new int[3][];

 

 

❗ 배열의 초기화

  • 3행에 열의 개수가 각각 1, 2, 3인 비정형 배열이다.
int array[][] = {{1}, {1,2}, {1,2,3} } ;

 

 

 

 

📌 Arrays

❓ 배열을 다룰때 사용하는 유틸리티

 

1️⃣ 배열 복사


  • java.util.Arrays.copyof 로 사용된다.
    • java.util.Arrays.copyOf(copyFrom, 5(=복사할 배열의 길이) );
  • 복사할 배열의 크기를 지정할 수 있다.
    • Ex . 배열에서 최대 5개의 요소를 복사하여 새로운 배열을 생성
int[] copyFrom = {1, 2, 3};
int[] newArray = Arrays.copyOf(copyFrom, 5);

 

 

2️⃣ 배열 비교


  • java.util.Arrays.compare로 사용된다.
    • Arrays.compare(array1, array2);
  • 선행 파라미터(=array1) 를 기준으로 계산된다.
  • 코드 예시
    • 배열이 같다면 : 0을 반환한다.
    • array1 비교 중 array2 의 값이 더 작으면 : 1을 반환한다.
    • array1비교 중 array2 의 값이 더 크면 : -1을 반환한다.
      • array1[0] = 1
      • array2[0] = 3
      • 1-3 = -2 이기 때문에 -1을 반환한다.
int[] array1 = {1, 2, 3};
int[] array2 = {3, 2, 3};

imt compare = Arrays.compare(array1, array2);