자바의 배열에 대해 배우는 시간입니다. 배열은 순서가 있는 상자들의 모음과 유사한데요 이러한 배열을 이용하여 순서대로 더 많은 데이터를 저장할 수 있습니다.
ㅤ
ㅤ
배열을 상자들의 모음이라고 생각했을 때, 특정 상자에 접근하기 위한 번호입니다.
ㅤ
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. 공간과 값을 할당하는 방법
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;
ㅤ
실습도구에 해당 코드를 작성해 봅시다
ㅤ
ㅤ
코드 작성
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
ㅤ
코드 작성
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
ㅤ
코드 작성
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
ㅤ
코드 작성
int[] intArray = {10, 20, 30, 40};
System.out.println(intArray.length);
출력
4
ㅤ
ㅤ
코드 작성
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
ㅤ
코드 작성
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
ㅤ
코드 작성
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 이라는 것은 이후에 설명합니다
배열을 만드는 방식으로 new를 사용한 것과 안 한 것에 대한 차이를 무엇인가요??? int[] intArray = new int[4]; int[] intArray = {1, 2, 3, 4};
안녕하세요. 코드라떼입니다 :) int[] intArray = new int[4]; int[] intArray = {1, 2, 3, 4}; 위와 같이 작성한 경우는 값을 지정하지 않고 배열 공간만 할당한 것이고 아래와 같이 작성하는 경우 값을 지정한 상태로 배열 공간을 할당합니다. 또 하나의 차이는 배열 변수의 선언과 배열 공간을 할당하는 시기를 분리할 수 있느냐의 차이입니다. int[] intArray; intArray = new int[4]; 위와 같은 코드는 문법상 가능하지만 아래와 같은 코드는 문법상 불가능합니다. int[] intArray; intArray = {1, 2, 3, 4}; 감사합니다 :)
3.0F랑 3.0은 다른 건데 floatbox[0]에 지정된 수가 3.0F였는데 출력은 3.0이면 값이 달라진 건가요??
안녕하세요. 코드라떼입니다 :) 답변이 늦어져서 죄송합니다. 리터럴 관점에서는 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의 경우 딱 떨어지지 않으므로 세 번째 코드에선 오차가 발생합니다. 그러므로 출력되는 값을 기준으로 값이 '달라졌다' 또는 '동일하다' 라고 판단하기가 어렵습니다. [심화] 정수와 실수 강의의 노트 강의에서 단정도 배정도를 실제로 손으로 구해보면 해당 부분이 이해되실 것으로 보입니다. 감사합니다.
(실수로 질문하기를 눌렀네요)
질문 삭제는 어떻게 하나요....?
현재는 질문을 삭제할 수 없습니다. 그러나 도전자분께서 원하신다면 삭제할 질문 내용을 1: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. 공간과 값을 할당하는 방법
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;
ㅤ
실습도구에 해당 코드를 작성해 봅시다
ㅤ
ㅤ
코드 작성
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
ㅤ
코드 작성
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
ㅤ
코드 작성
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
ㅤ
코드 작성
int[] intArray = {10, 20, 30, 40};
System.out.println(intArray.length);
출력
4
ㅤ
ㅤ
코드 작성
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
ㅤ
코드 작성
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
ㅤ
코드 작성
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 이라는 것은 이후에 설명합니다
배열을 만드는 방식으로 new를 사용한 것과 안 한 것에 대한 차이를 무엇인가요??? int[] intArray = new int[4]; int[] intArray = {1, 2, 3, 4};
안녕하세요. 코드라떼입니다 :) int[] intArray = new int[4]; int[] intArray = {1, 2, 3, 4}; 위와 같이 작성한 경우는 값을 지정하지 않고 배열 공간만 할당한 것이고 아래와 같이 작성하는 경우 값을 지정한 상태로 배열 공간을 할당합니다. 또 하나의 차이는 배열 변수의 선언과 배열 공간을 할당하는 시기를 분리할 수 있느냐의 차이입니다. int[] intArray; intArray = new int[4]; 위와 같은 코드는 문법상 가능하지만 아래와 같은 코드는 문법상 불가능합니다. int[] intArray; intArray = {1, 2, 3, 4}; 감사합니다 :)
3.0F랑 3.0은 다른 건데 floatbox[0]에 지정된 수가 3.0F였는데 출력은 3.0이면 값이 달라진 건가요??
안녕하세요. 코드라떼입니다 :) 답변이 늦어져서 죄송합니다. 리터럴 관점에서는 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의 경우 딱 떨어지지 않으므로 세 번째 코드에선 오차가 발생합니다. 그러므로 출력되는 값을 기준으로 값이 '달라졌다' 또는 '동일하다' 라고 판단하기가 어렵습니다. [심화] 정수와 실수 강의의 노트 강의에서 단정도 배정도를 실제로 손으로 구해보면 해당 부분이 이해되실 것으로 보입니다. 감사합니다.
(실수로 질문하기를 눌렀네요)
질문 삭제는 어떻게 하나요....?
현재는 질문을 삭제할 수 없습니다. 그러나 도전자분께서 원하신다면 삭제할 질문 내용을 1:1 문의로 남겨주시면 삭제해 드립니다. 감사합니다.