배열(Array)

강9·2023년 11월 15일
0

Java

목록 보기
24/71
post-thumbnail

🔖 배열(Array)


자료형 변수;자료형[] 변수;
int a; -> 정수 1개int[] a; -> 정수 여러개
Book b; -> 책 1권Book[] b; -> 책 여러권
String s; -> 문자열 1개String[] s; -> 문자열 여러개

배열(Array) : 동일한 데이터를 여러개 저장할 수 있는 구조(객체)

  • 동일한 연속적인 구조
  • 동일한 변수들의 집합
  • 배열은 객체로 취급한다.
  • 데이터를 담아서 이동하기 편리하다.

1차원 배열 = []
2차원 배열 = [][] // [행][열]


📌 1차원 배열의 생성

int[] a = new int[];
1. 변수선언2. 객체 생성3.객체 연결(저장)
int[] a;new int[5];a = new int[열];

표 예제)

📌 int[] arr = new int[5];

arrarr[0]arr[1]arr[2]arr[3]arr[4]
address-->10
int
20
int
30
int
40
int
50
int

📌 배열의 길이를 구하는 속성

length

예제)

// Q. 정수 5개를 저장할 배열을 생성하고 모든 원소에 10을 저장하시오.

int[] a = new int[5];
a[0] = 10;
a[1] = 10;
a[2] = 10;
a[3] = 10;
a[4] = 10;

for (int i = 0; i < a.length; i++) {        // 반복문 활용
a[i] = 10;
}

📌 배열 초기화

// Q. 정수 5개를 배열에 초기화
int[] a = {1,2,3,4,5};

🔖 기본배열과 객체배열

  • 기본배열 : 정수, 실수, 문자 등의 기본자료형을 다룰 때 사용
  • 객체배열 : Book, Member, Movie 등의 객체자료를 다룰 때 사용

예제)

// Q. 영화 3편을 저장할 배열을 생성하고, 영화 3편의 데이터를 저장하고 출력하시오.

public class Movie {           // Movie 클래스 생성
    public String title;
    public String day;
    public String hero;
    public String genre;
    public int time;
    public int age;
    
Movie[] m = new Movie[3];
m[0] = new Movie();
        m[0].title = "아바타";
        m[0].day = "2022.12.14";
        m[0].hero = "제이크 설리";
        m[0].genre = "액션";
        m[0].age = 12;

        m[1] = new Movie();
        m[1].title = "아이언맨";
        m[1].day = "2008.04.30";
        m[1].hero = "로버트 다우니 주니어";
        m[1].genre = "SF/액션";
        m[1].age = 12;

        m[2] = new Movie();
        m[2].title = "스파이더맨";
        m[2].day = "2021.12.15";
        m[2].hero = "톰 홀랜드";
        m[2].genre = "SF/액션";
        m[2].age = 12;

for (int i = 0; i < m.length; i++){
System.out.println(m[i].title+"\t"+m[i].day+"\t"+m[i].hero+"\t"+m[i].genre+"\t"+m[i].age);
}

-> 출력값
아바타	2022.12.14	제이크 설리	액션	12
아이언맨	2008.04.30	로버트 다우니 주니어	SF/액션	12
스파이더맨	2021.12.15	톰 홀랜드	SF/액션	12

📌 2차원 배열의 생성

int[][] a = new int[][];

예제)

// Q. 3명의 학생의 3개 과목(국어,영어,수학)의 성적을 처리해야 하는경우

📌 1차원 배열 예제

int[] kor = new int[3];
int[] eng = new int[3];
int[] mat = new int[3];
국어영어수학
80점(학생1)85점(학생1)90점(학생1)

국어영어수학
90점(학생2)80점(학생2)85점(학생2)

국어영어수학
85점(학생3)90점(학생3)80점(학생3)

-> 배열이 서로 인접되어 있지 않기 때문에 반복문 사용할 수 없음

📌 2차원 배열 예제

int[] score = new int[3][3];
국어영어수학
80점(학생1)85점(학생1)90점(학생1)
90점(학생2)80점(학생2)85점(학생2)
85점(학생3)90점(학생3)80점(학생3)

-> 배열이 인접되어 있기 때문에 반복문 사용 가능


int[][] a = new int[2][4];
a.length1234
a-->a[0]-->a[0][0] = 1a[0][1] = 2a[0][2] = 3a[0][3] = 4
a[1]-->a[1][0] = 5a[1][1] = 6a[1][2] = 7a[1][3] = 8

row-major(행 우선)

중요속성

a.length = 2
a[0].length = 4
a[1].length = 4

접근방법

a[0][0] = 10;     a[1][0] = 10;
a[0][1] = 10;     a[1][1] = 10;
a[0][2] = 10;     a[1][2] = 10;
a[0][3] = 10;     a[1][3] = 10;

📌 2차원 배열 초기화

int[][] a = {
{1,2,3,4},
{5,6,7,8}
}


// 반복문 활용
for (int i=0; i<a.length; i++) {
for(int j=0; j<a[i].length; j++) {
System.out.print(a[i][j]);
}
Sysyem.out.println(); // 줄바꿈
}

-> a.length = [] // 2
-> a[i].length = [] // 4

📌 가변길이 배열

int[][] a = new int[5][]; // 가변 배열은 첫자리만 입력하고 나머지 자리 수는 입력하지 않아도 된다.

a[0] = new int[1];
a[1] = new int[2];
a[2] = new int[3];
a[3] = new int[4];
a[4] = new int[5];
01234
a0-->
1-->
2-->
3-->
4-->

📌 별모양으로 가변길이 배열 찍어보기 예제

int[][] a = new int[5][];

a[0] = new int[1];
a[1] = new int[2];
a[2] = new int[3];
a[3] = new int[4];
a[4] = new int[5];

for(int i=0; i<a.length; i++){
   for(int j=0; j<a[i].length; j++){
     a[i][j] = '★';
     System.out.print((char)a[i][j]+"\t");
  }
     System.out.println();           // 줄바꿈
}

-> 출력값
★
★ ★
★ ★ ★
★ ★ ★ ★
★ ★ ★ ★ ★
profile
코린이 일기

0개의 댓글