[자바 무료 강의] 상자들에게 순서를 매기면 배열이다 - 코드라떼
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의상자들에게 순서를 매기면 배열이다최종수정일 2021-11-21
아이콘약 2분

자바의 배열에 대해 배우는 시간입니다. 배열은 순서가 있는 상자들의 모음과 유사한데요 이러한 배열을 이용하여 순서대로 더 많은 데이터를 저장할 수 있습니다.

추가 노트

목차


  1. 배열

  2. [실습해보기] 배열을 만들어보자

1. 배열


1-1. 인덱스란?

배열을 상자들의 모음이라고 생각했을 때, 특정 상자에 접근하기 위한 번호입니다.


1-2. 1차원 배열

int[] intArray = {1, 2, 3, 4};

1, 2, 3, 4 라는 정수형 값이 저장되어 있는 1차원 배열입니다. 1차원 배열의 값을 읽기 위해서는 대괄호 연산자인 인덱스 연산자 [ ] 를 이용하여 배열의 저장된 값에 접근할 수 있으며, 배열의 인덱스는 0번부터 시작한다고 했었습니다.


배열의 접근

System.out.println(intArray[0]); // 1
System.out.println(intArray[1]); // 2
System.out.println(intArray[2]); // 3
System.out.println(intArray[3]); // 4

1-3. 배열을 만드는 세 가지 방법

1. 공간과 값을 할당하는 방법

int[] intArray = {1, 2, 3, 4};

2. 공간과 값을 할당하는 방법(다른 표기법)

int[] intArray = new int[] {1, 2, 3, 4};

3. 공간만 할당 후 이후에 값을 넣는 방법

int[] intArray = new int[4];

// 공간만 할당 후 이후에 값을 저장
intArray[0] = 1;
intArray[1] = 2;
intArray[2] = 3;
intArray[3] = 4;

2. [실습해보기] 배열을 만들어보자


실습도구에 해당 코드를 작성해 봅시다


2-1. 배열 만들기

2-1-1. 공간과 값을 할당하는 방법

코드 작성

int[] intArray = {10, 20, 30, 40};

System.out.println(intArray[0]);
System.out.println(intArray[1]);
System.out.println(intArray[2]);
System.out.println(intArray[3]);

출력

10
20
30
40

2-1-2. 공간과 값을 할당하는 방법(다른 표기법)

코드 작성

int[] intArray = new int[] {10, 20, 30, 40};

System.out.println(intArray[0]);
System.out.println(intArray[1]);
System.out.println(intArray[2]);
System.out.println(intArray[3]);

출력

10
20
30
40

2-1-3. 공간만 할당 후 이후에 값을 넣는 방법

코드 작성

String[] textArray = new String[4];

// 공간만 할당 후 이후에 값을 저장
textArray[0] = "안녕1";
textArray[1] = "안녕2";
textArray[2] = "안녕3";
textArray[3] = "안녕4";

System.out.println(textArray[0]);
System.out.println(textArray[1]);
System.out.println(textArray[2]);
System.out.println(textArray[3]);

출력

안녕1
안녕2
안녕3
안녕4

2-2. 배열 공간의 크기 확인하기

코드 작성

int[] intArray = {10, 20, 30, 40};

System.out.println(intArray.length);

출력

4

2-3. 배열에 값이 없는 경우

2-3-1. int

코드 작성

int[] intArray = new int[4];

intArray[0] = 1;
intArray[2] = 3;
intArray[3] = 4;

System.out.println(intArray[0]);
System.out.println(intArray[1]);
System.out.println(intArray[2]);
System.out.println(intArray[3]);

출력

1
0
3
4

2-3-2. float

코드 작성

float[] floatArray = new float[4];

floatArray[0] = 1.0F;
floatArray[2] = 3.0F;
floatArray[3] = 4.0F;

System.out.println(floatArray[0]);
System.out.println(floatArray[1]);
System.out.println(floatArray[2]);
System.out.println(floatArray[3]);

출력

1.0
0.0
3.0
4.0

2-3-3. String

코드 작성

String[] textArray = new String[4];

