Java - Array

iseon_u·2022년 4월 12일
0

Java

목록 보기
8/77
post-thumbnail

Java - Array

Array 배열


특징

  • 연관된 데이터를 저장
  • 동일한 데이터 타입의 여러 변수를 하나로 연속되게 그룹화
  • 배열의 길이는 고정 (⚠️  실행 후에는 변경 불가)
  • 배열은 참조 타입

선언

int [] arr;

type [ ] variable ;

  • 배열에 대한 참조 변수의 선언

생성

int [] arr = new int [5];

type [ ] variable = new type [ length ] ;

  • 배열 길이만 저장
  • 요소 값은 기본 값으로 자동 초기화

초기화

int [] arr = new int [] {1, 2, 3};
int [] arr = {1, 2, 3}; // new int [] 생략
// 99% 두번째 생략 방식을 사용
// array = {1, 2, 3}; // 단독으로 사용시 에러 (생략 불가) 

type [ ] variable = { value, value, value } ;

  • 배열의 각 요소에 처음으로 값을 저장하는 것
  • 배열 길이와 배열의 요소 값 저장
  • 실제 저장 공간을 생성

요소 값 변경

arr[0] = 10;
  • 대입 연산자 사용

💡 배열의 길이 : arr .length ; (int 형 상수) (⚠️ read only)

출력

for(int i = 0; i < arr.length; i++){
		System.out.println(arr[i]);
}

System.out.println(Arrays.toString(arr));
  1. 반복문을 이용한 배열 요소 값 출력

  2. Arrays 클래스에 있는 toString() 메서드를 이용해서 한번에 출력

    Console → [1, 2, 3]

System.arraycopy 메서드

  • 배열에서 배열로 데이터 복사
System.arraycopy(num, 0, newNum, 0, num.length);
System.arraycopy(src, srcPos, dest, destPos, length);

num[0] 에서 newNum[0] 으로 num.length 개의 데이터 복사

매개함수

  1. Object src : 원본 소스
  2. int srcPos : 원본 시작 인덱스
  3. Object dest : 복사 대상
  4. int destPos : 복사 시작 인덱스
  5. int length : 원본에서 복사본으로 읽을 데이터 길이

TMI 💩

1. 배열의 길이를 바꾸지 못하는 이유

int [] arr = new int [5];

위에 배열의 데이터 크기는 int (4 byte) * 5개로 총 20 byte 다.

실행하면 메모리에 비어있는 20 byte 공간을 찾아 할당한다. 📝

그 이후에 배열을 늘린다고 한다면 앞뒤로 연속적인 공간이 필요한데

비어있을거란 보장이 없기 때문에 못늘리도록 규정 💥

길이가 부족할 때 해결 방법은 더 큰 배열을 생성 후 기존 배열을 복사하는 것

2. 배열 변수 그대로 출력 했을 때 나오는 문자열 의미

int [] arr = {1, 2, 3};
System.out.println(arr);

Console → [ I @143118bb

  • 첫번째 [ 의 의미는 배열이라는 뜻
  • 두번째 I 의 의미는 int (정수) 라는 뜻
  • 세번째 @ 의 의미는 위치라는 뜻
  • 네번째 숫자들은 주소라고 생각하기

3. 커맨드 라인으로 입력 받기

C:\workspace\>java classname argument argument
public static void main(String[] args){}
  • 커맨드 라인으로 입력한 인자들이 main 메서드 매개변수인 args 배열로 들어간다.
  • 이클립스 기능으로도 가능
profile
🧑🏻‍💻 Hello World!

0개의 댓글