포스트

13. 자바 기초(6)

자바의 기초 언어를 공부하자.

13. 자바 기초(6)

배열

  • 같은 type의 변수를 여러 개 만드는 문법
1
2
3
4
5
int[] arr = new int[5]
//arr = 배열 메모리의 주소를 저장하는 변수 = 레퍼런스, C에서는 포인터(pointer)이라고 한다.

int[] arr; //(Java에서 주로 사용)
int arr[]; //(C에서 주로 사용)

배열 용어

  • 레퍼런스 : 배열 인스턴스의 주소를 담는 변수
  • 인스턴스(instance) : 실체적인 예 (= 객체)
    • [ 0 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ]
1
2
3
int[] arr = new int[5];
//arr : new int[5]라는 배열의 인스턴스를 담은 변수 = 배열 레퍼런스.
//new int[5]; : 5개의 물건을 담은 곳
  • 인덱스(index) : 배열에 붙는 순서
    • 배열의 시작이 0부터인 이유?
    • int[5]가 담긴 변수 주소를 200으로 가정 했을 때 200 + 0 = 200 200 + 1 = 204 (int는 4byte) 주소가 변경되기 때문에 시작 메모리의 번호는 0부터 시작함
    • 만약 인덱스를 넘어서서 값을 넣으려고 한다면… : index out of bounds exception 오류가 뜨게됨
    • new int[갯수] ←Integer.Max_Value의-2개 만큼 배열의 개수를 지정 할 수 있다.

배열 레퍼런스와 가비지

가비지(garbage) : 주소를 잃어버려 사용 할 수 없는 인스턴스

1
2
3
int[] arr = new int[5]; // arr의 주소가 200이라 가정.
arr = new int[3];       // 새로운 arr 인스턴스 지정되며 주소가 변경됨. 400으로 가정
												// 이때 사라진 주소의 인스턴스를 가비지(garbage)라고 함. 쓰레기 값.  

garbage가 계속 생성되면 memory leak 오류 발생 됨 → JVM를 강제 종료 됨
그래서 JVM은 메모리가 부족하면 Garbage를 찾아 제거하는데…
이때 Garbage Collector가 이걸 수행 함

Garbage Collector와 reference count

   [reference count table]
int[ ] arr1 = new int[3];주소 ← 200 200 : arr1
int[ ] arr2 = new int[4];주소 ← 300 300 : arr2
int[ ] arr3 = arr1;주소 ← 200 200 : arr1, arr3
arr1 = new int[2];주소 ← 400 400 : arr1 / 200 : arr3
arr3 = arr2;주소 ← 300 300 : arr2, arr3 / 200 : -

초기 값

변수 초기 값

1
2
int a;                 // 초기값을 따로 설정하지 않음.
System.out.println(a); // 값을 넣은 적이 없는 변수를 사용하면 컴파일 오류가 남.
  • 변수는 초기 값을 따로 할당해주지 않고 사용 할 때 컴파일 오류가 난다.
  • 그래서 반드시 변수 사용 전 값을 넣어야한다.

배열 초기 값

  • 배열은 생성되는 즉시 자동으로 초기화됨 (값들은 기본 2진수로 저장됨)
1
2
3
4
5
int[] arr1 = new int[3];        // 0
float[] arr2 = new float[2];   // 0.0
char[] arr3 = new char[4];     // \u0000
boolean[] arr4 = new boolean;  // false
String[] arr5 = new String[3]; // null(레퍼런스는 주소값임. 초기화하지않았다면 null값을 가짐)

배열 초기화

1
2
3
4
5
6
int[] arr1 = new int[]{ - };
int[] arr1 = { - }            // new int[] 삭제 가능

int[] arr3;
arr3 = new int[]{ - };
//arr3 = { - }               //선언 후 초기화 시에는 new int[] 제거 불가

printf( - )

포맷을 활용해 + 를 사용하지 않고 print를 하는 메서드.

1
2
3
String name = "HMJ";
int age = 26;
System.out.printf("Name : %s, Age : %d \n", name, age);

%s : 문자열, %d : 정수, %f : 부동소수점(%.2f → 소수점 2자리까지만 출력), %t : 시간
예제 : eomcs-java/java-lang > lang ex. 99 > 110, 120, 130 번

짤지식 nextLine > 문자열 값을 불러올 뿐만이 아닌 받아온 입력을 버리는 데에도 사용된다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.