textArray[0] = "안녕1";
textArray[2] = "안녕2";
textArray[3] = "안녕3";

System.out.println(textArray[0]);
System.out.println(textArray[1]);
System.out.println(textArray[2]);
System.out.println(textArray[3]);

출력

안녕1
null
안녕2
안녕3

*null 이라는 것은 이후에 설명합니다

도전자 질문
아이콘으르르릉(2022-08-01 17:00 작성됨)
배열을 만드는 방식으로 new를 사용한 것과 안 한 것에 대한 차이를 무엇인가요??? 

int[] intArray = new int[4];

int[] intArray = {1, 2, 3, 4};
아이콘코드라떼(2022-08-04 05:07 작성됨)
안녕하세요. 코드라떼입니다 :)

int[] intArray = new int[4];
int[] intArray = {1, 2, 3, 4};

위와 같이 작성한 경우는 값을 지정하지 않고 배열 공간만 할당한 것이고 아래와 같이 작성하는 경우 값을 지정한 상태로 배열 공간을 할당합니다.
또 하나의 차이는 배열 변수의 선언과 배열 공간을 할당하는 시기를 분리할 수 있느냐의 차이입니다.

int[] intArray;
intArray = new int[4];

위와 같은 코드는 문법상 가능하지만 아래와 같은 코드는 문법상 불가능합니다.

int[] intArray;
intArray = {1, 2, 3, 4};

감사합니다 :)

아이콘양또띠(2021-12-12 20:44 작성됨)
3.0F랑 3.0은 다른 건데
floatbox[0]에 지정된 수가 3.0F였는데
출력은 3.0이면 값이 달라진 건가요??
아이콘코드라떼(2021-12-14 15:53 작성됨)
안녕하세요. 코드라떼입니다 :)

답변이 늦어져서 죄송합니다.

리터럴 관점에서는 3.0F나 3.0은 다릅니다.

float smallRealNumber = 32.1234F;
System.out.printf("%s\n", Long.toBinaryString(Float.floatToRawIntBits(smallRealNumber)));
System.out.println(smallRealNumber);

double bigRealNumber = 32.1234;
System.out.printf("%s\n", Long.toBinaryString(Double.doubleToRawLongBits(bigRealNumber)));
System.out.println(bigRealNumber);

double bigRealNumber2 = 32.1234F;
System.out.printf("%s\n", Long.toBinaryString(Double.doubleToRawLongBits(bigRealNumber2)));
System.out.println(bigRealNumber2);

위의 코드를 메인 메서드 내에서 작성하여 실행하면 위의 두 코드는 동일한 값으로 출력됩니다.
그러나 세 번째 코드는 다른값으로 출력됩니다.

부동 소수점을 실수로 다시 변환하는 과정에서는 오차가 발생하며 값이 딱 떨어지는 경우도 있고 떨어지지 않는 경우도 있습니다.

3.0 같은 경우는 변환 과정에서 딱 떨어지므로 3.0으로 출력됩니다.
그러나 32.1234의 경우 딱 떨어지지 않으므로 세 번째 코드에선 오차가 발생합니다.

그러므로 출력되는 값을 기준으로 값이 '달라졌다' 또는 '동일하다' 라고 판단하기가 어렵습니다.

[심화] 정수와 실수 강의의 노트 강의에서 단정도 배정도를 실제로 손으로 구해보면 해당 부분이 이해되실 것으로 보입니다.

감사합니다.
아이콘EnRmlRn(2021-12-03 18:53 작성됨)
(실수로 질문하기를 눌렀네요)
아이콘코드라떼(2022-03-19 16:19 작성됨)
아이콘빌초이(2021-07-01 09:14 작성됨)
질문 삭제는 어떻게 하나요....?
아이콘코드라떼(2021-07-01 12:09 작성됨)
현재는 질문을 삭제할 수 없습니다. 그러나 도전자분께서 원하신다면 삭제할 질문 내용을 1:1 문의로 남겨주시면 삭제해 드립니다.

감사합니다.
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io
사업자등록번호 : 824-06-01921
통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호
파일
파일파일
Root
파일

