자바를 공부할수록 스스로 어떤 사람인지 하나둘 새롭게 알아간다. 오늘 배열을 처음 접하면서 확실히 알았다.
'총점수 구하기 귀찮으니까 printf()에 %d'
'System.out.println(); 쓰기 귀찮아서 %n'
'배열 크기 계산하기 귀찮으므로 .length'
나란 사람은 참 많은 데서 귀찮음을 느꼈다.
[습관 관련]
기대에는 미치지 못하지만, 수요일까지 그저 잠으로 흘려보낸 사흘보다는 확실히 주어진 시간을 알차게 썼다. 무엇보다 이번 주에 왜 이렇게 졸음에 이리 치이고 저리 치였는지 원인을 찾아냈다. 사전캠프 기간 내내 열심히 발걸음을 떼서 그런지 스스로 인지하지 못했을 뿐 몸 상태가 100%가 아니었다. 전날 자기 전에 약을 먹고 오늘 퇴실 시간이 다가올 무렵 약효가 뚝 떨어졌을 때 추측이 확신으로 굳었다. 이럴 때일수록 자책하지 말아야 한다.
생각해 보면 IT 분야 도서 목록만 늘려갔는데, 내일배움캠프가 끝나기 전에 정말 답을 찾아야 하는 문제가 있다. 무려 두 가지나.
'스트레스가 턱 끝까지 쌓이기 전에 알아차리는 법'
‘몸이 경고신호를 보내기 전에 스트레스를 푸는 법’
'스트레스를 많이 받았구나.'라고 느낄 땐 몸이 이미 아팠다. 물론 병원 가서 진료받고 처방받은 약을 잘 챙겨 먹으면 낫긴 했으나 이 또한 한두 번이지, 지금도 스트레스를 어떻게 해소하는지 누가 물어보면 제대로 대답을 못 하겠다. 입이 그저 옴짝달싹한다. 취미는 있으나, 스트레스를 많이 받으면 책도 손에 안 잡히고 아무것도 못 한다.
오, 어쩌면 자바보다 더 어려운 과제가 주어졌다.
[인용 및 참고 출처]
1. 강의: 클래스101 온라인클래스, "[100제 풀이] 예제로 마스터하는 Java(자바) 종합 클래스", 강의 소개, (2024.10.31)
2. 구글 검색: 티스토리, "배열 자료형 값 자바", 자바에서 배열(Array), (2024.10.31)
3. 구글 검색: velog, "배열 자바 자동 초기화", 자바의 배열, (2024.10.31)
4. 구글 검색: Java Programming MOOC, "What is the index of an array in Java?", Arrays, (2024.10.31)
5. 구글 검색: 티스토리, "자바 인덱스 배열", [Java] Array (배열), (2024.10.31)
6. 구글 검색, 티스토리, "자바 배열 요소 공간", 배열(array), (2024.11.01)
[학습 관련]
1. 배열 학습 전 복습하기
(1) 자료형: 일명 데이터 타입(Data Type). 기본형과 참조형으로 나뉜다.
(2) 배열 변수는 참조형에 해당하는데, 참조형은 가방에 넣지 못할 만큼 거대한 보물 상자의 위치를 저장한다.
(3) 대괄호 []는 '배열'을 의미한다. ▶ 참고: public static void main(Strings[] args)
(4) 컴퓨터는 0부터 센다. 즉, [0]은 첫 번째, [99]는 100번째가 된다.
(5) 복습 링크
ⓐ Spring 사전캠프 Day 004 - [왕초보] 웹개발 2주차 완강
ⓑ Spring 사전캠프 Day 015 - 자바(Java) 공부: 변수 (2/6)
ⓒ Spring 사전캠프 Day 016 - 자바(Java) 공부: 변수 (3/6)
ⓓ Spring 사전캠프 Day 024 - 자바(Java) 공부: 조건문 (3/3), 반복문
2. 배열이란?
ⓐ 자료형이 동일한 값 여러 개를 하나의 배열명으로 저장할 수 있는 자료 구조
ⓑ 변수는 한 공간에 값을 한 개만 담는 바구니라면, 배열은 한 공간에 값을 여러 개 담을 수 있다. 단, 이때 그 값들의 자료형은 동일해야 한다. ▶ 예) 정수형 값을 담는 배열에 실수형 값을 넣으면 안 된다.
ⓒ 배열을 사용하면, 변수 선언과 초기화를 일일이 하지 않고 한 번에 할 수 있다.
3. 세 가지 방법으로 배열 선언하기
public class ArrayPrac1 {
public static void main(String[] args) {
// 배열 크기를 지정하면, 배열 공간의 값은 자동으로 초기화된다.
// 예를 들어 정수형은 0으로, 실수형은 0.0으로 초기화된다.
int[] coffeeSales1 = new int[5];
// [1]
// 자료형[] 배열명 = new 자료형[배열 크기];
// 정수형 값 5개를 저장할 수 있는 배열 coffeeSales1
// 메모리에 생성된 공간 5개 모두 0으로 자동 초기화된다.
double coffeeSales2[] = new double[8];
// [2]
// 자료형 배열명[] = new 자료형[배열 크기];
// 실수형 값 8개를 저장할 수 있는 배열 coffeeSales2
// 메모리에 생성된 공간 8개 모두 0.0으로 자동 초기화된다.
int[] coffeeSales3;
coffeeSales3 = new int[100];
// [3]
// 배열 변수 선언 및 크기 지정을 각각 하는 방법
// 정수형 값 100개를 저장할 수 있는 배열 coffeeSales3
// 메모리에 생성된 공간 100개 모두 0으로 자동 초기화된다.
System.out.println(coffeeSales1[0]); // 0 출럭
System.out.println(coffeeSales2[3]); // 0.0 출력
System.out.println(coffeeSales3[99]); // 0 출력
}
}
4. 인덱스(Index)란?: 한 배열을 구성하는 요소는 인덱스로 가리키는데, 인덱스는 숫자로 '0부터 배열 크기-1'까지이다. 예를 들어 배열을 구성하는 요소가 다섯 개라면, 인덱스 0, 1, 2, 3, 4로 그 요소들을 가리킨다. 이때 맨 처음에 나오는 요소의 위치는 인덱스 0, 맨 마지막에 나오는 요소의 위치는 인덱스 4가 된다.
▶ An element of an Array is referred to by its index.
▶ The index is an integer, and its value is between [0, length of the Array - 1]. For example an Array to hold 5 elements has indices 0, 1, 2, 3, and 4.
public class ArrayPrac1 {
public static void main(String[] args) {
int[] coffeeSales1 = new int[5];
// 요소 == 생성된 배열의 각 저장 공간
// 배열의 요소는 총 5개
coffeeSales1[0] = 50; // 인덱스 0
coffeeSales1[1] = 40; // 인덱스 1
coffeeSales1[2] = 30; // 인덱스 2
coffeeSales1[3] = 20; // 인덱스 3
coffeeSales1[4] = 10; // 인덱스 4
System.out.println(coffeeSales1[0]); // 50 출력
System.out.println(coffeeSales1[4]); // 10 출력
System.out.println(coffeeSales1[coffeeSales1.length-1]);
// 배열명.length는 배열의 크기를 구하는 방법이다.
// 인덱스 4==배열의 크기-1==coffeeSales1.length-1==5-1
// coffeeSales1[4]==coffeeSales1[coffeeSales1.length-1]
// 10 출력
}
}
5. 세 가지 방법으로 배열 선언과 동시에 특정 값으로 초기화하기 (단, 반복문인 for문을 사용하여 값을 출력할 것!)
public class ArrayPrac1 {
public static void main(String[] args) {
// [복습] 배열의 크기를 구할 때는 .length
// [주의 사항 1] System.out.print(index1); 안 된다.
// [주의 사항 2] 출력할 때 꼭 배열명[for의 변수명]으로 작성하자!
// [1]
int[] coffeeSales1 = {50, 40, 30, 20, 10};
for (int index1=0 ; index1<coffeeSales1.length ; index1++) {
System.out.print(coffeeSales1[index1]+" ");
}
System.out.println();
// [2]
int[] coffeeSales2 = new int[] {100, 90, 80};
for (int index2=0 ; index2<coffeeSales2.length ; index2++) {
System.out.print(coffeeSales2[index2]+" ");
}
System.out.println();
// [3]
int[] coffeeSales3;
coffeeSales3 = new int[] {72, 314, 45, 190, 90, 512, 238, 86, 14, 42};
for (int index3=0 ; index3<coffeeSales3.length ; index3++) {
System.out.print(coffeeSales3[index3]+" ");
}
System.out.println();
}
}
5. 실습 결과
"우리는 왜 다양한 방식을 알아둬야 하는가?"
오늘 강의 속 강사님이 정말 중요한 질문을 하나 하셨다. 사실 각자 선호하는 방식이 있으니 하나만 제대로 익혀도 충분할 텐데, 이는 '팀'을 생각하지 않을 때나 통했다. 프로젝트를 진행하는 동안 분명 다른 사람이 작성한 코드를 자주 읽어야 할 테고, 그때 헤매지 않으려면 여러 방식을 알아둬야 했다. 강사님의 설명을 들은 뒤에는 오늘 배운 방식을 골고루 사용했다. 개인이 아닌 팀원으로서.
[기타 사항]
회고 시간이 가까워졌을 무렵 몸 상태가 안 좋아져서 6시에 퇴실 후 TIL을 제쳐두고 10분 운동 일정을 먼저 챙겼다. 그 후에는 동네 약국을 헤맨 끝에 약을 사 왔고, 시계 한 번 쓱 확인한 다음 마음을 깔끔하게 비웠다. 어차피 늦었는데 서두를 필요 있나. 달걀말이가 주인공인 저녁밥에다가 조연으로 식탁에 올라온 호박고구마 반 개까지 야무지게 먹었다. 나중에 데일리 루틴(Daily Routine)에 표시된 소나기를 보고 왜 날씨가 이런가 의문이 들거든, 이 질문에 대답할 용도로 TIL 제출 시간이 늦은 이유를 적어둔다. '총 14개 강의 중 4개밖에 듣지 못했다'가 아니다. 4개나 들었다.
'끝을 보는 용기' 카테고리의 다른 글
Spring 사전캠프 Day 027 - 자바(Java) 공부: 배열 (3/4), 책 『비전공이지만 개발자로 먹고삽니다』 읽기 80% (0) | 2024.11.02 |
---|---|
Spring 사전캠프 Day 026 - 자바(Java) 공부: 배열 (2/4) (0) | 2024.11.01 |
Spring 사전캠프 Day 024 - 자바(Java) 공부: 조건문 (3/3), 반복문 (0) | 2024.10.30 |
Spring 사전캠프 Day 023 - 자바(Java) 공부: 조건문 (2/3) (0) | 2024.10.29 |
Spring 사전캠프 Day 022 - 자바(Java) 공부: 조건문 (1/3) (0) | 2024.10.28 |