국비 코딩 부트캠프 21일차 후기: Java 기초부터 객체지향까지! 배열과 String 마스터하기

국비 코딩 부트캠프 21일차 후기: Java 기초부터 객체지향까지! 배열과 String 마스터하기

자, 드디어 국비 코딩 부트캠프 21일차 후기를 작성하는 순간이 왔네요! 지난 21일 동안 정말 많은 것을 배우고 경험했는데요, 특히 자바(Java)의 기초부터 객체지향 프로그래밍 개념, 그리고 필수적인 배열과 String 다루는 방법까지 폭넓게 공부했어요. 오늘은 그 경험을 여러분과 공유하고자 합니다!

21일차 주요 학습 내용: Garbage Collection, this 키워드, 그리고 배열과 String의 마법!

21일차 수업은 주로 자바의 메모리 관리, 객체 참조, 그리고 데이터 관리에 필수적인 배열과 String 클래스에 집중했어요. 처음에는 어렵게 느껴졌지만, 숙련된 강사님의 친절한 설명과 다양한 예제 덕분에 이해하는데 큰 어려움은 없었답니다.

Garbage Collection과 finalize() 메서드: 메모리 관리의 중요성

자바는 자동으로 메모리를 관리하는 Garbage Collection(가비지 콜렉션)을 제공하죠. 개발자 입장에선 메모리 누수 걱정 없이 코드에 집중할 수 있다는 큰 장점이 있지만, finalize() 메서드 같은 Garbage Collection 과정에 대한 이해는 매우 중요해요. finalize() 메서드는 객체가 Garbage Collection 되기 직전에 호출되는데, 객체가 가지고 있는 리소스를 해제하는 용도로 사용될 수 있답니다. 하지만, finalize() 의존적인 프로그래밍은 성능 저하를 야기할 수 있으므로 신중하게 사용해야 해요.

this 키워드의 역할: 객체 자신을 가리키는 중요한 참조 변수

‘this’ 키워드는 현재 실행 중인 객체(인스턴스) 자신을 가리키는 참조 변수예요. 클래스의 모든 메서드는 암묵적으로 this를 참조 변수로 가지고 있고, 자바스크립트에서도 자체적으로 생성된 인자값에 this가 포함되는 경우가 많아요. 예를 들어, 생성자에서 인스턴스 변수와 매개변수의 이름이 같을 때, this 키워드를 사용하여 인스턴스 변수를 명확하게 지정해야 혼란을 피할 수 있답니다. 특히, 인스턴스 변수와 지역 변수의 이름이 충돌하는 경우, this 키워드를 사용하여 명확하게 구분하는 것이 매우 중요해요. 이 부분은 실제로 코드를 작성하면서 익히는 것이 가장 효과적이었어요.

배열(Array): 데이터의 효율적인 관리

자바에서 배열은 같은 자료형의 데이터를 연속적으로 저장하는 데이터 구조예요. 단순한 1차원 배열부터 다차원 배열까지 다양하게 활용할 수 있는데, 특히 데이터의 정렬과 검색 알고리즘에서 중요한 역할을 한답니다. Bubble Sort, Selection Sort, Insertion Sort 같은 기본적인 정렬 알고리즘뿐만 아니라, Quick Sort 같은 효율적인 알고리즘도 배우면서 실제 코드로 구현해보니, 알고리즘의 효율성을 직접적으로 느낄 수 있었어요. 특히 이진 검색 알고리즘을 배울 때 정렬과의 상관관계를 알게 되면서, 개발에서의 깊이있는 이해를 필요로 한다는 것을 알게되었답니다. 2차원 배열을 활용하여 행과 열을 갖는 성적표를 만드는 연습도 했는데, 이를 통해 배열을 실제로 응용하는 방법을 익힐 수 있었어요.

String 클래스: 문자열 다루기의 기본