Output
root$
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의상자들에게 순서를 매기면 배열이다최종수정일 2021-11-21
아이콘약 2분

자바의 배열에 대해 배우는 시간입니다. 배열은 순서가 있는 상자들의 모음과 유사한데요 이러한 배열을 이용하여 순서대로 더 많은 데이터를 저장할 수 있습니다.

추가 노트

목차


  1. 배열

  2. [실습해보기] 배열을 만들어보자

1. 배열


1-1. 인덱스란?

배열을 상자들의 모음이라고 생각했을 때, 특정 상자에 접근하기 위한 번호입니다.


1-2. 1차원 배열

int[] intArray = {1, 2, 3, 4};

1, 2, 3, 4 라는 정수형 값이 저장되어 있는 1차원 배열입니다. 1차원 배열의 값을 읽기 위해서는 대괄호 연산자인 인덱스 연산자 [ ] 를 이용하여 배열의 저장된 값에 접근할 수 있으며, 배열의 인덱스는 0번부터 시작한다고 했었습니다.


배열의 접근

System.out.println(intArray[0]); // 1
System.out.println(intArray[1]); // 2
System.out.println(intArray[2]); // 3
System.out.println(intArray[3]); // 4

1-3. 배열을 만드는 세 가지 방법

1. 공간과 값을 할당하는 방법

int[] intArray = {1, 2, 3, 4};

2. 공간과 값을 할당하는 방법(다른 표기법)

int[] intArray = new int[] {1, 2, 3, 4};

3. 공간만 할당 후 이후에 값을 넣는 방법

int[] intArray = new int[4];

// 공간만 할당 후 이후에 값을 저장
intArray[0] = 1;
intArray[1] = 2;
intArray[2] = 3;
intArray[3] = 4;

2. [실습해보기] 배열을 만들어보자


실습도구에 해당 코드를 작성해 봅시다


2-1. 배열 만들기

2-1-1. 공간과 값을 할당하는 방법

코드 작성

int[] intArray = {10, 20, 30, 40};

System.out.println(intArray[0]);
System.out.println(intArray[1]);
System.out.println(intArray[2]);
System.out.println(intArray[3]);

출력

10
20
30
40

2-1-2. 공간과 값을 할당하는 방법(다른 표기법)

코드 작성

int[] intArray = new int[] {10, 20, 30, 40};

System.out.println(intArray[0]);
System.out.println(intArray[1]);
System.out.println(intArray[2]);
System.out.println(intArray[3]);

출력

10
20
30
40

2-1-3. 공간만 할당 후 이후에 값을 넣는 방법

코드 작성

String[] textArray = new String[4];

// 공간만 할당 후 이후에 값을 저장
textArray[0] = "안녕1";
textArray[1] = "안녕2";
textArray[2] = "안녕3";
textArray[3] = "안녕4";

System.out.println(textArray[0]);
System.out.println(textArray[1]);
System.out.println(textArray[2]);
System.out.println(textArray[3]);

출력

안녕1
안녕2
안녕3
안녕4

2-2. 배열 공간의 크기 확인하기

코드 작성

int[] intArray = {10, 20, 30, 40};

System.out.println(intArray.length);

출력

4

2-3. 배열에 값이 없는 경우

2-3-1. int

코드 작성

int[] intArray = new int[4];

intArray[0] = 1;
intArray[2] = 3;
intArray[3] = 4;

System.out.println(intArray[0]);
System.out.println(intArray[1]);
System.out.println(intArray[2]);
System.out.println(intArray[3]);

출력

1
0
3
4

2-3-2. float

코드 작성

float[] floatArray = new float[4];

floatArray[0] = 1.0F;
floatArray[2] = 3.0F;
floatArray[3] = 4.0F;

System.out.println(floatArray[0]);
System.out.println(floatArray[1]);
System.out.println(floatArray[2]);
System.out.println(floatArray[3]);

출력

1.0
0.0
3.0
4.0

2-3-3. String

코드 작성

String[] textArray = new String[4];

textArray[0] = "안녕1";
textArray[2] = "안녕2";
textArray[3] = "안녕3";

