JAVA 공부 0주차 - 배열

딩딩당당·2022년 11월 11일
0

변수는 1개의 데이터만 저장할 수 있다. 때문에 여러 값을 저장하고 싶을 때는 변수도 많아지고 코드가 복잡해지는데 배열은 여러가지 값을 저장할 수 있기 때문에 자주 쓰이고 또 그만큼 중요하다.

1. 배열선언

1-1. 배열 선언

  • 배열을 선언하는 방법 첫번째
타입[] 변수;
  • 배열을 선언하는 방법 두번째
타입 변수[];

1-2. 배열 생성

배열 객체를 생성하는 방법에는 값 목록을 이용하거나 new 연산자를 이용하는 방법이 있다.

  • 값 목록으로 배열 생성
타입[] 변수 = {값0, 값1, 값2, 값3, ...}

중괄호 안에 값을 작성하면 그 값을 가지고 있는 배열 객체를 힙에 생성하고 배열 객체의 번지를 리턴한다. 배열 변수는 리턴된 변수를 저장하고 참조가 이루어진다.

*주의점
배열 객체를 생성할 때 배열 변수를 이미 선언한 후에는 다른 실행문에서 중괄호를 사용한 배열 생성이 허용되지 않는다.

String[] str;
str = {}; 
// 에러

때문에 변수를 미리 선언한 후 값을 입력하고 싶을 때는 new 연산자를 이용해야한다.
*예시

String[] str = null;
str = new String[] {};

위 예시처럼 new 연산자를 이용하면 선언 이후에 값을 넣어도 에러가 발생하지 않는다.


  • new 연산자로 배열 생성
    값을 가지고 있지 않지만 미리 만들어둔 뒤 나중에 값을 입력하고 싶을 때는 new 연산자를 이용해 미리 만들어둘 수 있다.
타입[] 변수 = new 타입[길이];

new 연산자를 이용해 배열을 만들어 두었을 때 int형이라면 초기값이 0이고 String 배열일 경우는 초기값이 null이다 프로젝트를 진행하면서 배열을 출력했을 때 0이나 null이 나온다면 값을 넣는 과정에서 잘못된 거라 판단하고 코드를 수정하면 될 것 같다.


  • 배열의 길이
    배열의 길이는 변수를 저장할 수 있는 갯수나 배열을 list 형식으로 변환해 사용할 경우 배열이 가지고 있는 값의 갯수라고도 할 수 있다. 이 배열의 길이를 구하는 방법은 단순하다
String[] str;
str = {"자바", "파이썬"}
int num = str.length;
System.out.print(num)
// 출력 결과
2

배열을 list 형식으로 변환해 사용하면 가입한 회원이 몇명인지, 학생 수가 몇명인지 등을 구할 때 사용하면 용이하다.


1-3. 다차원 배열

다차원 배열은 값이 한줄이 아닌 여러줄로 나열되어 입력된다고 생각하면 편할 것 같다. 글로 적기는 어려워서 직접 코드를 작성해 이해했다.
기본적으로 선언 방식은 아래와 같다.

타입[][] 변수 = new 변수[행][열];

불러오는 방법 또한 변수[행][열]로 불러올 수 있다. 아래는 값의 해당 위치를 그대로 표시하는 코드를 작성했다.

public class array {
    public static void main(String[] args) {
        int n = 3; 							//배열의 크기를 정할 변수
        String [][] str = new String[n][n]; //배열 선언

        for (int i = 0; i < n; i++ // 행의 크기 증가
            for(int j = 0; j < n; j++){ // 열의 크기 증가
                str[i][j] = "["+i+"]["+j+"] "; 
            }
        }
        for (int i = 0; i < n; i++){ 
            for(int j = 0; j < n; j++){
                System.out.print(str[i][j]);
            }
            System.out.println();
        }
    }
}
  • 실행 결과

이렇게 눈으로 보니 좀 알기 편했던 것 같다.

1-4. 배열 복사

배열 복사란 말 그대로 배열을 복사하는 것이다. 배열 특성상 크기를 늘릴 수가 없는데 이와 같은 경우 크가 큰 배열을 새로 만들어둔 뒤 새로 만든 배열에 이전 배열을 복사해서 넣는 것이다
배열을 복사하는 방법은 크게 두 가지 방법이 있는데 첫 번째로는 단순히 for문으로 인덱스 하나하나 조회해서 집어넣는 방법과 System.arraycopy()를 이용해 복사하는 방법이 있다.

  • for문을 이용한 방법
		System.out.println("첫번째 배열");
        
        String[] str2 = {"java", "String", "array"}; // 값을 가진 채로 배열 선언
        
        for (int i = 0; i<str2.length; i++){
            System.out.print(str2[i]+", "); // 배열 출력
        }
        
        System.out.println();
        
        System.out.println("두번재 배열");
        
        String[] newStr2 = new String[5]; // 5개의 값을 넣을 수 있는 배열 선언
        
        for (int i = 0; i<str2.length; i++){
            newStr2[i] = str2[i]; // 배열 복사
        }
        
        for (int i = 0; i<newStr2.length; i++){
            System.out.print(newStr2[i]+", "); // 배열 출력
        }
  • 실행 결과

위 처럼 크기가 큰 배열에 복사해서 출력해보니 복사가 잘 되었고 위에서 설명했듯이 값이 들어가있지 않은 자리엔 초기값으로 null이 들어가있는 것도 확인이 되었다.


  • System.arraycopy()를 이용한 방법
System.arraycopy( 복사할배열, 0, 복사값을넣을배열, 0, 복사할배열.length );

이 방법도 동일하게 값이 들어가있지 않은 자리엔 null값이 들어간다.

profile
자바공부해요흑흑

0개의 댓글