배열 → 기억공간 여러개를 만들어서 사용
클래스 → 기억공간 여러개를 하나의 구조로 만들어서 사용 (바구니)
배열과 클래스는 모두 데이터를 담는 역할은 같지만 만들어지는 구조는 서로 다릅니다. Object(객체)로 여겨지기 때문에 기억공간 여러개가 붙어있는 상태라면 두가지를 구분하기 힘들지만, 큰 차이는 메모리 공간에 저장되는 데이터가 동일한 데이터타입이라면 배열, 이질적인 데이터타입들이 담아 구조를 직접 설계하여 내가 원하는 형태로 만들어야하는 경우 클래스로 만들게 됩니다.
💡 객체배열(Object Array)의 메모리 표현
객체 배열은 배열의 각 요소가 객체인 배열을 말합니다.
즉, 객체 배열은 동일한 클래스의 객체를 여러 개 저장하기 위해 사용됩니다.
Student[] = new Student[3];
// Student 클래스
public class Student {
private String name;
private int age;
// ↓ 위에서 만들어진 생성자 메서드 오버로딩
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// Getter와 Setter 메서드 생략
// 기타 메서드 및 속성 정의
}
// main 메서드내부에서의 객체 배열 사용 예시
public class Main {
public static void main(String[] args) {
// Student 객체 배열 생성
Student[] students = new Student[3];
// Student 객체 생성하여 배열에 저장
students[0] = new Student("피카츄", 20);
students[1] = new Student("파이리", 22);
students[2] = new Student("꼬부기", 21);
// 객체 배열 순회하며 정보 출력
for (int i = 0; i < students.length; i++) {
System.out.println("Name: " + students[i].getName());
System.out.println("Age: " + students[i].getAge());
System.out.println();
}
}
}
//출력 ->
Name: 피카츄
Age: 20
Name: 파이리
Age: 22
Name: 꼬부기
Age: 21
위의 예시에서는 "Student" 클래스의 객체 배열을 생성하고, 각 요소에 학생 객체를 생성하여 저장하였습니다.
그 후, 배열을 순회하며 각 학생의 정보를 출력하였습니다. 객체 배열은 여러 객체를 관리하고 접근하기 위한 유용한 자료구조입니다.
💡 system.arraycopy - 배열의 요소를 다른 배열로 복사하는 메서드
** System.arraycopy는 Java에서 배열의 요소를 다른 배열로 복사하는 메서드입니다. 이 메서드를 사용하여 배열 요소의 복사, 이동, 잘라내기 등 다양한 작업을 수행할 수 있습니다.
문법 : System.arraycopy(srcArray, srcPos, destArray, destPos, length);
- srcArray: 복사할 원본 배열입니다.
- srcPos: 원본 배열에서 복사를 시작할 인덱스(숫자를 입력)입니다.
- destArray: 복사한 요소를 저장할 대상 배열입니다.
- destPos: 대상 배열에서 복사한 요소를 저장할 시작 인덱스(숫자를 입력)입니다.
- length: 복사할 요소의 개수(길이)입니다.
**srcArray의 srcPos 인덱스부터 시작하여 length 개수만큼의 요소를 **destArray**의 destPos 인덱스부터 시작하는 위치에 복사합니다.
예시 코드
int[] startArray = {1, 2, 3, 4, 5};
int[] copyArray = new int[3];
System.arraycopy(startArray, 1, copyArray, 0, 3);
// 복사된 요소 출력
for (int i = 0; i < copyArray.length; i++) {
System.out.println(copyArray[i]);
}
// 출력 : 2,3,4
위의 예시에서는 startArray의 인덱스 1부터 시작하여 3개의 요소를 copyArray의 인덱스 0부터 시작하는 위치로 복사하였습니다. 결과적으로 copyArray에는 {2, 3, 4}가 저장되어 출력됩니다.
'[ BACKEND] > JAVA_Basic' 카테고리의 다른 글
[JAVA] For-loop 반복문 (0) | 2023.06.08 |
---|---|
[JAVA] Java의 조건문 (If / else / else if) (0) | 2023.06.08 |
[JAVA] JAVA에서 쓰이는 연산자 (0) | 2023.06.07 |
[JAVA] 데이터를 이동해보자 ( 배열 : Array) (0) | 2023.06.05 |
[JAVA] 기본자료형(PDT) ? (0) | 2023.06.02 |