System.out.println(textArray[0]);
System.out.println(textArray[1]);
System.out.println(textArray[2]);
System.out.println(textArray[3]);

출력

안녕1
null
안녕2
안녕3

*null 이라는 것은 이후에 설명합니다

도전자 질문
아이콘으르르릉(2022-08-01 17:00 작성됨)
배열을 만드는 방식으로 new를 사용한 것과 안 한 것에 대한 차이를 무엇인가요??? 

int[] intArray = new int[4];

int[] intArray = {1, 2, 3, 4};
아이콘코드라떼(2022-08-04 05:07 작성됨)
안녕하세요. 코드라떼입니다 :)

int[] intArray = new int[4];
int[] intArray = {1, 2, 3, 4};

위와 같이 작성한 경우는 값을 지정하지 않고 배열 공간만 할당한 것이고 아래와 같이 작성하는 경우 값을 지정한 상태로 배열 공간을 할당합니다.
또 하나의 차이는 배열 변수의 선언과 배열 공간을 할당하는 시기를 분리할 수 있느냐의 차이입니다.

int[] intArray;
intArray = new int[4];

위와 같은 코드는 문법상 가능하지만 아래와 같은 코드는 문법상 불가능합니다.

int[] intArray;
intArray = {1, 2, 3, 4};

감사합니다 :)

아이콘양또띠(2021-12-12 20:44 작성됨)
3.0F랑 3.0은 다른 건데
floatbox[0]에 지정된 수가 3.0F였는데
출력은 3.0이면 값이 달라진 건가요??
아이콘코드라떼(2021-12-14 15:53 작성됨)
안녕하세요. 코드라떼입니다 :)

답변이 늦어져서 죄송합니다.

리터럴 관점에서는 3.0F나 3.0은 다릅니다.

float smallRealNumber = 32.1234F;
System.out.printf("%s\n", Long.toBinaryString(Float.floatToRawIntBits(smallRealNumber)));
System.out.println(smallRealNumber);

double bigRealNumber = 32.1234;
System.out.printf("%s\n", Long.toBinaryString(Double.doubleToRawLongBits(bigRealNumber)));
System.out.println(bigRealNumber);

double bigRealNumber2 = 32.1234F;
System.out.printf("%s\n", Long.toBinaryString(Double.doubleToRawLongBits(bigRealNumber2)));
System.out.println(bigRealNumber2);

위의 코드를 메인 메서드 내에서 작성하여 실행하면 위의 두 코드는 동일한 값으로 출력됩니다.
그러나 세 번째 코드는 다른값으로 출력됩니다.

부동 소수점을 실수로 다시 변환하는 과정에서는 오차가 발생하며 값이 딱 떨어지는 경우도 있고 떨어지지 않는 경우도 있습니다.

3.0 같은 경우는 변환 과정에서 딱 떨어지므로 3.0으로 출력됩니다.
그러나 32.1234의 경우 딱 떨어지지 않으므로 세 번째 코드에선 오차가 발생합니다.

그러므로 출력되는 값을 기준으로 값이 '달라졌다' 또는 '동일하다' 라고 판단하기가 어렵습니다.

[심화] 정수와 실수 강의의 노트 강의에서 단정도 배정도를 실제로 손으로 구해보면 해당 부분이 이해되실 것으로 보입니다.

감사합니다.
아이콘EnRmlRn(2021-12-03 18:53 작성됨)
(실수로 질문하기를 눌렀네요)
아이콘코드라떼(2022-03-19 16:19 작성됨)
아이콘빌초이(2021-07-01 09:14 작성됨)
질문 삭제는 어떻게 하나요....?
아이콘코드라떼(2021-07-01 12:09 작성됨)
현재는 질문을 삭제할 수 없습니다. 그러나 도전자분께서 원하신다면 삭제할 질문 내용을 1:1 문의로 남겨주시면 삭제해 드립니다.

감사합니다.
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io|운영시간 09:00 - 18:00(평일)
사업자등록번호 : 824-06-01921|통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호(경기창조혁신센터)
파일
파일파일
Root
파일

Output
root$