//배열: 여러 개의 변수를 하나의 변수 이름으로 묶어서 사용하는 것
- 배열은 같은 타입만 가능하다.
- 자바에서의 배열 선언 방법 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 |