본문 바로가기

기타/자바-스프링

자바 배열 (java array)

728x90

https://www.geeksforgeeks.org/arrays-in-java/?ref=lbp 

 

Arrays in Java - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

자바의 배열은  C, C++와 다르게 동작한다.

JAVA에서 모든 배열은 동적으로 할당된다.(힙에 저장된다.)

배열은 객체이기 때문에 length를 사용하여 배열의 길이를 찾을 수 있다.

sizeof를 사용해 길이를 찾는 c/c++와는 다르다.(자바의 경우 객체 지향이기 때문에 배열 객체 안에 size 변수가 있어 size를 직접 계산하지 않고도 바로 알 수 있는 반면 c에서는 모두 다시 직접 계산해줘야 한다.)

배열 유형의 수퍼 클래스는 object이다.

모든 배열 유형은 cloneable, java.io.serializable 인터페이스를 구현한다.

 

배열 선언 시 필요한 인자는 name과 type이다.

name은 배열의 이름이고 type은 배열 내의 데이터의 type이다.

// both are valid declarations
int intArray[]; 
or int[] intArray; 

이런 식으로 배열을 선언한다고 메모리에 바로 할당되는 것이 아니다. 이때는 reference만 만들어진다.

var-name = new type [size];

실제 메모리에 할당하기 위해서는 new함수를 써줘야 한다. 

배열이 생성되면 각 type 별 디폴트 값으로 초기화된다. 즉 배열은 생성되면 비어있는 부분이 없다.

 

배열 리터럴

자바에서는 배열의 크기와 변수를 이미 알고 있는 상황에서 배열 리터럴을 사용할 수 있다. 

 

객체 배열

배열에 저장하는 데이터의 타입이 객체일 경우 배열은 객체의 주소를 저장할 수 있는 메로리 공간을 포함한다. 

 

다차원 배열의 모습

https://www.geeksforgeeks.org/arrays-in-java/?ref=lbp

 

메서드에서 배열 반환부터

+a

자바에서 모든 객체는 힙에 동적으로 할당된다.

c++의 경우 new를 사용하여 객체를 할당할 때 객체는 힙에 할당되고 그렇지 않으면 전역 또는 정적이 아닌 경우 스택에 할당된다.

자바에서 클래스 유형의 변수만 선언하면 참조만 생성된다. 객체에 메모리가 할당되지 않습니다.

객체에 메모리를 할당하기 위해서는 new를 사용해야 한다. 때문에 자바에서 객체는 항상 힙 메모리에 할당되는 것입니다.

클래스, 객체, 인스턴스

클래스 : 설계도

객체 : 구현할 대상(선언)

인스턴스 : 구현된 구체적인 실체(new)

728x90

'기타 > 자바-스프링' 카테고리의 다른 글

jvm 자바 가상 머신  (0) 2022.05.23
maven 다루는 법  (0) 2022.05.19
스프링으로 rest 서비스 구축하기  (1) 2022.05.19
자바 객체 지향 프로그래밍(OOP)  (0) 2022.05.17
자바 기본 개념  (0) 2022.05.16