자바를 학습하며 객체 지향 프로그래밍에 대한 이해가 조금씩 쌓이고 있으며, 더 많은 연습을 통해 익숙해지기 위해서 노력하고 있습니다. 특히, 객체 지향적인 코드 작성을 위해 절차 지향적인 습관에서 벗어나는 것이 중요하다고 생각합니다. 지금까지 절차 지향적으로 작성한 코드들을 객체 지향적으로 리팩토링하여 변화된 코드 구조와 패턴에 익숙해지려고 합니다.
개발일지를 통해 이러한 학습과 경험을 기록하는 것이, 더 좋은 개발자로 성장하기 위해 도움이 될 것이기에 앞으로도 지속적으로 개발일지를 작성하며 과정을 기록해 나가려 합니다.
이번에 정리할 내용은 자바의 배열, null, ArrayList, Map 입니다. 관련 내용들을 각 주제별로 더 자세히 블로그에 업데이트 할 예정이고, 이에 앞서 개발일지를 통해 주요 내용들을 간단하게 정리해보려 합니다.
데이터타입[] 배열변수명 = new 데이터타입[갯수];
Java배열을 선언하려면 해당 데이터 타입의 이름 뒤에 대괄호([])를 사용합니다. 배열을 생성할 때는 new 키워드를 사용하고, 배열의 크기를 지정합니다.
// 정수형 배열 선언
int[] integerArray;
// 크기가 5인 정수형 배열 생성
integerArray = new int[5];
Java선언과 동시에 배열을 생성할 수 있습니다.
// 실수형 배열 선언과 동시에 크기가 3인 배열 생성
float[] floatArray = new float[3];
Java배열은 생성 후에 각 요소에 대한 초기값을 지정할 수 있습니다.
// 정수형 배열 생성과 초기화
int[] numbers = {1, 2, 3, 4, 5};
// 문자열 배열 생성과 초기화
String[] names = {"Alice", "Bob", "Charlie"};
Java배열의 각 요소에는 인덱스(index)를 사용하여 접근합니다. 인덱스는 0부터 시작합니다.
// 배열의 요소에 접근
int firstNumber = numbers[0]; // 첫 번째 요소
String secondName = names[1]; // 두 번째 요소
Java배열의 길이는 length 속성을 사용하여 얻을 수 있습니다.
// 배열의 길이
int arrayLength = numbers.length;
Java반복문을 사용하여 배열의 모든 요소에 접근할 수 있습니다.
// for문을 사용한 배열 요소 출력
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
// 향상된 for문(enhanced for loop) 사용
for (int number : numbers) {
System.out.println(number);
}
JavaSystem.arraycopy() 메서드는 다음과 같은 형식을 갖습니다:
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
Java이 메서드는 배열 또는 배열과 비슷한 자료 구조에서 요소를 복사하는 데 사용됩니다. 각 매개변수의 역할은 다음과 같습니다:
2차원 배열은 행과 열의 두 차원을 가지며, 각 요소는 두 개의 인덱스로 참조됩니다.
// 2차원 배열 선언과 초기화
int[][] twoDArray = new int[3][4];
// 2차원 배열에 값 할당
twoDArray[0][0] = 1;
twoDArray[0][1] = 2;
// ...
// 2차원 배열 요소 접근
int value = twoDArray[1][2];
Java2차원 배열은 중괄호를 사용하여 초기화할 수 있습니다.
// 2차원 배열 초기화
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
Java자바에서 참조 타입 변수는 해당 타입의 객체를 참조하는 데 사용됩니다. 이러한 변수들은 객체의 주소를 저장하며, 그 주소를 통해 객체에 접근하고 조작할 수 있습니다. 그런데 때로는 어떠한 이유로 인해 객체를 가리키지 않아야 하는 경우가 있습니다. 이때 참조 타입 변수는 null 값을 가지게 됩니다.
자바에서 참조 타입 변수를 선언만 하면 해당 변수는 자동으로 null로 초기화됩니다. 따라서 명시적으로 초기화하지 않아도 변수는 null 값을 가지게 됩니다. 이는 참조 변수가 아무런 객체도 가리키지 않음을 나타냅니다.
ArrayList는 자바에서 제공되는 동적 배열 기반의 컬렉션 클래스 중 하나입니다. 크기가 동적으로 조절되며, 배열과 유사하지만 배열과 달리 크기를 자유롭게 조절할 수 있습니다. ArrayList는 java.util 패키지에 속해 있습니다.
ArrayList에서 Wrapper 클래스(래퍼 클래스)는 기본 데이터 타입을 객체로 감싸는 역할을 합니다. 자바에서는 기본 데이터 타입(primitive data type)과 객체를 구분하기 때문에, 기본 데이터 타입을 객체로 다루어야 하는 상황에서 Wrapper 클래스가 사용됩니다. Wrapper 클래스는 각 기본 데이터 타입에 대응되는 클래스로 구성되어 있습니다.
아래는 기본 데이터 타입과 그에 대응하는 Wrapper 클래스의 목록입니다:
import java.util.ArrayList;
// Integer 타입을 저장하는 ArrayList 선언
ArrayList<Integer> numbers = new ArrayList<>();
// 초기값을 가진 ArrayList 선언
ArrayList<String> names = new ArrayList<>(Arrays.asList("Alice", "Bob", "Charlie"));
JavaArrayList 클래스는 다양한 메서드를 제공하여 리스트에 데이터를 추가, 삭제, 조회하는 등의 작업을 수행할 수 있습니다.
Map(맵)은 키-값 쌍으로 이루어진 데이터를 저장하는 자료구조입니다. Java에서는 java.util 패키지에서 Map 인터페이스를 제공하며, 이를 구현한 다양한 클래스들이 있습니다. 이들 클래스는 각각의 특징과 용도에 따라 선택하여 사용할 수 있습니다.
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
// HashMap 생성
Map<String, Integer> scores = new HashMap<>();
// 값 추가
scores.put("Alice", 90);
scores.put("Bob", 85);
scores.put("Charlie", 95);
// 값 조회
int aliceScore = scores.get("Alice");
System.out.println("Alice's score: " + aliceScore);
// 값 수정
scores.put("Bob", 88);
// 값 제거
scores.remove("Charlie");
// 전체 맵 순회
for (Map.Entry<String, Integer> entry : scores.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
Java이 예제에서는 HashMap을 사용하여 학생들의 이름과 점수를 저장하고, 값을 조회하고 수정하며 제거하는 등의 작업을 수행합니다.
이번 학습을 통해 자바의 배열, null, ArrayList, Map에 대한 기초를 다졌습니다. 객체 지향 프로그래밍에 대한 이해를 높이고, 코드를 리팩토링하며 더 나은 습관을 기르고 있습니다. 이제까지 학습한 내용을 블로그에 더 자세히 업데이트할 예정이며, 지속적으로 개발일지를 작성하여 성장과 경험을 기록할 계획입니다.
Queue란 무엇인가? Java에서 Queue는 데이터 구조의 일종으로, 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 처리합니다. 이 글에서는 Queue의…
Stack이란 무엇인가? Java에서 Stack은 자료구조의 한 종류로, 데이터를 순서대로 쌓아 올리는 형태로 운영됩니다. 컴퓨터 과학에서…
소개 자바에서 Map 인터페이스는 키(Key)와 값(Value)의 쌍을 저장하는 자료구조입니다. 이는 연관 배열이라고도 불리며, 각 키는…
소개 자바에서 Set은 중복을 허용하지 않는 데이터 집합을 의미합니다. List와 달리 동일한 요소를 여러 번…
해시(Hash)란 무엇인가? 해시(Hash)는 자바 프로그래밍에서 빠르고 효율적인 데이터 저장 및 검색을 위한 핵심적인 개념입니다. 이…