값 타입
스택에할당
-구조체
struct 이름{
맴버 선언문
}
맴버선언문에는 필드와 메소드 생성자등을 선언 할수있다..
필드는 한정자를 따로 정하지 않으면 private이다.
구조체는 변수 선언후 바로 변수를 쓸수있다(클래스는 인스턴스 생성후 사용 가능)
구조체타입 구조체 변수 = new 구조체타입();
new는 생성자를 쓰기위함다.(인스턴스는 만들어지지않고 힙에 할당 돼지 않는다.)
참조타입
힙에 할당
사용이 끝나면 가비지컬렉터에 의해 메모리가 관리된다.
-배열
타입[] 변수명;
배열은 참조형이므로 변수 자체가 실제 데이터를 저장하지 않는다.(변수는 null값을 가진다.)
new 연산자에 의해 힙에 데이터 저장을 위한 별도의 공간이 할당되고 배열
변수는 이 위치만을 가진다.
타입[] 변수명 = new 타입[];
int[] arr = new int[5] {1, 2, 3, 4, 5};
arr은 정수형 배열이며 5개의 공간을 할당 받으며 각각의 공간이 {}안의 값들로 초기화 된다.
초기값이 있을시에 []안의 배열의 길이를 표기할 필요가 없다.
컴파일러가 요소의 수를 세어 메모리 크기를 할당하기 때문에 초기값이 있을시엔
배열의 크기를 표기 않는것이 좋다.
int[] arr = {1, 2, 3, 4, 5};
new int[] 마저 생략되었는데 이유는
초기값이 있으므로 메모리를 할당할것으로 인식하는 똑똑한 컴파일러를 가지고 있기 때문
배열의 초기값은 메모리를 할당받은후에는 할수 없다.
즉 다음은 컴파일 되지 않는다.
int[] arr = new int[5]; //초기화 하지 않으면 길이를지정 해야하는듯..(확인않함)
arr = {1, 2, 3, 4, 5};
댓글 없음 :
댓글 쓰기