자바에서 문자열을 다루기 위한 String 클래스는 매우 중요해요. 자바는 문자열을 객체로 취급하며, 동일한 인스턴스를 중복 생성하지 않기 때문에 메모리 효율성이 좋다는 장점이 있지요. concat(), substring(), indexOf(), toLowerCase() 등 다양한 메서드들이 제공되어 문자열 조작을 편리하게 해주죠. 하지만 String 객체는 불변성(immutable)을 가지고 있기 때문에, 문자열을 변경하는 연산은 새로운 String 객체를 생성하게 되므로 이 부분을 주의해야 해요. StringBuffer나 StringBuilder 클래스를 사용하면 문자열을 수정하는 연산에서 성능을 향상시킬 수 있답니다.

핵심 정리: 표로 알아보세요!

개념 설명 예시 주의사항
Garbage Collection 자동 메모리 관리 시스템 System.gc() (권장하지 않음) finalize() 메서드에 의존적인 설계는 피해야 함
this 키워드 현재 객체 자신을 참조 this.memberVariable = value; 인스턴스 변수와 지역 변수의 이름이 같을 때 명확한 구분을 위해 사용해야 함
배열 같은 자료형의 데이터를 연속적으로 저장하는 데이터 구조 int[] numbers = new int[10]; 배열 크기는 생성 시에 결정되며, 변경 불가능(확장 불가)
String 클래스 문자열을 다루는 객체. 불변성(immutable)을 가짐. String str = "Hello"; str.toUpperCase(); (새로운 String 객체 생성) String 객체의 변경 연산은 새로운 객체 생성으로 이어지므로 성능에 주의, StringBuffer, StringBuilder 사용 고려

Java 기초부터 객체지향, 배열과 String까지! 21일간의 국비 부트캠프 여정을 자세히 들여다보세요. 과연 무엇을 배우고 어떤 성과를 얻었을까요?

추가 학습 포인트

  • 다양한 정렬 알고리즘의 시간 복잡도 비교 분석
  • String 클래스의 다양한 메서드 활용 및 실습
  • 불변성(Immutability)에 대한 깊이 있는 이해
  • 메모리 관리 최적화 기법 학습
  • 2차원 이상의 다차원 배열 활용 및 응용

결론: 국비 코딩의 여정, 계속해서 나아갑니다!

21일차 수업을 통해 자바의 기초적인 개념부터 객체 지향 프로그래밍의 핵심, 그리고 실제 개발에서 자주 사용하는 배열과 String 클래스까지 폭넓게 학습할 수 있었어요. 특히 Garbage Collection과 this 키워드에 대한 이해도가 높아졌고, 배열과 String을 다루는 능숙도가 향상되었다는 데 큰 만족감을 느낍니다. 앞으로도 꾸준히 학습하고 실력을 향상시켜 훌륭한 개발자가 되도록 노력하겠습니다! 여러분도 꾸준한 학습과 노력으로 꿈을 이루시길 바랍니다! 화이팅!

자주 묻는 질문 Q&A

Q1: 이 글에서 가장 중요하게 다룬 자바 개념 3가지는 무엇인가요?

A1: 가비지 콜렉션(Garbage Collection), this 키워드, 그리고 배열과 String 클래스입니다.

Q2: String 클래스의 불변성(Immutability)이란 무엇이며, 어떤 점에 유의해야 할까요?

A2: String 객체는 불변하여 변경 연산 시 새로운 String 객체가 생성됩니다. 따라서 문자열을 반복적으로 수정하는 경우 StringBuffer나 StringBuilder를 사용하여 성능 저하를 방지해야 합니다.

Q3: 이 글에서 설명된 배열과 관련된 내용은 무엇인가요?

A3: 1차원 및 다차원 배열의 활용, Bubble Sort, Selection Sort, Insertion Sort 등의 정렬 알고리즘, 그리고 이진 검색 알고리즘과 정렬의 상관관계에 대한 내용입니다.

댓글 남기기

댓글 남기기