Daily coding
Java Basic : day 1 - 배열 + Alias / swapping 본문
Array : 배열
= 같은 자료형의 묶음
사용목적 : 같은 목적의 다수의 변수를 관리하기 위함
자료형 배열명 [] = new 자료형[배열의 갯수];
자료형 []배열명 = new 자료형[배열의 갯수];
stack영역 heap영역
(4 byte) (실제 데이터 있음)
* 배열을 할당할 때는 동적으로 할당(갯수의 제한은 없음)
* 할당 후에는 정적으로 사용 (사이즈 변경 불가)
동적(allocation) / 정적 (static)
//선언 방법
배열명 [index number] = 값;
int[] arrNum = new int[3];
// 0 ~ (n-1)까지 인덱스 존재
arrNum[0] = 1;
arrNum[1] = 2;
arrNum[2] = 3;
System.out.println(arrNum[0]); // 1
//배열은 미리 선언하고 사용할 수 있음
//배열의 크기를 벗어나면 예외 발생 (ArrayIndexOutOfBoundExpection)
int [] arrNum1 = {11, 20, 23, 30};
System.out.println(arrNum1[2]);
System.out.println(Arrays.toString(arrNum1));
//배열의 복제
//새로운 배열 데이터타입을 선언하고 그곳에 어떠한 배열 변수를 집어넣으면
//값들이 복사되어 새로운 배열이 만들어지는 것이 아니고
//같은 주소값을 향하고 있는 2개의 배열 변수가 생성된다
//하나의 배열을 가리키고 있기 때문에 하나의 값이 변경되면 나머지 배열도 함께 변경됨
int numArr[] = { 111,222,333 } ;
int numAlias[] = numArr;
numAlias[1] = 666;
System.out.println(numArr[1]); // 666
//numAlias배열 값을 바꿨지만 numArr도 함께 바뀜
//numAlias에 numArr배열을 복사하는 것이 아니고
//같은 주소값을 가리키기 때문에 같은 배열이 됨(복제)
//swap
char aaa[] = {'a', 'b', 'c'};
char bbb[] = { 'A', 'B', 'C'};
// char temp;
// temp 변수를 만들어 데이터가 지워지지 않고 바뀔 수 있도록 한다.
// for (int i = 0; i < aaa.length; i++) {
// temp = aaa[i];
// aaa[i] = bbb[i];
// bbb[i] = temp;
// }
//위의 방법도 가능하지만 많은 양의 데이터가 있을 경우 오래걸림
//배열의 복제를 통해 빠르게 값 바꾸기
//Alias
for (int i = 0; i < aaa.length; i++)
System.out.println("aaa[" + i+ "] = " + aaa[i]);
char aaaAlias[] = aaa;
char bbbAlias[] = bbb;
char tempArr[];
tempArr = aaaAlias;
aaaAlias = bbbAlias;
bbbAlias = tempArr;
System.out.println("** Swapping aaa & bbb Array");
for (int i = 0; i < tempArr.length; i++)
System.out.println("aaa[" + i+ "] = " + aaaAlias[i]);
// 데이터를 하나하나씩 바꾸는 것이 아니고 배열을 통째로 temp[]에 넣고
// 한번에 모두 바꿔줌
// .length : 배열의 크기를 알아내는 연산자
System.out.println("aaa length is : " + aaa.length);
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 1 - Example 02 - swapping (0) | 2019.11.19 |
---|---|
Java Basic : day 1 - Example 01 (0) | 2019.11.19 |
Java Basic : day 1 - 데이터형 별 크기 / Type cast (0) | 2019.11.19 |
Java Basic : day 1 - 데이터 타입별 Scanner 사용법 (next 메소드) (0) | 2019.11.19 |
Java Basic : day 1 - Java 기초와 변수 / 상수/ 기본형 데이터타입 (0) | 2019.11.18 |