일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 상속
- 제어문
- SWiFT
- jQuery
- 차이점
- 함수
- EC2
- Gradle
- CodeIgniter
- 자료불러오기
- amazon
- 2차원 객체배열
- PHP
- class
- 클래스
- CKEditor4
- 옵셔널
- 전의 의존성
- AWS
- 사용법
- 객체
- programmers
- switch-case
- bootstrap
- DatePicker
- Java
- pagination
- guard
- Xcode
- Spring
Archives
- Today
- Total
not bad 한 개발
Java - 객체배열 본문
(이 글의 내용은 YouTube의 남궁성의 정석코딩 채널의 강의를 듣고 배운 내용을 포스트 하겠습니다.)
https://youtube.com/playlist?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp
객체배열
- 객체배열은 말 그대로 객체를 배열처럼 사용한다는 의미입니다.
- 객체배열을 사용하는데 반드시 인스턴스 주소를 객체배열에 저장해줘야 합니다.
- 배열과 마찬가지로 객체배열도 2차원 배열을 만들 수 있습니다.
(1차원 객체배열 예시 1)
class Array { // 클래스 Array 선언
int num1;
}
public class test {
public static void main(String[] args) {
Array array1 = new Array();
// array1이름의 참조변수 선언과 동시에 Array인스턴스의 주소를 array1에 저장
Array array2 = new Array();
Array array3 = new Array();
array1.num1 = 10;
// array1의 멤버변수 num1에 10을 저장
array2.num1 = 20;
// array2의 멤버변수 num1에 20을 저장
array3.num1 = 30;
// array3의 멤버변수 num1에 30을 저장
System.out.printf("%d ",array1.num1); // 10
System.out.printf("%d ",array2.num1); // 20
System.out.printf("%d%n",array3.num1); // 30
Array[] arraytest = new Array[3];
// 길이가 3인 arraytest객체배열 선언
arraytest[0] = new Array();
// arraytest[0]에 Array 인스턴스 주소 저장
arraytest[1] = new Array();
arraytest[2] = new Array();
arraytest[0].num1 = 10;
arraytest[1].num1 = 20;
arraytest[2].num1 = 30;
System.out.printf("%d ",arraytest[0].num1); // 10
System.out.printf("%d ",arraytest[1].num1); // 20
System.out.printf("%d%n",arraytest[2].num1); // 30
Array[] arraysecond = { new Array(), new Array(), new Array()};
// 객체배열을 생성하는 두 번째 방법
arraysecond[0] = new Array();
arraysecond[1] = new Array();
arraysecond[2] = new Array();
arraysecond[0].num1 = 10;
arraysecond[1].num1 = 20;
arraysecond[2].num1 = 30;
System.out.printf("%d ",arraysecond[0].num1); // 10
System.out.printf("%d ",arraysecond[1].num1); // 20
System.out.printf("%d%n",arraysecond[2].num1); // 30
}
}
(1차원 객체배열 예시 2)
import java.util.Scanner;
class Array { // 클래스 Array 선언
int num1; // 멤버변수 num1
int num2; // 멤버변수 num2
public void getter(int num1, int num2){
this.num1 = num1; // 랜덤 값 num1를 멤버변수 num1에 저장
this.num2 = num2; // 랜덤 값 num2를 멤버변수 num2에 저장
}
public int setter(){
int num = 0; // num 선언
num = this.num1 + this.num2;
// num에 num1, num2를 더한 값을 저장
return num;
// num을 리턴
}
public void view(int cnt){
System.out.printf("==================%n");
System.out.printf("array[%d]%n",cnt); // 배열의 현재 번호 출력
System.out.printf("num1 : %d%n",this.num1);
System.out.printf("num2 : %d%n",this.num2);
System.out.printf("num1 + num2 = %d%n",setter());
// setter함수로 num1, num2를 더해준다.
}
}
public class test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.printf("만들 배열의 수를 정수로 입력하십시오 : ");
int count = scan.nextInt(); // 정수형으로 임의의 수를 입력받아 count에 저장
Array[] array = new Array[count]; // count만큼 객체배열 생성
for(int i = 0; i < count; i++){ // count에서 1뺀 만큼 반복
array[i] = new Array();
// 인스턴스의 주소를 array[i]에 저장
array[i].getter((int)(Math.random() * 10),(int)(Math.random() * 10));
// array의 getter함수를 통해 첫 번째, 두 번째 매개변수에 1 ~ 10 랜덤 값을 넣어준다.
}
for(int j = 0; j < count; j++){ // count에서 1뺀 만큼 반복
array[j].view(j);
// array의 view함수를 통해 객체배열의 내용을 출력
}
}
}
위의 예제는 입력받으면 입력받은 수만큼 객체배열을 만들고 for문을 통해 인스턴스 주소를 저장하고 객체배열에 랜덤 값을 넣은 후 다음 for문에서 객체배열의 전체 내용을 출력하는 코드입니다.
(2차원 객체배열 예시 1)
class DoubleArray{ // DoubleArray 클래스선언
int num1; // 멤버변수 num1
int num2; // 멤버변수 num2
public DoubleArray(int num1, int num2){
// 생성자를 선언하여 배열에 값을 저장
this.num1 = num1; // 매개변수 num1을 멤버변수 num1에 저장
this.num2 = num2; // 매개변수 num2을 멤버변수 num2에 저장
}
public int getDoubleArray_one(){
// 멤버변수 num1을 리턴하는 멤버 메소드
return this.num1; // 멤버변수 num1을 리턴
}
public int getDoubleArray_two(){
// 멤버변수 num2을 리턴하는 멤버 메소드
return this.num2; // 멤버변수 num2를 리턴
}
public void showcases(int cnt1, int cnt2){
// 배열의 내용을 출력하는 멤버 메소드
System.out.printf("=====[%d][%d]=====%n",cnt1,cnt2);
System.out.printf("num1 = %d%n",getDoubleArray_one()); // num1의 내용을 출력
System.out.printf("num2 = %d%n",getDoubleArray_two()); // num2의 내용을 출력
System.out.printf("================%n");
}
}
public class test {
public static void main(String[] args) {
DoubleArray[][] doubleArray = new DoubleArray[3][];
// 2차원 객체배열을 3만큼 생성
for(int i = 0; i < doubleArray.length; i++){ // 1차원 배열의 길이만큼 반복
doubleArray[i] = new DoubleArray[(int)(Math.random() * 5) + 1];
// 2차원 배열을 초기화하는데 난수로 2차 배열 공간을 정해준다.
}
for(int i = 0; i < doubleArray.length; i++){ // 1차원 배열의 길이만큼 반복
for(int j = 0; j <doubleArray[i].length; j++){ // 2차원 배열의 길이만큼 반복
doubleArray[i][j] = new DoubleArray((int)(Math.random() * 5) + 1,(int)(Math.random() * 5) + 1);
// 생성자를 통해 난수로 배열에 내용을 넣어준다.
}
}
for(int i = 0; i < doubleArray.length; i++){ // 1차원 배열의 길이만큼 반복
for(int j = 0; j <doubleArray[i].length; j++){ // 2차원 배열의 길이만큼 반복
doubleArray[i][j].showcases(i,j);
// 배열에 저장되어있는 내용을 출력
System.out.println(); // 다음줄 이동
}
}
}
}
2차원 객체배열을 3만큼 생성하고 2차원 배열의 크기를 선언한 후, 객체배열의 내용을 난수로 채운 후 출력하는 예제입니다.
'Java > Java class' 카테고리의 다른 글
Java - 객체 생성과 사용 (0) | 2022.03.29 |
---|---|
Java - 한 파일에 여러 클래스 작성 (0) | 2022.03.29 |
Java - 클래스와 객체 (0) | 2022.03.29 |
Java - 객체지향 프로그래밍 (0) | 2022.03.20 |
Java - JDK 설치 및 Java파일 실행 (0) | 2022.03.10 |
Comments