본문 바로가기

자바(JAVA)
[자바(Java)] 배열(Arrays)

 //배열: 여러 개의 변수를 하나의 변수 이름으로 묶어서 사용하는 것


- 배열은 같은 타입만 가능하다.

- 자바에서의 배열 선언 방법 3가지
    1. 데이터 타입[] 배열 이름 = new 데이터 타입[개수];    //가장 많이 사용
        ~ int[] arr = new int[5];

    2. 데이터 타입 배열 이름[] = new 데이터 타입[개수];
        ~ int arr[] = new int[5];

    3. 데이터 타입[] 배열 이름;
        배열의 이름 = new 데이터 타입[개수];
        ~ int[] arr;
           arr = new int[5];

- 자료형 중 하나 > 데이터 저장 구조 + 규칙

- 참조형

- 집합 > 집합 자료형 > 데이터를 여러 개 저장할 수 있는 자료형

- 같은 자료형을 저장하는 집합 > ★같은 자료형 변수들의 집합

- ★★★요소(element)들은 연속적으로 저장된다.

- 동일한 성격 + 동일한 자료형 + 데이터가 여러 개 > 배열 사용!

- 첨자(index)를 붙여서 식별하는 표기법 : 인덱서(Indexer)

- 배열은 생성 직후에 개발자가 아무 것도 안 해도 자동으로 값이 초기화 됨.

- 생성자를 통해서 자동 초기화
    ~ 초기화 규칙★★★
        1. 정수 배열 > 0
        2. 실수 배열 > 0.0
        3. 문자 배열 > \0
        4. 논리 배열 > false
        5. 참조형 배열 > null

- ★★메모리의 공간은 한 번 할당되면 절대로 늘리거나 줄일 수 없다.★
    > 배열의 길이를 추가로 늘릴 수 없음
    > ★★★★사용할 배열의 길이가 충분한지 미리 예측해야 함.


//배열 복사★★★★★★★★
- 변수의 경우 원본을 수정해도 복사본에는 영향을 주지 않는다.
> Side Effect가 없다. > stack에 만들어짐. 

- 배열(참조형)은 원본을 수정하면 복사본도 수정이 된다. 복사본을 수정해도 원본도 같이 바뀜.
> Side Effect가 있다.

1. 얕은 복사, Shallow Copy
    - 주소값 복사
    - Side Effect 발생(원본 <-> 수정본)
    - 기본 동작(일반적 복사)

2. 깊은 복사, Deep Copy
    - 실제 값 복사
    - Side Effect 발생x

**new: 배열을 만들어주는 연산자!    

- 배열의 선언 => 초기화
    int[] arr = new int[4]
    int arr[] = { 100,200,300,400 };
    int arr[];
    arr = new int[]{100,200,300,400}


//배열의 길이값, 배열의 전체 크기

package ex01.sample02;

import java.util.Scanner;

public class Ex02_03 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int num[] = { 10,20,30,40,50 }; // 배열 선언, 배열 초기화  
		//int = 4byte / 길이값 = 5 => 메모리에 4*5 20byte 할당
		int count, size; // 배열 길이값을 저장할 변수, 배열의 크기를 저장할 변수 선언
		
		count = num.length; // 배열의 전체 길이값 계산
		size = count * Integer.BYTES; // 배열 전체 크기 계산
		
		System.out.printf("배열 num[]의 길이값은 %d 입니다.\n", count);
		System.out.printf("배열 num[]의 전체 크기는 %d 바이트입니다.\n", size);
	
	}

}

- int a[][] : 이차원 배열
- int a[][][] : 삼차원 배열

int a [] .... [] : n차원 배열


//배열과 stack, heap

package ex01.sample01;

public class Heap_Stack {

	public static void main(String[] args) {
		/*int[] arr1;
		int[] arr2;
		int[] arr3;
		
		arr1 = new int[] {1,2,3}; //배열을 생성해서 arr1에 대입
		arr2 = new int[] {1,2,3}; //배열을 생성해서 arr2에 대입
		arr3 = arr2;
		
		System.out.println(arr1 == arr2); //false
		System.out.println(arr2 == arr3); //true*/
		
	}

}

'자바(JAVA)' 카테고리의 다른 글

[자바(Java)] 사용자 입력(Console input)  (0) 2022.09.27
[자바(Java)] String  (1) 2022.09.23
[자바(Java)] 제어문 - 반복문  (0) 2022.09.22
[자바(Java)] 제어문 - 조건문  (0) 2022.09.22
[자바(Java)] package  (0) 2022.09.22